diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java new file mode 100644 index 0000000..73d7799 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.dto; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "AlarmUpload",description = "报警上传") +@Data +public class AlarmUpload { + + @ApiModelProperty(value = "摄像头ip") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + @ApiModelProperty(value = "安全树甲烷设备ip") + private String gasIp; + @ApiModelProperty(value = "安全树甲烷设备端口") + private String gasPort; + @ApiModelProperty(value = "报警值") + private String alarmValue; + @ApiModelProperty(value = "报警时间") + private String alarmTime; + @ApiModelProperty(value = "报警类型") + private String alarmType; + @ApiModelProperty(value = "报警图片") + private String alarmImage; + @ApiModelProperty(value = "报警内容") + private String alarmContent; + + @Override + public String toString() { + return "AlarmUpload{" + + "cameraIp='" + cameraIp + '\'' + + ", cameraPort='" + cameraPort + '\'' + + ", gasIp='" + gasIp + '\'' + + ", gasPort='" + gasPort + '\'' + + ", alarmValue='" + alarmValue + '\'' + + ", alarmTime='" + alarmTime + '\'' + + ", alarmType='" + alarmType + '\'' + + ", alarmImage='" + (StrUtil.isNotEmpty(alarmImage) ? alarmImage.substring(0,50) : "null") + '\'' + + ", alarmContent='" + alarmContent + '\'' + + '}'; + } +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java new file mode 100644 index 0000000..73d7799 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.dto; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "AlarmUpload",description = "报警上传") +@Data +public class AlarmUpload { + + @ApiModelProperty(value = "摄像头ip") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + @ApiModelProperty(value = "安全树甲烷设备ip") + private String gasIp; + @ApiModelProperty(value = "安全树甲烷设备端口") + private String gasPort; + @ApiModelProperty(value = "报警值") + private String alarmValue; + @ApiModelProperty(value = "报警时间") + private String alarmTime; + @ApiModelProperty(value = "报警类型") + private String alarmType; + @ApiModelProperty(value = "报警图片") + private String alarmImage; + @ApiModelProperty(value = "报警内容") + private String alarmContent; + + @Override + public String toString() { + return "AlarmUpload{" + + "cameraIp='" + cameraIp + '\'' + + ", cameraPort='" + cameraPort + '\'' + + ", gasIp='" + gasIp + '\'' + + ", gasPort='" + gasPort + '\'' + + ", alarmValue='" + alarmValue + '\'' + + ", alarmTime='" + alarmTime + '\'' + + ", alarmType='" + alarmType + '\'' + + ", alarmImage='" + (StrUtil.isNotEmpty(alarmImage) ? alarmImage.substring(0,50) : "null") + '\'' + + ", alarmContent='" + alarmContent + '\'' + + '}'; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java new file mode 100644 index 0000000..ea518d9 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.modular.system.entity.Device; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("DeviceDetailDTO") +@Data +public class DeviceDetailDTO extends Device { + + @ApiModelProperty(value = "摄像头编号") + private String cameraCode; + + @ApiModelProperty(value = "摄像头IP") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + + @ApiModelProperty(value = "激甲编号") + private String gasCode; + + @ApiModelProperty(value = "激甲IP") + private String gasIp; + + @ApiModelProperty(value = "激甲端口") + private String gasPort; + + @ApiModelProperty(value = "智能帽衬编号") + private String hatLiningCode; +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java new file mode 100644 index 0000000..73d7799 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.dto; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "AlarmUpload",description = "报警上传") +@Data +public class AlarmUpload { + + @ApiModelProperty(value = "摄像头ip") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + @ApiModelProperty(value = "安全树甲烷设备ip") + private String gasIp; + @ApiModelProperty(value = "安全树甲烷设备端口") + private String gasPort; + @ApiModelProperty(value = "报警值") + private String alarmValue; + @ApiModelProperty(value = "报警时间") + private String alarmTime; + @ApiModelProperty(value = "报警类型") + private String alarmType; + @ApiModelProperty(value = "报警图片") + private String alarmImage; + @ApiModelProperty(value = "报警内容") + private String alarmContent; + + @Override + public String toString() { + return "AlarmUpload{" + + "cameraIp='" + cameraIp + '\'' + + ", cameraPort='" + cameraPort + '\'' + + ", gasIp='" + gasIp + '\'' + + ", gasPort='" + gasPort + '\'' + + ", alarmValue='" + alarmValue + '\'' + + ", alarmTime='" + alarmTime + '\'' + + ", alarmType='" + alarmType + '\'' + + ", alarmImage='" + (StrUtil.isNotEmpty(alarmImage) ? alarmImage.substring(0,50) : "null") + '\'' + + ", alarmContent='" + alarmContent + '\'' + + '}'; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java new file mode 100644 index 0000000..ea518d9 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.modular.system.entity.Device; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("DeviceDetailDTO") +@Data +public class DeviceDetailDTO extends Device { + + @ApiModelProperty(value = "摄像头编号") + private String cameraCode; + + @ApiModelProperty(value = "摄像头IP") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + + @ApiModelProperty(value = "激甲编号") + private String gasCode; + + @ApiModelProperty(value = "激甲IP") + private String gasIp; + + @ApiModelProperty(value = "激甲端口") + private String gasPort; + + @ApiModelProperty(value = "智能帽衬编号") + private String hatLiningCode; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java new file mode 100644 index 0000000..29378ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("WorkSiteDetailDTO") +public class WorkSiteDetailDTO extends WorkSiteInfo { + + @ApiModelProperty(value = "安全树列表",dataType = "ProjectDevice") + private List deviceList; + + @ApiModelProperty(value = "人员列表",dataType = "ProjectWorker") + private List workerList; + + + + +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java new file mode 100644 index 0000000..73d7799 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.dto; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "AlarmUpload",description = "报警上传") +@Data +public class AlarmUpload { + + @ApiModelProperty(value = "摄像头ip") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + @ApiModelProperty(value = "安全树甲烷设备ip") + private String gasIp; + @ApiModelProperty(value = "安全树甲烷设备端口") + private String gasPort; + @ApiModelProperty(value = "报警值") + private String alarmValue; + @ApiModelProperty(value = "报警时间") + private String alarmTime; + @ApiModelProperty(value = "报警类型") + private String alarmType; + @ApiModelProperty(value = "报警图片") + private String alarmImage; + @ApiModelProperty(value = "报警内容") + private String alarmContent; + + @Override + public String toString() { + return "AlarmUpload{" + + "cameraIp='" + cameraIp + '\'' + + ", cameraPort='" + cameraPort + '\'' + + ", gasIp='" + gasIp + '\'' + + ", gasPort='" + gasPort + '\'' + + ", alarmValue='" + alarmValue + '\'' + + ", alarmTime='" + alarmTime + '\'' + + ", alarmType='" + alarmType + '\'' + + ", alarmImage='" + (StrUtil.isNotEmpty(alarmImage) ? alarmImage.substring(0,50) : "null") + '\'' + + ", alarmContent='" + alarmContent + '\'' + + '}'; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java new file mode 100644 index 0000000..ea518d9 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.modular.system.entity.Device; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("DeviceDetailDTO") +@Data +public class DeviceDetailDTO extends Device { + + @ApiModelProperty(value = "摄像头编号") + private String cameraCode; + + @ApiModelProperty(value = "摄像头IP") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + + @ApiModelProperty(value = "激甲编号") + private String gasCode; + + @ApiModelProperty(value = "激甲IP") + private String gasIp; + + @ApiModelProperty(value = "激甲端口") + private String gasPort; + + @ApiModelProperty(value = "智能帽衬编号") + private String hatLiningCode; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java new file mode 100644 index 0000000..29378ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("WorkSiteDetailDTO") +public class WorkSiteDetailDTO extends WorkSiteInfo { + + @ApiModelProperty(value = "安全树列表",dataType = "ProjectDevice") + private List deviceList; + + @ApiModelProperty(value = "人员列表",dataType = "ProjectWorker") + private List workerList; + + + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java new file mode 100644 index 0000000..6fd7b24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java @@ -0,0 +1,68 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "WorkerLocationDTO",description = "人员位置列表(首页)") +@Data +public class WorkerLocationDTO { + + @ApiModelProperty("人员ID") + private Long workerId; + + @ApiModelProperty("人员姓名") + private String workerName; + + @ApiModelProperty("安全帽编号") + private String hatCode; + + @ApiModelProperty("安全帽ID") + private Long hatId; + + @ApiModelProperty("背心编号") + private String vastCode; + + @ApiModelProperty("手环编号") + private String braceletCode; + + @ApiModelProperty("位置") + private String location; + + @ApiModelProperty("时间") + private String time; + + @ApiModelProperty("经度") + private String lng; + + @ApiModelProperty("纬度") + private String lat; + + @ApiModelProperty("心率") + private String heartRate; + + @ApiModelProperty("血氧") + private String bloodOxygen; + + @ApiModelProperty("一氧化碳") + private String co; + + @ApiModelProperty("甲烷") + private String gas; + + @ApiModelProperty("硫化氢") + private String h2s; + + @ApiModelProperty("氧气") + private String o2; + + @ApiModelProperty("信号") + private String signal; + + @ApiModelProperty("电量") + private String cell; + + @ApiModelProperty("是否报警") + private boolean alarmFlag; +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java new file mode 100644 index 0000000..73d7799 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.dto; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "AlarmUpload",description = "报警上传") +@Data +public class AlarmUpload { + + @ApiModelProperty(value = "摄像头ip") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + @ApiModelProperty(value = "安全树甲烷设备ip") + private String gasIp; + @ApiModelProperty(value = "安全树甲烷设备端口") + private String gasPort; + @ApiModelProperty(value = "报警值") + private String alarmValue; + @ApiModelProperty(value = "报警时间") + private String alarmTime; + @ApiModelProperty(value = "报警类型") + private String alarmType; + @ApiModelProperty(value = "报警图片") + private String alarmImage; + @ApiModelProperty(value = "报警内容") + private String alarmContent; + + @Override + public String toString() { + return "AlarmUpload{" + + "cameraIp='" + cameraIp + '\'' + + ", cameraPort='" + cameraPort + '\'' + + ", gasIp='" + gasIp + '\'' + + ", gasPort='" + gasPort + '\'' + + ", alarmValue='" + alarmValue + '\'' + + ", alarmTime='" + alarmTime + '\'' + + ", alarmType='" + alarmType + '\'' + + ", alarmImage='" + (StrUtil.isNotEmpty(alarmImage) ? alarmImage.substring(0,50) : "null") + '\'' + + ", alarmContent='" + alarmContent + '\'' + + '}'; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java new file mode 100644 index 0000000..ea518d9 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.modular.system.entity.Device; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("DeviceDetailDTO") +@Data +public class DeviceDetailDTO extends Device { + + @ApiModelProperty(value = "摄像头编号") + private String cameraCode; + + @ApiModelProperty(value = "摄像头IP") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + + @ApiModelProperty(value = "激甲编号") + private String gasCode; + + @ApiModelProperty(value = "激甲IP") + private String gasIp; + + @ApiModelProperty(value = "激甲端口") + private String gasPort; + + @ApiModelProperty(value = "智能帽衬编号") + private String hatLiningCode; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java new file mode 100644 index 0000000..29378ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("WorkSiteDetailDTO") +public class WorkSiteDetailDTO extends WorkSiteInfo { + + @ApiModelProperty(value = "安全树列表",dataType = "ProjectDevice") + private List deviceList; + + @ApiModelProperty(value = "人员列表",dataType = "ProjectWorker") + private List workerList; + + + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java new file mode 100644 index 0000000..6fd7b24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java @@ -0,0 +1,68 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "WorkerLocationDTO",description = "人员位置列表(首页)") +@Data +public class WorkerLocationDTO { + + @ApiModelProperty("人员ID") + private Long workerId; + + @ApiModelProperty("人员姓名") + private String workerName; + + @ApiModelProperty("安全帽编号") + private String hatCode; + + @ApiModelProperty("安全帽ID") + private Long hatId; + + @ApiModelProperty("背心编号") + private String vastCode; + + @ApiModelProperty("手环编号") + private String braceletCode; + + @ApiModelProperty("位置") + private String location; + + @ApiModelProperty("时间") + private String time; + + @ApiModelProperty("经度") + private String lng; + + @ApiModelProperty("纬度") + private String lat; + + @ApiModelProperty("心率") + private String heartRate; + + @ApiModelProperty("血氧") + private String bloodOxygen; + + @ApiModelProperty("一氧化碳") + private String co; + + @ApiModelProperty("甲烷") + private String gas; + + @ApiModelProperty("硫化氢") + private String h2s; + + @ApiModelProperty("氧气") + private String o2; + + @ApiModelProperty("信号") + private String signal; + + @ApiModelProperty("电量") + private String cell; + + @ApiModelProperty("是否报警") + private boolean alarmFlag; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java new file mode 100644 index 0000000..efb4a23 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java @@ -0,0 +1,159 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 报警记录表 + *

+ * + * @author zyj + * @since 2023-05-16 + */ +@Data +@ApiModel("Alarm") +@TableName("br_bus_alarm") +public class BusAlarm implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @ApiModelProperty(value = "设备ID") + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 报警类型 + */ + @ApiModelProperty(value = "报警类型") + @TableField("ALARM_TYPE") + private String alarmType; + + /** + * 报警状态 + */ + @ApiModelProperty(value = "报警状态") + @TableField("ALARM_STATUS") + private String alarmStatus; + + /** + * 报警值 + */ + @ApiModelProperty(value = "报警值") + @TableField("ALARM_VALUE") + private String alarmValue; + + /** + * 报警图片 + */ + @ApiModelProperty(value = "报警图片") + @TableField("ALARM_IMAGE") + private String alarmImage; + + /** + * 报警内容 + */ + @ApiModelProperty(value = "报警内容") + @TableField("ALARM_CONTENT") + private String alarmContent; + + /** + * 报警时间 + */ + @ApiModelProperty(value = "报警时间") + @TableField("ALARM_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date alarmTime; + + /** + * 消警时间 + */ + @ApiModelProperty(value = "消警时间") + @TableField("CANCEL_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + /** + * 报警位置经度 + */ + @ApiModelProperty(value = "报警位置经度") + @TableField("ALARM_LNG") + private String alarmLng; + + /** + * 报警位置纬度 + */ + @ApiModelProperty(value = "报警位置纬度") + @TableField("ALARM_LAT") + private String alarmLat; + + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmStatusName; + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmTypeName; + @ApiModelProperty("作业名称") + @TableField(exist = false) + private String workTitle; + @ApiModelProperty("所属道路") + @TableField(exist = false) + private String workRoad; + @ApiModelProperty("作业状态") + @TableField(exist = false) + private String projectState; + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + @ApiModelProperty("负责人姓名") + @TableField(exist = false) + private String workPersonName; + @ApiModelProperty("负责人联系方式") + @TableField(exist = false) + private String workPersonPhoneNumber; + + + @Override + public String toString() { + return "BusAlarm{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + ", alarmType=" + alarmType + + ", alarmValue=" + alarmValue + + ", alarmStatus=" + alarmStatus + + ", alarmImage=" + alarmImage + + ", alarmContent=" + alarmContent + + ", alarmTime=" + alarmTime + + ", cancelTime=" + cancelTime + + ", alarmLng=" + alarmLng + + ", alarmLat=" + alarmLat + + "}"; + } +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java new file mode 100644 index 0000000..73d7799 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.dto; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "AlarmUpload",description = "报警上传") +@Data +public class AlarmUpload { + + @ApiModelProperty(value = "摄像头ip") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + @ApiModelProperty(value = "安全树甲烷设备ip") + private String gasIp; + @ApiModelProperty(value = "安全树甲烷设备端口") + private String gasPort; + @ApiModelProperty(value = "报警值") + private String alarmValue; + @ApiModelProperty(value = "报警时间") + private String alarmTime; + @ApiModelProperty(value = "报警类型") + private String alarmType; + @ApiModelProperty(value = "报警图片") + private String alarmImage; + @ApiModelProperty(value = "报警内容") + private String alarmContent; + + @Override + public String toString() { + return "AlarmUpload{" + + "cameraIp='" + cameraIp + '\'' + + ", cameraPort='" + cameraPort + '\'' + + ", gasIp='" + gasIp + '\'' + + ", gasPort='" + gasPort + '\'' + + ", alarmValue='" + alarmValue + '\'' + + ", alarmTime='" + alarmTime + '\'' + + ", alarmType='" + alarmType + '\'' + + ", alarmImage='" + (StrUtil.isNotEmpty(alarmImage) ? alarmImage.substring(0,50) : "null") + '\'' + + ", alarmContent='" + alarmContent + '\'' + + '}'; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java new file mode 100644 index 0000000..ea518d9 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.modular.system.entity.Device; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("DeviceDetailDTO") +@Data +public class DeviceDetailDTO extends Device { + + @ApiModelProperty(value = "摄像头编号") + private String cameraCode; + + @ApiModelProperty(value = "摄像头IP") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + + @ApiModelProperty(value = "激甲编号") + private String gasCode; + + @ApiModelProperty(value = "激甲IP") + private String gasIp; + + @ApiModelProperty(value = "激甲端口") + private String gasPort; + + @ApiModelProperty(value = "智能帽衬编号") + private String hatLiningCode; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java new file mode 100644 index 0000000..29378ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("WorkSiteDetailDTO") +public class WorkSiteDetailDTO extends WorkSiteInfo { + + @ApiModelProperty(value = "安全树列表",dataType = "ProjectDevice") + private List deviceList; + + @ApiModelProperty(value = "人员列表",dataType = "ProjectWorker") + private List workerList; + + + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java new file mode 100644 index 0000000..6fd7b24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java @@ -0,0 +1,68 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "WorkerLocationDTO",description = "人员位置列表(首页)") +@Data +public class WorkerLocationDTO { + + @ApiModelProperty("人员ID") + private Long workerId; + + @ApiModelProperty("人员姓名") + private String workerName; + + @ApiModelProperty("安全帽编号") + private String hatCode; + + @ApiModelProperty("安全帽ID") + private Long hatId; + + @ApiModelProperty("背心编号") + private String vastCode; + + @ApiModelProperty("手环编号") + private String braceletCode; + + @ApiModelProperty("位置") + private String location; + + @ApiModelProperty("时间") + private String time; + + @ApiModelProperty("经度") + private String lng; + + @ApiModelProperty("纬度") + private String lat; + + @ApiModelProperty("心率") + private String heartRate; + + @ApiModelProperty("血氧") + private String bloodOxygen; + + @ApiModelProperty("一氧化碳") + private String co; + + @ApiModelProperty("甲烷") + private String gas; + + @ApiModelProperty("硫化氢") + private String h2s; + + @ApiModelProperty("氧气") + private String o2; + + @ApiModelProperty("信号") + private String signal; + + @ApiModelProperty("电量") + private String cell; + + @ApiModelProperty("是否报警") + private boolean alarmFlag; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java new file mode 100644 index 0000000..efb4a23 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java @@ -0,0 +1,159 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 报警记录表 + *

+ * + * @author zyj + * @since 2023-05-16 + */ +@Data +@ApiModel("Alarm") +@TableName("br_bus_alarm") +public class BusAlarm implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @ApiModelProperty(value = "设备ID") + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 报警类型 + */ + @ApiModelProperty(value = "报警类型") + @TableField("ALARM_TYPE") + private String alarmType; + + /** + * 报警状态 + */ + @ApiModelProperty(value = "报警状态") + @TableField("ALARM_STATUS") + private String alarmStatus; + + /** + * 报警值 + */ + @ApiModelProperty(value = "报警值") + @TableField("ALARM_VALUE") + private String alarmValue; + + /** + * 报警图片 + */ + @ApiModelProperty(value = "报警图片") + @TableField("ALARM_IMAGE") + private String alarmImage; + + /** + * 报警内容 + */ + @ApiModelProperty(value = "报警内容") + @TableField("ALARM_CONTENT") + private String alarmContent; + + /** + * 报警时间 + */ + @ApiModelProperty(value = "报警时间") + @TableField("ALARM_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date alarmTime; + + /** + * 消警时间 + */ + @ApiModelProperty(value = "消警时间") + @TableField("CANCEL_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + /** + * 报警位置经度 + */ + @ApiModelProperty(value = "报警位置经度") + @TableField("ALARM_LNG") + private String alarmLng; + + /** + * 报警位置纬度 + */ + @ApiModelProperty(value = "报警位置纬度") + @TableField("ALARM_LAT") + private String alarmLat; + + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmStatusName; + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmTypeName; + @ApiModelProperty("作业名称") + @TableField(exist = false) + private String workTitle; + @ApiModelProperty("所属道路") + @TableField(exist = false) + private String workRoad; + @ApiModelProperty("作业状态") + @TableField(exist = false) + private String projectState; + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + @ApiModelProperty("负责人姓名") + @TableField(exist = false) + private String workPersonName; + @ApiModelProperty("负责人联系方式") + @TableField(exist = false) + private String workPersonPhoneNumber; + + + @Override + public String toString() { + return "BusAlarm{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + ", alarmType=" + alarmType + + ", alarmValue=" + alarmValue + + ", alarmStatus=" + alarmStatus + + ", alarmImage=" + alarmImage + + ", alarmContent=" + alarmContent + + ", alarmTime=" + alarmTime + + ", cancelTime=" + cancelTime + + ", alarmLng=" + alarmLng + + ", alarmLat=" + alarmLat + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java new file mode 100644 index 0000000..a0b7543 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + *

+ * 事件表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event") +@Data +@ApiModel("BusEvent") +public class BusEvent implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("事件ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件标题 + */ + @ApiModelProperty("事件名称") + @TableField("EVENT_TITLE") + private String eventTitle; + + /** + * 上报人员 + */ + @ApiModelProperty("上报人员") + @TableField("UPLOAD_NAME") + private String uploadName; + + /** + * 联系方式 + */ + @ApiModelProperty("联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 事件描述 + */ + @ApiModelProperty("事件描述") + @TableField("EVENT_DESCRIPTION") + private String eventDescription; + + @ApiModelProperty("经度") + @TableField("LNG") + private String lng; + + @ApiModelProperty("纬度") + @TableField("LAT") + private String lat; + + /** + * 事件上传时间 + */ + @ApiModelProperty("事件上传时间") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty("事件照片") + @TableField(exist = false) + private List imageList; + + + + @Override + public String toString() { + return "BusEvent{" + + "id=" + id + + ", eventTitle=" + eventTitle + + ", uploadName=" + uploadName + + ", phoneNumber=" + phoneNumber + + ", eventDescription=" + eventDescription + + ", lng=" + lng + + ", lat=" + lat + + ", createTime=" + createTime + + "}"; + } +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java new file mode 100644 index 0000000..73d7799 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.dto; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "AlarmUpload",description = "报警上传") +@Data +public class AlarmUpload { + + @ApiModelProperty(value = "摄像头ip") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + @ApiModelProperty(value = "安全树甲烷设备ip") + private String gasIp; + @ApiModelProperty(value = "安全树甲烷设备端口") + private String gasPort; + @ApiModelProperty(value = "报警值") + private String alarmValue; + @ApiModelProperty(value = "报警时间") + private String alarmTime; + @ApiModelProperty(value = "报警类型") + private String alarmType; + @ApiModelProperty(value = "报警图片") + private String alarmImage; + @ApiModelProperty(value = "报警内容") + private String alarmContent; + + @Override + public String toString() { + return "AlarmUpload{" + + "cameraIp='" + cameraIp + '\'' + + ", cameraPort='" + cameraPort + '\'' + + ", gasIp='" + gasIp + '\'' + + ", gasPort='" + gasPort + '\'' + + ", alarmValue='" + alarmValue + '\'' + + ", alarmTime='" + alarmTime + '\'' + + ", alarmType='" + alarmType + '\'' + + ", alarmImage='" + (StrUtil.isNotEmpty(alarmImage) ? alarmImage.substring(0,50) : "null") + '\'' + + ", alarmContent='" + alarmContent + '\'' + + '}'; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java new file mode 100644 index 0000000..ea518d9 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.modular.system.entity.Device; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("DeviceDetailDTO") +@Data +public class DeviceDetailDTO extends Device { + + @ApiModelProperty(value = "摄像头编号") + private String cameraCode; + + @ApiModelProperty(value = "摄像头IP") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + + @ApiModelProperty(value = "激甲编号") + private String gasCode; + + @ApiModelProperty(value = "激甲IP") + private String gasIp; + + @ApiModelProperty(value = "激甲端口") + private String gasPort; + + @ApiModelProperty(value = "智能帽衬编号") + private String hatLiningCode; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java new file mode 100644 index 0000000..29378ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("WorkSiteDetailDTO") +public class WorkSiteDetailDTO extends WorkSiteInfo { + + @ApiModelProperty(value = "安全树列表",dataType = "ProjectDevice") + private List deviceList; + + @ApiModelProperty(value = "人员列表",dataType = "ProjectWorker") + private List workerList; + + + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java new file mode 100644 index 0000000..6fd7b24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java @@ -0,0 +1,68 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "WorkerLocationDTO",description = "人员位置列表(首页)") +@Data +public class WorkerLocationDTO { + + @ApiModelProperty("人员ID") + private Long workerId; + + @ApiModelProperty("人员姓名") + private String workerName; + + @ApiModelProperty("安全帽编号") + private String hatCode; + + @ApiModelProperty("安全帽ID") + private Long hatId; + + @ApiModelProperty("背心编号") + private String vastCode; + + @ApiModelProperty("手环编号") + private String braceletCode; + + @ApiModelProperty("位置") + private String location; + + @ApiModelProperty("时间") + private String time; + + @ApiModelProperty("经度") + private String lng; + + @ApiModelProperty("纬度") + private String lat; + + @ApiModelProperty("心率") + private String heartRate; + + @ApiModelProperty("血氧") + private String bloodOxygen; + + @ApiModelProperty("一氧化碳") + private String co; + + @ApiModelProperty("甲烷") + private String gas; + + @ApiModelProperty("硫化氢") + private String h2s; + + @ApiModelProperty("氧气") + private String o2; + + @ApiModelProperty("信号") + private String signal; + + @ApiModelProperty("电量") + private String cell; + + @ApiModelProperty("是否报警") + private boolean alarmFlag; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java new file mode 100644 index 0000000..efb4a23 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java @@ -0,0 +1,159 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 报警记录表 + *

+ * + * @author zyj + * @since 2023-05-16 + */ +@Data +@ApiModel("Alarm") +@TableName("br_bus_alarm") +public class BusAlarm implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @ApiModelProperty(value = "设备ID") + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 报警类型 + */ + @ApiModelProperty(value = "报警类型") + @TableField("ALARM_TYPE") + private String alarmType; + + /** + * 报警状态 + */ + @ApiModelProperty(value = "报警状态") + @TableField("ALARM_STATUS") + private String alarmStatus; + + /** + * 报警值 + */ + @ApiModelProperty(value = "报警值") + @TableField("ALARM_VALUE") + private String alarmValue; + + /** + * 报警图片 + */ + @ApiModelProperty(value = "报警图片") + @TableField("ALARM_IMAGE") + private String alarmImage; + + /** + * 报警内容 + */ + @ApiModelProperty(value = "报警内容") + @TableField("ALARM_CONTENT") + private String alarmContent; + + /** + * 报警时间 + */ + @ApiModelProperty(value = "报警时间") + @TableField("ALARM_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date alarmTime; + + /** + * 消警时间 + */ + @ApiModelProperty(value = "消警时间") + @TableField("CANCEL_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + /** + * 报警位置经度 + */ + @ApiModelProperty(value = "报警位置经度") + @TableField("ALARM_LNG") + private String alarmLng; + + /** + * 报警位置纬度 + */ + @ApiModelProperty(value = "报警位置纬度") + @TableField("ALARM_LAT") + private String alarmLat; + + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmStatusName; + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmTypeName; + @ApiModelProperty("作业名称") + @TableField(exist = false) + private String workTitle; + @ApiModelProperty("所属道路") + @TableField(exist = false) + private String workRoad; + @ApiModelProperty("作业状态") + @TableField(exist = false) + private String projectState; + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + @ApiModelProperty("负责人姓名") + @TableField(exist = false) + private String workPersonName; + @ApiModelProperty("负责人联系方式") + @TableField(exist = false) + private String workPersonPhoneNumber; + + + @Override + public String toString() { + return "BusAlarm{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + ", alarmType=" + alarmType + + ", alarmValue=" + alarmValue + + ", alarmStatus=" + alarmStatus + + ", alarmImage=" + alarmImage + + ", alarmContent=" + alarmContent + + ", alarmTime=" + alarmTime + + ", cancelTime=" + cancelTime + + ", alarmLng=" + alarmLng + + ", alarmLat=" + alarmLat + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java new file mode 100644 index 0000000..a0b7543 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + *

+ * 事件表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event") +@Data +@ApiModel("BusEvent") +public class BusEvent implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("事件ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件标题 + */ + @ApiModelProperty("事件名称") + @TableField("EVENT_TITLE") + private String eventTitle; + + /** + * 上报人员 + */ + @ApiModelProperty("上报人员") + @TableField("UPLOAD_NAME") + private String uploadName; + + /** + * 联系方式 + */ + @ApiModelProperty("联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 事件描述 + */ + @ApiModelProperty("事件描述") + @TableField("EVENT_DESCRIPTION") + private String eventDescription; + + @ApiModelProperty("经度") + @TableField("LNG") + private String lng; + + @ApiModelProperty("纬度") + @TableField("LAT") + private String lat; + + /** + * 事件上传时间 + */ + @ApiModelProperty("事件上传时间") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty("事件照片") + @TableField(exist = false) + private List imageList; + + + + @Override + public String toString() { + return "BusEvent{" + + "id=" + id + + ", eventTitle=" + eventTitle + + ", uploadName=" + uploadName + + ", phoneNumber=" + phoneNumber + + ", eventDescription=" + eventDescription + + ", lng=" + lng + + ", lat=" + lat + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java new file mode 100644 index 0000000..1e75245 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 事件图片表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event_image") +@Data +@ApiModel("BusEventImage") +public class BusEventImage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件ID + */ + @TableField("EVENT_ID") + private Long eventId; + + /** + * 报警图片 + */ + @TableField("IMAGE") + @ApiModelProperty("图片url") + private String image; + +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java new file mode 100644 index 0000000..73d7799 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.dto; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "AlarmUpload",description = "报警上传") +@Data +public class AlarmUpload { + + @ApiModelProperty(value = "摄像头ip") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + @ApiModelProperty(value = "安全树甲烷设备ip") + private String gasIp; + @ApiModelProperty(value = "安全树甲烷设备端口") + private String gasPort; + @ApiModelProperty(value = "报警值") + private String alarmValue; + @ApiModelProperty(value = "报警时间") + private String alarmTime; + @ApiModelProperty(value = "报警类型") + private String alarmType; + @ApiModelProperty(value = "报警图片") + private String alarmImage; + @ApiModelProperty(value = "报警内容") + private String alarmContent; + + @Override + public String toString() { + return "AlarmUpload{" + + "cameraIp='" + cameraIp + '\'' + + ", cameraPort='" + cameraPort + '\'' + + ", gasIp='" + gasIp + '\'' + + ", gasPort='" + gasPort + '\'' + + ", alarmValue='" + alarmValue + '\'' + + ", alarmTime='" + alarmTime + '\'' + + ", alarmType='" + alarmType + '\'' + + ", alarmImage='" + (StrUtil.isNotEmpty(alarmImage) ? alarmImage.substring(0,50) : "null") + '\'' + + ", alarmContent='" + alarmContent + '\'' + + '}'; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java new file mode 100644 index 0000000..ea518d9 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.modular.system.entity.Device; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("DeviceDetailDTO") +@Data +public class DeviceDetailDTO extends Device { + + @ApiModelProperty(value = "摄像头编号") + private String cameraCode; + + @ApiModelProperty(value = "摄像头IP") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + + @ApiModelProperty(value = "激甲编号") + private String gasCode; + + @ApiModelProperty(value = "激甲IP") + private String gasIp; + + @ApiModelProperty(value = "激甲端口") + private String gasPort; + + @ApiModelProperty(value = "智能帽衬编号") + private String hatLiningCode; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java new file mode 100644 index 0000000..29378ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("WorkSiteDetailDTO") +public class WorkSiteDetailDTO extends WorkSiteInfo { + + @ApiModelProperty(value = "安全树列表",dataType = "ProjectDevice") + private List deviceList; + + @ApiModelProperty(value = "人员列表",dataType = "ProjectWorker") + private List workerList; + + + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java new file mode 100644 index 0000000..6fd7b24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java @@ -0,0 +1,68 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "WorkerLocationDTO",description = "人员位置列表(首页)") +@Data +public class WorkerLocationDTO { + + @ApiModelProperty("人员ID") + private Long workerId; + + @ApiModelProperty("人员姓名") + private String workerName; + + @ApiModelProperty("安全帽编号") + private String hatCode; + + @ApiModelProperty("安全帽ID") + private Long hatId; + + @ApiModelProperty("背心编号") + private String vastCode; + + @ApiModelProperty("手环编号") + private String braceletCode; + + @ApiModelProperty("位置") + private String location; + + @ApiModelProperty("时间") + private String time; + + @ApiModelProperty("经度") + private String lng; + + @ApiModelProperty("纬度") + private String lat; + + @ApiModelProperty("心率") + private String heartRate; + + @ApiModelProperty("血氧") + private String bloodOxygen; + + @ApiModelProperty("一氧化碳") + private String co; + + @ApiModelProperty("甲烷") + private String gas; + + @ApiModelProperty("硫化氢") + private String h2s; + + @ApiModelProperty("氧气") + private String o2; + + @ApiModelProperty("信号") + private String signal; + + @ApiModelProperty("电量") + private String cell; + + @ApiModelProperty("是否报警") + private boolean alarmFlag; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java new file mode 100644 index 0000000..efb4a23 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java @@ -0,0 +1,159 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 报警记录表 + *

+ * + * @author zyj + * @since 2023-05-16 + */ +@Data +@ApiModel("Alarm") +@TableName("br_bus_alarm") +public class BusAlarm implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @ApiModelProperty(value = "设备ID") + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 报警类型 + */ + @ApiModelProperty(value = "报警类型") + @TableField("ALARM_TYPE") + private String alarmType; + + /** + * 报警状态 + */ + @ApiModelProperty(value = "报警状态") + @TableField("ALARM_STATUS") + private String alarmStatus; + + /** + * 报警值 + */ + @ApiModelProperty(value = "报警值") + @TableField("ALARM_VALUE") + private String alarmValue; + + /** + * 报警图片 + */ + @ApiModelProperty(value = "报警图片") + @TableField("ALARM_IMAGE") + private String alarmImage; + + /** + * 报警内容 + */ + @ApiModelProperty(value = "报警内容") + @TableField("ALARM_CONTENT") + private String alarmContent; + + /** + * 报警时间 + */ + @ApiModelProperty(value = "报警时间") + @TableField("ALARM_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date alarmTime; + + /** + * 消警时间 + */ + @ApiModelProperty(value = "消警时间") + @TableField("CANCEL_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + /** + * 报警位置经度 + */ + @ApiModelProperty(value = "报警位置经度") + @TableField("ALARM_LNG") + private String alarmLng; + + /** + * 报警位置纬度 + */ + @ApiModelProperty(value = "报警位置纬度") + @TableField("ALARM_LAT") + private String alarmLat; + + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmStatusName; + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmTypeName; + @ApiModelProperty("作业名称") + @TableField(exist = false) + private String workTitle; + @ApiModelProperty("所属道路") + @TableField(exist = false) + private String workRoad; + @ApiModelProperty("作业状态") + @TableField(exist = false) + private String projectState; + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + @ApiModelProperty("负责人姓名") + @TableField(exist = false) + private String workPersonName; + @ApiModelProperty("负责人联系方式") + @TableField(exist = false) + private String workPersonPhoneNumber; + + + @Override + public String toString() { + return "BusAlarm{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + ", alarmType=" + alarmType + + ", alarmValue=" + alarmValue + + ", alarmStatus=" + alarmStatus + + ", alarmImage=" + alarmImage + + ", alarmContent=" + alarmContent + + ", alarmTime=" + alarmTime + + ", cancelTime=" + cancelTime + + ", alarmLng=" + alarmLng + + ", alarmLat=" + alarmLat + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java new file mode 100644 index 0000000..a0b7543 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + *

+ * 事件表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event") +@Data +@ApiModel("BusEvent") +public class BusEvent implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("事件ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件标题 + */ + @ApiModelProperty("事件名称") + @TableField("EVENT_TITLE") + private String eventTitle; + + /** + * 上报人员 + */ + @ApiModelProperty("上报人员") + @TableField("UPLOAD_NAME") + private String uploadName; + + /** + * 联系方式 + */ + @ApiModelProperty("联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 事件描述 + */ + @ApiModelProperty("事件描述") + @TableField("EVENT_DESCRIPTION") + private String eventDescription; + + @ApiModelProperty("经度") + @TableField("LNG") + private String lng; + + @ApiModelProperty("纬度") + @TableField("LAT") + private String lat; + + /** + * 事件上传时间 + */ + @ApiModelProperty("事件上传时间") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty("事件照片") + @TableField(exist = false) + private List imageList; + + + + @Override + public String toString() { + return "BusEvent{" + + "id=" + id + + ", eventTitle=" + eventTitle + + ", uploadName=" + uploadName + + ", phoneNumber=" + phoneNumber + + ", eventDescription=" + eventDescription + + ", lng=" + lng + + ", lat=" + lat + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java new file mode 100644 index 0000000..1e75245 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 事件图片表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event_image") +@Data +@ApiModel("BusEventImage") +public class BusEventImage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件ID + */ + @TableField("EVENT_ID") + private Long eventId; + + /** + * 报警图片 + */ + @TableField("IMAGE") + @ApiModelProperty("图片url") + private String image; + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java new file mode 100644 index 0000000..df89c70 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.core.base.json.DateDeserializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Device") +@TableName("br_device") +@Data +public class Device implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "设备ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty(value = "设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + /** + * 设备类型 + */ + @ApiModelProperty(value = "设备类型") + @TableField("DEVICE_TYPE") + private String deviceType; + + /** + * 设备批次 + */ + @ApiModelProperty(value = "设备批次") + @TableField("DEVICE_BATCH") + private String deviceBatch; + + /** + * 厂家 + */ + @ApiModelProperty(value = "厂家") + @TableField("MANUFACTURER") + private String manufacturer; + + /** + * 是否供电 + */ + @ApiModelProperty(value = "是否供电") + @TableField("IS_POWER_SUPPLY") + private String isPowerSupply; + + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间",dataType = "Date") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty(value = "设备类型名称") + @TableField(exist = false) + private String deviceTypeName; + + @ApiModelProperty(value = "是否供电名称") + @TableField(exist = false) + private String isPowerSupplyName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", deviceCode=" + deviceCode + + ", deviceType=" + deviceType + + ", deviceBatch=" + deviceBatch + + ", manufacturer=" + manufacturer + + ", isPowerSupply=" + isPowerSupply + + ", createTime=" + createTime + + "}"; + } +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java new file mode 100644 index 0000000..73d7799 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.dto; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "AlarmUpload",description = "报警上传") +@Data +public class AlarmUpload { + + @ApiModelProperty(value = "摄像头ip") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + @ApiModelProperty(value = "安全树甲烷设备ip") + private String gasIp; + @ApiModelProperty(value = "安全树甲烷设备端口") + private String gasPort; + @ApiModelProperty(value = "报警值") + private String alarmValue; + @ApiModelProperty(value = "报警时间") + private String alarmTime; + @ApiModelProperty(value = "报警类型") + private String alarmType; + @ApiModelProperty(value = "报警图片") + private String alarmImage; + @ApiModelProperty(value = "报警内容") + private String alarmContent; + + @Override + public String toString() { + return "AlarmUpload{" + + "cameraIp='" + cameraIp + '\'' + + ", cameraPort='" + cameraPort + '\'' + + ", gasIp='" + gasIp + '\'' + + ", gasPort='" + gasPort + '\'' + + ", alarmValue='" + alarmValue + '\'' + + ", alarmTime='" + alarmTime + '\'' + + ", alarmType='" + alarmType + '\'' + + ", alarmImage='" + (StrUtil.isNotEmpty(alarmImage) ? alarmImage.substring(0,50) : "null") + '\'' + + ", alarmContent='" + alarmContent + '\'' + + '}'; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java new file mode 100644 index 0000000..ea518d9 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.modular.system.entity.Device; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("DeviceDetailDTO") +@Data +public class DeviceDetailDTO extends Device { + + @ApiModelProperty(value = "摄像头编号") + private String cameraCode; + + @ApiModelProperty(value = "摄像头IP") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + + @ApiModelProperty(value = "激甲编号") + private String gasCode; + + @ApiModelProperty(value = "激甲IP") + private String gasIp; + + @ApiModelProperty(value = "激甲端口") + private String gasPort; + + @ApiModelProperty(value = "智能帽衬编号") + private String hatLiningCode; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java new file mode 100644 index 0000000..29378ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("WorkSiteDetailDTO") +public class WorkSiteDetailDTO extends WorkSiteInfo { + + @ApiModelProperty(value = "安全树列表",dataType = "ProjectDevice") + private List deviceList; + + @ApiModelProperty(value = "人员列表",dataType = "ProjectWorker") + private List workerList; + + + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java new file mode 100644 index 0000000..6fd7b24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java @@ -0,0 +1,68 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "WorkerLocationDTO",description = "人员位置列表(首页)") +@Data +public class WorkerLocationDTO { + + @ApiModelProperty("人员ID") + private Long workerId; + + @ApiModelProperty("人员姓名") + private String workerName; + + @ApiModelProperty("安全帽编号") + private String hatCode; + + @ApiModelProperty("安全帽ID") + private Long hatId; + + @ApiModelProperty("背心编号") + private String vastCode; + + @ApiModelProperty("手环编号") + private String braceletCode; + + @ApiModelProperty("位置") + private String location; + + @ApiModelProperty("时间") + private String time; + + @ApiModelProperty("经度") + private String lng; + + @ApiModelProperty("纬度") + private String lat; + + @ApiModelProperty("心率") + private String heartRate; + + @ApiModelProperty("血氧") + private String bloodOxygen; + + @ApiModelProperty("一氧化碳") + private String co; + + @ApiModelProperty("甲烷") + private String gas; + + @ApiModelProperty("硫化氢") + private String h2s; + + @ApiModelProperty("氧气") + private String o2; + + @ApiModelProperty("信号") + private String signal; + + @ApiModelProperty("电量") + private String cell; + + @ApiModelProperty("是否报警") + private boolean alarmFlag; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java new file mode 100644 index 0000000..efb4a23 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java @@ -0,0 +1,159 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 报警记录表 + *

+ * + * @author zyj + * @since 2023-05-16 + */ +@Data +@ApiModel("Alarm") +@TableName("br_bus_alarm") +public class BusAlarm implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @ApiModelProperty(value = "设备ID") + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 报警类型 + */ + @ApiModelProperty(value = "报警类型") + @TableField("ALARM_TYPE") + private String alarmType; + + /** + * 报警状态 + */ + @ApiModelProperty(value = "报警状态") + @TableField("ALARM_STATUS") + private String alarmStatus; + + /** + * 报警值 + */ + @ApiModelProperty(value = "报警值") + @TableField("ALARM_VALUE") + private String alarmValue; + + /** + * 报警图片 + */ + @ApiModelProperty(value = "报警图片") + @TableField("ALARM_IMAGE") + private String alarmImage; + + /** + * 报警内容 + */ + @ApiModelProperty(value = "报警内容") + @TableField("ALARM_CONTENT") + private String alarmContent; + + /** + * 报警时间 + */ + @ApiModelProperty(value = "报警时间") + @TableField("ALARM_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date alarmTime; + + /** + * 消警时间 + */ + @ApiModelProperty(value = "消警时间") + @TableField("CANCEL_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + /** + * 报警位置经度 + */ + @ApiModelProperty(value = "报警位置经度") + @TableField("ALARM_LNG") + private String alarmLng; + + /** + * 报警位置纬度 + */ + @ApiModelProperty(value = "报警位置纬度") + @TableField("ALARM_LAT") + private String alarmLat; + + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmStatusName; + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmTypeName; + @ApiModelProperty("作业名称") + @TableField(exist = false) + private String workTitle; + @ApiModelProperty("所属道路") + @TableField(exist = false) + private String workRoad; + @ApiModelProperty("作业状态") + @TableField(exist = false) + private String projectState; + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + @ApiModelProperty("负责人姓名") + @TableField(exist = false) + private String workPersonName; + @ApiModelProperty("负责人联系方式") + @TableField(exist = false) + private String workPersonPhoneNumber; + + + @Override + public String toString() { + return "BusAlarm{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + ", alarmType=" + alarmType + + ", alarmValue=" + alarmValue + + ", alarmStatus=" + alarmStatus + + ", alarmImage=" + alarmImage + + ", alarmContent=" + alarmContent + + ", alarmTime=" + alarmTime + + ", cancelTime=" + cancelTime + + ", alarmLng=" + alarmLng + + ", alarmLat=" + alarmLat + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java new file mode 100644 index 0000000..a0b7543 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + *

+ * 事件表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event") +@Data +@ApiModel("BusEvent") +public class BusEvent implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("事件ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件标题 + */ + @ApiModelProperty("事件名称") + @TableField("EVENT_TITLE") + private String eventTitle; + + /** + * 上报人员 + */ + @ApiModelProperty("上报人员") + @TableField("UPLOAD_NAME") + private String uploadName; + + /** + * 联系方式 + */ + @ApiModelProperty("联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 事件描述 + */ + @ApiModelProperty("事件描述") + @TableField("EVENT_DESCRIPTION") + private String eventDescription; + + @ApiModelProperty("经度") + @TableField("LNG") + private String lng; + + @ApiModelProperty("纬度") + @TableField("LAT") + private String lat; + + /** + * 事件上传时间 + */ + @ApiModelProperty("事件上传时间") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty("事件照片") + @TableField(exist = false) + private List imageList; + + + + @Override + public String toString() { + return "BusEvent{" + + "id=" + id + + ", eventTitle=" + eventTitle + + ", uploadName=" + uploadName + + ", phoneNumber=" + phoneNumber + + ", eventDescription=" + eventDescription + + ", lng=" + lng + + ", lat=" + lat + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java new file mode 100644 index 0000000..1e75245 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 事件图片表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event_image") +@Data +@ApiModel("BusEventImage") +public class BusEventImage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件ID + */ + @TableField("EVENT_ID") + private Long eventId; + + /** + * 报警图片 + */ + @TableField("IMAGE") + @ApiModelProperty("图片url") + private String image; + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java new file mode 100644 index 0000000..df89c70 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.core.base.json.DateDeserializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Device") +@TableName("br_device") +@Data +public class Device implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "设备ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty(value = "设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + /** + * 设备类型 + */ + @ApiModelProperty(value = "设备类型") + @TableField("DEVICE_TYPE") + private String deviceType; + + /** + * 设备批次 + */ + @ApiModelProperty(value = "设备批次") + @TableField("DEVICE_BATCH") + private String deviceBatch; + + /** + * 厂家 + */ + @ApiModelProperty(value = "厂家") + @TableField("MANUFACTURER") + private String manufacturer; + + /** + * 是否供电 + */ + @ApiModelProperty(value = "是否供电") + @TableField("IS_POWER_SUPPLY") + private String isPowerSupply; + + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间",dataType = "Date") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty(value = "设备类型名称") + @TableField(exist = false) + private String deviceTypeName; + + @ApiModelProperty(value = "是否供电名称") + @TableField(exist = false) + private String isPowerSupplyName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", deviceCode=" + deviceCode + + ", deviceType=" + deviceType + + ", deviceBatch=" + deviceBatch + + ", manufacturer=" + manufacturer + + ", isPowerSupply=" + isPowerSupply + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java new file mode 100644 index 0000000..5ee7015 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java @@ -0,0 +1,99 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 设备扩展信息表(安全树) + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Data +@TableName("br_device_ext") +public class DeviceExt implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 摄像头编号 + */ + @TableField("CAMERA_CODE") + private String cameraCode; + + /** + * 摄像头IP + */ + @TableField("CAMERA_IP") + private String cameraIp; + + /** + * 摄像头端口 + */ + @TableField("CAMERA_PORT") + private String cameraPort; + + /** + * 激甲编号 + */ + @TableField("GAS_CODE") + private String gasCode; + + /** + * 激甲IP + */ + @TableField("GAS_IP") + private String gasIp; + + /** + * 激甲端口 + */ + @TableField("GAS_PORT") + private String gasPort; + + /** + * 甲烷报警阈值 + */ + @TableField("GAS_THRESHOLD") + private String gasThreshold; + + @TableField(value = "HAT_LINING_CODE") + private String hatLiningCode; + + + @Override + public String toString() { + return "DeviceExt{" + + "id=" + id + + ", deviceId=" + deviceId + + ", cameraCode=" + cameraCode + + ", cameraIp=" + cameraIp + + ", cameraPort=" + cameraPort + + ", gasCode=" + gasCode + + ", gasIp=" + gasIp + + ", gasPort=" + gasPort + + ", gasThreshold=" + gasThreshold + + ", hatLiningCode=" + hatLiningCode + + "}"; + } +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java new file mode 100644 index 0000000..73d7799 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.dto; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "AlarmUpload",description = "报警上传") +@Data +public class AlarmUpload { + + @ApiModelProperty(value = "摄像头ip") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + @ApiModelProperty(value = "安全树甲烷设备ip") + private String gasIp; + @ApiModelProperty(value = "安全树甲烷设备端口") + private String gasPort; + @ApiModelProperty(value = "报警值") + private String alarmValue; + @ApiModelProperty(value = "报警时间") + private String alarmTime; + @ApiModelProperty(value = "报警类型") + private String alarmType; + @ApiModelProperty(value = "报警图片") + private String alarmImage; + @ApiModelProperty(value = "报警内容") + private String alarmContent; + + @Override + public String toString() { + return "AlarmUpload{" + + "cameraIp='" + cameraIp + '\'' + + ", cameraPort='" + cameraPort + '\'' + + ", gasIp='" + gasIp + '\'' + + ", gasPort='" + gasPort + '\'' + + ", alarmValue='" + alarmValue + '\'' + + ", alarmTime='" + alarmTime + '\'' + + ", alarmType='" + alarmType + '\'' + + ", alarmImage='" + (StrUtil.isNotEmpty(alarmImage) ? alarmImage.substring(0,50) : "null") + '\'' + + ", alarmContent='" + alarmContent + '\'' + + '}'; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java new file mode 100644 index 0000000..ea518d9 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.modular.system.entity.Device; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("DeviceDetailDTO") +@Data +public class DeviceDetailDTO extends Device { + + @ApiModelProperty(value = "摄像头编号") + private String cameraCode; + + @ApiModelProperty(value = "摄像头IP") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + + @ApiModelProperty(value = "激甲编号") + private String gasCode; + + @ApiModelProperty(value = "激甲IP") + private String gasIp; + + @ApiModelProperty(value = "激甲端口") + private String gasPort; + + @ApiModelProperty(value = "智能帽衬编号") + private String hatLiningCode; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java new file mode 100644 index 0000000..29378ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("WorkSiteDetailDTO") +public class WorkSiteDetailDTO extends WorkSiteInfo { + + @ApiModelProperty(value = "安全树列表",dataType = "ProjectDevice") + private List deviceList; + + @ApiModelProperty(value = "人员列表",dataType = "ProjectWorker") + private List workerList; + + + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java new file mode 100644 index 0000000..6fd7b24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java @@ -0,0 +1,68 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "WorkerLocationDTO",description = "人员位置列表(首页)") +@Data +public class WorkerLocationDTO { + + @ApiModelProperty("人员ID") + private Long workerId; + + @ApiModelProperty("人员姓名") + private String workerName; + + @ApiModelProperty("安全帽编号") + private String hatCode; + + @ApiModelProperty("安全帽ID") + private Long hatId; + + @ApiModelProperty("背心编号") + private String vastCode; + + @ApiModelProperty("手环编号") + private String braceletCode; + + @ApiModelProperty("位置") + private String location; + + @ApiModelProperty("时间") + private String time; + + @ApiModelProperty("经度") + private String lng; + + @ApiModelProperty("纬度") + private String lat; + + @ApiModelProperty("心率") + private String heartRate; + + @ApiModelProperty("血氧") + private String bloodOxygen; + + @ApiModelProperty("一氧化碳") + private String co; + + @ApiModelProperty("甲烷") + private String gas; + + @ApiModelProperty("硫化氢") + private String h2s; + + @ApiModelProperty("氧气") + private String o2; + + @ApiModelProperty("信号") + private String signal; + + @ApiModelProperty("电量") + private String cell; + + @ApiModelProperty("是否报警") + private boolean alarmFlag; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java new file mode 100644 index 0000000..efb4a23 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java @@ -0,0 +1,159 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 报警记录表 + *

+ * + * @author zyj + * @since 2023-05-16 + */ +@Data +@ApiModel("Alarm") +@TableName("br_bus_alarm") +public class BusAlarm implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @ApiModelProperty(value = "设备ID") + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 报警类型 + */ + @ApiModelProperty(value = "报警类型") + @TableField("ALARM_TYPE") + private String alarmType; + + /** + * 报警状态 + */ + @ApiModelProperty(value = "报警状态") + @TableField("ALARM_STATUS") + private String alarmStatus; + + /** + * 报警值 + */ + @ApiModelProperty(value = "报警值") + @TableField("ALARM_VALUE") + private String alarmValue; + + /** + * 报警图片 + */ + @ApiModelProperty(value = "报警图片") + @TableField("ALARM_IMAGE") + private String alarmImage; + + /** + * 报警内容 + */ + @ApiModelProperty(value = "报警内容") + @TableField("ALARM_CONTENT") + private String alarmContent; + + /** + * 报警时间 + */ + @ApiModelProperty(value = "报警时间") + @TableField("ALARM_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date alarmTime; + + /** + * 消警时间 + */ + @ApiModelProperty(value = "消警时间") + @TableField("CANCEL_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + /** + * 报警位置经度 + */ + @ApiModelProperty(value = "报警位置经度") + @TableField("ALARM_LNG") + private String alarmLng; + + /** + * 报警位置纬度 + */ + @ApiModelProperty(value = "报警位置纬度") + @TableField("ALARM_LAT") + private String alarmLat; + + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmStatusName; + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmTypeName; + @ApiModelProperty("作业名称") + @TableField(exist = false) + private String workTitle; + @ApiModelProperty("所属道路") + @TableField(exist = false) + private String workRoad; + @ApiModelProperty("作业状态") + @TableField(exist = false) + private String projectState; + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + @ApiModelProperty("负责人姓名") + @TableField(exist = false) + private String workPersonName; + @ApiModelProperty("负责人联系方式") + @TableField(exist = false) + private String workPersonPhoneNumber; + + + @Override + public String toString() { + return "BusAlarm{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + ", alarmType=" + alarmType + + ", alarmValue=" + alarmValue + + ", alarmStatus=" + alarmStatus + + ", alarmImage=" + alarmImage + + ", alarmContent=" + alarmContent + + ", alarmTime=" + alarmTime + + ", cancelTime=" + cancelTime + + ", alarmLng=" + alarmLng + + ", alarmLat=" + alarmLat + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java new file mode 100644 index 0000000..a0b7543 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + *

+ * 事件表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event") +@Data +@ApiModel("BusEvent") +public class BusEvent implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("事件ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件标题 + */ + @ApiModelProperty("事件名称") + @TableField("EVENT_TITLE") + private String eventTitle; + + /** + * 上报人员 + */ + @ApiModelProperty("上报人员") + @TableField("UPLOAD_NAME") + private String uploadName; + + /** + * 联系方式 + */ + @ApiModelProperty("联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 事件描述 + */ + @ApiModelProperty("事件描述") + @TableField("EVENT_DESCRIPTION") + private String eventDescription; + + @ApiModelProperty("经度") + @TableField("LNG") + private String lng; + + @ApiModelProperty("纬度") + @TableField("LAT") + private String lat; + + /** + * 事件上传时间 + */ + @ApiModelProperty("事件上传时间") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty("事件照片") + @TableField(exist = false) + private List imageList; + + + + @Override + public String toString() { + return "BusEvent{" + + "id=" + id + + ", eventTitle=" + eventTitle + + ", uploadName=" + uploadName + + ", phoneNumber=" + phoneNumber + + ", eventDescription=" + eventDescription + + ", lng=" + lng + + ", lat=" + lat + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java new file mode 100644 index 0000000..1e75245 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 事件图片表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event_image") +@Data +@ApiModel("BusEventImage") +public class BusEventImage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件ID + */ + @TableField("EVENT_ID") + private Long eventId; + + /** + * 报警图片 + */ + @TableField("IMAGE") + @ApiModelProperty("图片url") + private String image; + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java new file mode 100644 index 0000000..df89c70 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.core.base.json.DateDeserializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Device") +@TableName("br_device") +@Data +public class Device implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "设备ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty(value = "设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + /** + * 设备类型 + */ + @ApiModelProperty(value = "设备类型") + @TableField("DEVICE_TYPE") + private String deviceType; + + /** + * 设备批次 + */ + @ApiModelProperty(value = "设备批次") + @TableField("DEVICE_BATCH") + private String deviceBatch; + + /** + * 厂家 + */ + @ApiModelProperty(value = "厂家") + @TableField("MANUFACTURER") + private String manufacturer; + + /** + * 是否供电 + */ + @ApiModelProperty(value = "是否供电") + @TableField("IS_POWER_SUPPLY") + private String isPowerSupply; + + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间",dataType = "Date") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty(value = "设备类型名称") + @TableField(exist = false) + private String deviceTypeName; + + @ApiModelProperty(value = "是否供电名称") + @TableField(exist = false) + private String isPowerSupplyName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", deviceCode=" + deviceCode + + ", deviceType=" + deviceType + + ", deviceBatch=" + deviceBatch + + ", manufacturer=" + manufacturer + + ", isPowerSupply=" + isPowerSupply + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java new file mode 100644 index 0000000..5ee7015 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java @@ -0,0 +1,99 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 设备扩展信息表(安全树) + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Data +@TableName("br_device_ext") +public class DeviceExt implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 摄像头编号 + */ + @TableField("CAMERA_CODE") + private String cameraCode; + + /** + * 摄像头IP + */ + @TableField("CAMERA_IP") + private String cameraIp; + + /** + * 摄像头端口 + */ + @TableField("CAMERA_PORT") + private String cameraPort; + + /** + * 激甲编号 + */ + @TableField("GAS_CODE") + private String gasCode; + + /** + * 激甲IP + */ + @TableField("GAS_IP") + private String gasIp; + + /** + * 激甲端口 + */ + @TableField("GAS_PORT") + private String gasPort; + + /** + * 甲烷报警阈值 + */ + @TableField("GAS_THRESHOLD") + private String gasThreshold; + + @TableField(value = "HAT_LINING_CODE") + private String hatLiningCode; + + + @Override + public String toString() { + return "DeviceExt{" + + "id=" + id + + ", deviceId=" + deviceId + + ", cameraCode=" + cameraCode + + ", cameraIp=" + cameraIp + + ", cameraPort=" + cameraPort + + ", gasCode=" + gasCode + + ", gasIp=" + gasIp + + ", gasPort=" + gasPort + + ", gasThreshold=" + gasThreshold + + ", hatLiningCode=" + hatLiningCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java new file mode 100644 index 0000000..c4f3472 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java @@ -0,0 +1,62 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Data +@ApiModel("ProjectDevice") +@TableName("br_project_device") +public class ProjectDevice implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + @ApiModelProperty("设备ID(新增编辑时传)") + private Long deviceId; + + /** + * 设备编号 + */ + @TableField(exist = false) + @ApiModelProperty("设备编号(详情中展示,新增编辑不用传)") + private String deviceCode; + + @Override + public String toString() { + return "ProjectDevice{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + "}"; + } +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java new file mode 100644 index 0000000..73d7799 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.dto; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "AlarmUpload",description = "报警上传") +@Data +public class AlarmUpload { + + @ApiModelProperty(value = "摄像头ip") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + @ApiModelProperty(value = "安全树甲烷设备ip") + private String gasIp; + @ApiModelProperty(value = "安全树甲烷设备端口") + private String gasPort; + @ApiModelProperty(value = "报警值") + private String alarmValue; + @ApiModelProperty(value = "报警时间") + private String alarmTime; + @ApiModelProperty(value = "报警类型") + private String alarmType; + @ApiModelProperty(value = "报警图片") + private String alarmImage; + @ApiModelProperty(value = "报警内容") + private String alarmContent; + + @Override + public String toString() { + return "AlarmUpload{" + + "cameraIp='" + cameraIp + '\'' + + ", cameraPort='" + cameraPort + '\'' + + ", gasIp='" + gasIp + '\'' + + ", gasPort='" + gasPort + '\'' + + ", alarmValue='" + alarmValue + '\'' + + ", alarmTime='" + alarmTime + '\'' + + ", alarmType='" + alarmType + '\'' + + ", alarmImage='" + (StrUtil.isNotEmpty(alarmImage) ? alarmImage.substring(0,50) : "null") + '\'' + + ", alarmContent='" + alarmContent + '\'' + + '}'; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java new file mode 100644 index 0000000..ea518d9 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.modular.system.entity.Device; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("DeviceDetailDTO") +@Data +public class DeviceDetailDTO extends Device { + + @ApiModelProperty(value = "摄像头编号") + private String cameraCode; + + @ApiModelProperty(value = "摄像头IP") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + + @ApiModelProperty(value = "激甲编号") + private String gasCode; + + @ApiModelProperty(value = "激甲IP") + private String gasIp; + + @ApiModelProperty(value = "激甲端口") + private String gasPort; + + @ApiModelProperty(value = "智能帽衬编号") + private String hatLiningCode; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java new file mode 100644 index 0000000..29378ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("WorkSiteDetailDTO") +public class WorkSiteDetailDTO extends WorkSiteInfo { + + @ApiModelProperty(value = "安全树列表",dataType = "ProjectDevice") + private List deviceList; + + @ApiModelProperty(value = "人员列表",dataType = "ProjectWorker") + private List workerList; + + + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java new file mode 100644 index 0000000..6fd7b24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java @@ -0,0 +1,68 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "WorkerLocationDTO",description = "人员位置列表(首页)") +@Data +public class WorkerLocationDTO { + + @ApiModelProperty("人员ID") + private Long workerId; + + @ApiModelProperty("人员姓名") + private String workerName; + + @ApiModelProperty("安全帽编号") + private String hatCode; + + @ApiModelProperty("安全帽ID") + private Long hatId; + + @ApiModelProperty("背心编号") + private String vastCode; + + @ApiModelProperty("手环编号") + private String braceletCode; + + @ApiModelProperty("位置") + private String location; + + @ApiModelProperty("时间") + private String time; + + @ApiModelProperty("经度") + private String lng; + + @ApiModelProperty("纬度") + private String lat; + + @ApiModelProperty("心率") + private String heartRate; + + @ApiModelProperty("血氧") + private String bloodOxygen; + + @ApiModelProperty("一氧化碳") + private String co; + + @ApiModelProperty("甲烷") + private String gas; + + @ApiModelProperty("硫化氢") + private String h2s; + + @ApiModelProperty("氧气") + private String o2; + + @ApiModelProperty("信号") + private String signal; + + @ApiModelProperty("电量") + private String cell; + + @ApiModelProperty("是否报警") + private boolean alarmFlag; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java new file mode 100644 index 0000000..efb4a23 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java @@ -0,0 +1,159 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 报警记录表 + *

+ * + * @author zyj + * @since 2023-05-16 + */ +@Data +@ApiModel("Alarm") +@TableName("br_bus_alarm") +public class BusAlarm implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @ApiModelProperty(value = "设备ID") + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 报警类型 + */ + @ApiModelProperty(value = "报警类型") + @TableField("ALARM_TYPE") + private String alarmType; + + /** + * 报警状态 + */ + @ApiModelProperty(value = "报警状态") + @TableField("ALARM_STATUS") + private String alarmStatus; + + /** + * 报警值 + */ + @ApiModelProperty(value = "报警值") + @TableField("ALARM_VALUE") + private String alarmValue; + + /** + * 报警图片 + */ + @ApiModelProperty(value = "报警图片") + @TableField("ALARM_IMAGE") + private String alarmImage; + + /** + * 报警内容 + */ + @ApiModelProperty(value = "报警内容") + @TableField("ALARM_CONTENT") + private String alarmContent; + + /** + * 报警时间 + */ + @ApiModelProperty(value = "报警时间") + @TableField("ALARM_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date alarmTime; + + /** + * 消警时间 + */ + @ApiModelProperty(value = "消警时间") + @TableField("CANCEL_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + /** + * 报警位置经度 + */ + @ApiModelProperty(value = "报警位置经度") + @TableField("ALARM_LNG") + private String alarmLng; + + /** + * 报警位置纬度 + */ + @ApiModelProperty(value = "报警位置纬度") + @TableField("ALARM_LAT") + private String alarmLat; + + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmStatusName; + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmTypeName; + @ApiModelProperty("作业名称") + @TableField(exist = false) + private String workTitle; + @ApiModelProperty("所属道路") + @TableField(exist = false) + private String workRoad; + @ApiModelProperty("作业状态") + @TableField(exist = false) + private String projectState; + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + @ApiModelProperty("负责人姓名") + @TableField(exist = false) + private String workPersonName; + @ApiModelProperty("负责人联系方式") + @TableField(exist = false) + private String workPersonPhoneNumber; + + + @Override + public String toString() { + return "BusAlarm{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + ", alarmType=" + alarmType + + ", alarmValue=" + alarmValue + + ", alarmStatus=" + alarmStatus + + ", alarmImage=" + alarmImage + + ", alarmContent=" + alarmContent + + ", alarmTime=" + alarmTime + + ", cancelTime=" + cancelTime + + ", alarmLng=" + alarmLng + + ", alarmLat=" + alarmLat + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java new file mode 100644 index 0000000..a0b7543 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + *

+ * 事件表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event") +@Data +@ApiModel("BusEvent") +public class BusEvent implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("事件ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件标题 + */ + @ApiModelProperty("事件名称") + @TableField("EVENT_TITLE") + private String eventTitle; + + /** + * 上报人员 + */ + @ApiModelProperty("上报人员") + @TableField("UPLOAD_NAME") + private String uploadName; + + /** + * 联系方式 + */ + @ApiModelProperty("联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 事件描述 + */ + @ApiModelProperty("事件描述") + @TableField("EVENT_DESCRIPTION") + private String eventDescription; + + @ApiModelProperty("经度") + @TableField("LNG") + private String lng; + + @ApiModelProperty("纬度") + @TableField("LAT") + private String lat; + + /** + * 事件上传时间 + */ + @ApiModelProperty("事件上传时间") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty("事件照片") + @TableField(exist = false) + private List imageList; + + + + @Override + public String toString() { + return "BusEvent{" + + "id=" + id + + ", eventTitle=" + eventTitle + + ", uploadName=" + uploadName + + ", phoneNumber=" + phoneNumber + + ", eventDescription=" + eventDescription + + ", lng=" + lng + + ", lat=" + lat + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java new file mode 100644 index 0000000..1e75245 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 事件图片表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event_image") +@Data +@ApiModel("BusEventImage") +public class BusEventImage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件ID + */ + @TableField("EVENT_ID") + private Long eventId; + + /** + * 报警图片 + */ + @TableField("IMAGE") + @ApiModelProperty("图片url") + private String image; + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java new file mode 100644 index 0000000..df89c70 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.core.base.json.DateDeserializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Device") +@TableName("br_device") +@Data +public class Device implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "设备ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty(value = "设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + /** + * 设备类型 + */ + @ApiModelProperty(value = "设备类型") + @TableField("DEVICE_TYPE") + private String deviceType; + + /** + * 设备批次 + */ + @ApiModelProperty(value = "设备批次") + @TableField("DEVICE_BATCH") + private String deviceBatch; + + /** + * 厂家 + */ + @ApiModelProperty(value = "厂家") + @TableField("MANUFACTURER") + private String manufacturer; + + /** + * 是否供电 + */ + @ApiModelProperty(value = "是否供电") + @TableField("IS_POWER_SUPPLY") + private String isPowerSupply; + + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间",dataType = "Date") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty(value = "设备类型名称") + @TableField(exist = false) + private String deviceTypeName; + + @ApiModelProperty(value = "是否供电名称") + @TableField(exist = false) + private String isPowerSupplyName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", deviceCode=" + deviceCode + + ", deviceType=" + deviceType + + ", deviceBatch=" + deviceBatch + + ", manufacturer=" + manufacturer + + ", isPowerSupply=" + isPowerSupply + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java new file mode 100644 index 0000000..5ee7015 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java @@ -0,0 +1,99 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 设备扩展信息表(安全树) + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Data +@TableName("br_device_ext") +public class DeviceExt implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 摄像头编号 + */ + @TableField("CAMERA_CODE") + private String cameraCode; + + /** + * 摄像头IP + */ + @TableField("CAMERA_IP") + private String cameraIp; + + /** + * 摄像头端口 + */ + @TableField("CAMERA_PORT") + private String cameraPort; + + /** + * 激甲编号 + */ + @TableField("GAS_CODE") + private String gasCode; + + /** + * 激甲IP + */ + @TableField("GAS_IP") + private String gasIp; + + /** + * 激甲端口 + */ + @TableField("GAS_PORT") + private String gasPort; + + /** + * 甲烷报警阈值 + */ + @TableField("GAS_THRESHOLD") + private String gasThreshold; + + @TableField(value = "HAT_LINING_CODE") + private String hatLiningCode; + + + @Override + public String toString() { + return "DeviceExt{" + + "id=" + id + + ", deviceId=" + deviceId + + ", cameraCode=" + cameraCode + + ", cameraIp=" + cameraIp + + ", cameraPort=" + cameraPort + + ", gasCode=" + gasCode + + ", gasIp=" + gasIp + + ", gasPort=" + gasPort + + ", gasThreshold=" + gasThreshold + + ", hatLiningCode=" + hatLiningCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java new file mode 100644 index 0000000..c4f3472 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java @@ -0,0 +1,62 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Data +@ApiModel("ProjectDevice") +@TableName("br_project_device") +public class ProjectDevice implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + @ApiModelProperty("设备ID(新增编辑时传)") + private Long deviceId; + + /** + * 设备编号 + */ + @TableField(exist = false) + @ApiModelProperty("设备编号(详情中展示,新增编辑不用传)") + private String deviceCode; + + @Override + public String toString() { + return "ProjectDevice{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java new file mode 100644 index 0000000..10b23c4 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java @@ -0,0 +1,104 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("ProjectWorker") +@TableName("br_project_worker") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ProjectWorker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 人员ID + */ + @ApiModelProperty("人员ID") + @TableField("WORKER_ID") + private Long workerId; + + /** + * 安全帽编号 + */ + @ApiModelProperty("安全帽编号") + @TableField("HAT_CODE") + private String hatCode; + + /** + * 背心编号 + */ + @ApiModelProperty("背心编号") + @TableField("VAST_CODE") + private String vastCode; + + /** + * 手环编号 + */ + @ApiModelProperty("手环编号") + @TableField("BRACELET_CODE") + private String braceletCode; + + @ApiModelProperty("人员姓名(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerName; + + @ApiModelProperty("人员部门ID(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptId; + + @ApiModelProperty("人员部门名称(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptName; + + @ApiModelProperty("人员联系方式(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerPhoneNumber; + + public ProjectWorker(Long projectId, Long workerId) { + this.projectId = projectId; + this.workerId = workerId; + } + + @Override + public String toString() { + return "ProjectWorker{" + + "id=" + id + + ", projectId=" + projectId + + ", workerId=" + workerId + + ", hatCode=" + hatCode + + ", vastCode=" + vastCode + + ", braceletCode=" + braceletCode + + "}"; + } +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java new file mode 100644 index 0000000..73d7799 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.dto; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "AlarmUpload",description = "报警上传") +@Data +public class AlarmUpload { + + @ApiModelProperty(value = "摄像头ip") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + @ApiModelProperty(value = "安全树甲烷设备ip") + private String gasIp; + @ApiModelProperty(value = "安全树甲烷设备端口") + private String gasPort; + @ApiModelProperty(value = "报警值") + private String alarmValue; + @ApiModelProperty(value = "报警时间") + private String alarmTime; + @ApiModelProperty(value = "报警类型") + private String alarmType; + @ApiModelProperty(value = "报警图片") + private String alarmImage; + @ApiModelProperty(value = "报警内容") + private String alarmContent; + + @Override + public String toString() { + return "AlarmUpload{" + + "cameraIp='" + cameraIp + '\'' + + ", cameraPort='" + cameraPort + '\'' + + ", gasIp='" + gasIp + '\'' + + ", gasPort='" + gasPort + '\'' + + ", alarmValue='" + alarmValue + '\'' + + ", alarmTime='" + alarmTime + '\'' + + ", alarmType='" + alarmType + '\'' + + ", alarmImage='" + (StrUtil.isNotEmpty(alarmImage) ? alarmImage.substring(0,50) : "null") + '\'' + + ", alarmContent='" + alarmContent + '\'' + + '}'; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java new file mode 100644 index 0000000..ea518d9 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.modular.system.entity.Device; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("DeviceDetailDTO") +@Data +public class DeviceDetailDTO extends Device { + + @ApiModelProperty(value = "摄像头编号") + private String cameraCode; + + @ApiModelProperty(value = "摄像头IP") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + + @ApiModelProperty(value = "激甲编号") + private String gasCode; + + @ApiModelProperty(value = "激甲IP") + private String gasIp; + + @ApiModelProperty(value = "激甲端口") + private String gasPort; + + @ApiModelProperty(value = "智能帽衬编号") + private String hatLiningCode; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java new file mode 100644 index 0000000..29378ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("WorkSiteDetailDTO") +public class WorkSiteDetailDTO extends WorkSiteInfo { + + @ApiModelProperty(value = "安全树列表",dataType = "ProjectDevice") + private List deviceList; + + @ApiModelProperty(value = "人员列表",dataType = "ProjectWorker") + private List workerList; + + + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java new file mode 100644 index 0000000..6fd7b24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java @@ -0,0 +1,68 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "WorkerLocationDTO",description = "人员位置列表(首页)") +@Data +public class WorkerLocationDTO { + + @ApiModelProperty("人员ID") + private Long workerId; + + @ApiModelProperty("人员姓名") + private String workerName; + + @ApiModelProperty("安全帽编号") + private String hatCode; + + @ApiModelProperty("安全帽ID") + private Long hatId; + + @ApiModelProperty("背心编号") + private String vastCode; + + @ApiModelProperty("手环编号") + private String braceletCode; + + @ApiModelProperty("位置") + private String location; + + @ApiModelProperty("时间") + private String time; + + @ApiModelProperty("经度") + private String lng; + + @ApiModelProperty("纬度") + private String lat; + + @ApiModelProperty("心率") + private String heartRate; + + @ApiModelProperty("血氧") + private String bloodOxygen; + + @ApiModelProperty("一氧化碳") + private String co; + + @ApiModelProperty("甲烷") + private String gas; + + @ApiModelProperty("硫化氢") + private String h2s; + + @ApiModelProperty("氧气") + private String o2; + + @ApiModelProperty("信号") + private String signal; + + @ApiModelProperty("电量") + private String cell; + + @ApiModelProperty("是否报警") + private boolean alarmFlag; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java new file mode 100644 index 0000000..efb4a23 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java @@ -0,0 +1,159 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 报警记录表 + *

+ * + * @author zyj + * @since 2023-05-16 + */ +@Data +@ApiModel("Alarm") +@TableName("br_bus_alarm") +public class BusAlarm implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @ApiModelProperty(value = "设备ID") + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 报警类型 + */ + @ApiModelProperty(value = "报警类型") + @TableField("ALARM_TYPE") + private String alarmType; + + /** + * 报警状态 + */ + @ApiModelProperty(value = "报警状态") + @TableField("ALARM_STATUS") + private String alarmStatus; + + /** + * 报警值 + */ + @ApiModelProperty(value = "报警值") + @TableField("ALARM_VALUE") + private String alarmValue; + + /** + * 报警图片 + */ + @ApiModelProperty(value = "报警图片") + @TableField("ALARM_IMAGE") + private String alarmImage; + + /** + * 报警内容 + */ + @ApiModelProperty(value = "报警内容") + @TableField("ALARM_CONTENT") + private String alarmContent; + + /** + * 报警时间 + */ + @ApiModelProperty(value = "报警时间") + @TableField("ALARM_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date alarmTime; + + /** + * 消警时间 + */ + @ApiModelProperty(value = "消警时间") + @TableField("CANCEL_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + /** + * 报警位置经度 + */ + @ApiModelProperty(value = "报警位置经度") + @TableField("ALARM_LNG") + private String alarmLng; + + /** + * 报警位置纬度 + */ + @ApiModelProperty(value = "报警位置纬度") + @TableField("ALARM_LAT") + private String alarmLat; + + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmStatusName; + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmTypeName; + @ApiModelProperty("作业名称") + @TableField(exist = false) + private String workTitle; + @ApiModelProperty("所属道路") + @TableField(exist = false) + private String workRoad; + @ApiModelProperty("作业状态") + @TableField(exist = false) + private String projectState; + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + @ApiModelProperty("负责人姓名") + @TableField(exist = false) + private String workPersonName; + @ApiModelProperty("负责人联系方式") + @TableField(exist = false) + private String workPersonPhoneNumber; + + + @Override + public String toString() { + return "BusAlarm{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + ", alarmType=" + alarmType + + ", alarmValue=" + alarmValue + + ", alarmStatus=" + alarmStatus + + ", alarmImage=" + alarmImage + + ", alarmContent=" + alarmContent + + ", alarmTime=" + alarmTime + + ", cancelTime=" + cancelTime + + ", alarmLng=" + alarmLng + + ", alarmLat=" + alarmLat + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java new file mode 100644 index 0000000..a0b7543 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + *

+ * 事件表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event") +@Data +@ApiModel("BusEvent") +public class BusEvent implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("事件ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件标题 + */ + @ApiModelProperty("事件名称") + @TableField("EVENT_TITLE") + private String eventTitle; + + /** + * 上报人员 + */ + @ApiModelProperty("上报人员") + @TableField("UPLOAD_NAME") + private String uploadName; + + /** + * 联系方式 + */ + @ApiModelProperty("联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 事件描述 + */ + @ApiModelProperty("事件描述") + @TableField("EVENT_DESCRIPTION") + private String eventDescription; + + @ApiModelProperty("经度") + @TableField("LNG") + private String lng; + + @ApiModelProperty("纬度") + @TableField("LAT") + private String lat; + + /** + * 事件上传时间 + */ + @ApiModelProperty("事件上传时间") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty("事件照片") + @TableField(exist = false) + private List imageList; + + + + @Override + public String toString() { + return "BusEvent{" + + "id=" + id + + ", eventTitle=" + eventTitle + + ", uploadName=" + uploadName + + ", phoneNumber=" + phoneNumber + + ", eventDescription=" + eventDescription + + ", lng=" + lng + + ", lat=" + lat + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java new file mode 100644 index 0000000..1e75245 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 事件图片表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event_image") +@Data +@ApiModel("BusEventImage") +public class BusEventImage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件ID + */ + @TableField("EVENT_ID") + private Long eventId; + + /** + * 报警图片 + */ + @TableField("IMAGE") + @ApiModelProperty("图片url") + private String image; + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java new file mode 100644 index 0000000..df89c70 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.core.base.json.DateDeserializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Device") +@TableName("br_device") +@Data +public class Device implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "设备ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty(value = "设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + /** + * 设备类型 + */ + @ApiModelProperty(value = "设备类型") + @TableField("DEVICE_TYPE") + private String deviceType; + + /** + * 设备批次 + */ + @ApiModelProperty(value = "设备批次") + @TableField("DEVICE_BATCH") + private String deviceBatch; + + /** + * 厂家 + */ + @ApiModelProperty(value = "厂家") + @TableField("MANUFACTURER") + private String manufacturer; + + /** + * 是否供电 + */ + @ApiModelProperty(value = "是否供电") + @TableField("IS_POWER_SUPPLY") + private String isPowerSupply; + + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间",dataType = "Date") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty(value = "设备类型名称") + @TableField(exist = false) + private String deviceTypeName; + + @ApiModelProperty(value = "是否供电名称") + @TableField(exist = false) + private String isPowerSupplyName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", deviceCode=" + deviceCode + + ", deviceType=" + deviceType + + ", deviceBatch=" + deviceBatch + + ", manufacturer=" + manufacturer + + ", isPowerSupply=" + isPowerSupply + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java new file mode 100644 index 0000000..5ee7015 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java @@ -0,0 +1,99 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 设备扩展信息表(安全树) + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Data +@TableName("br_device_ext") +public class DeviceExt implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 摄像头编号 + */ + @TableField("CAMERA_CODE") + private String cameraCode; + + /** + * 摄像头IP + */ + @TableField("CAMERA_IP") + private String cameraIp; + + /** + * 摄像头端口 + */ + @TableField("CAMERA_PORT") + private String cameraPort; + + /** + * 激甲编号 + */ + @TableField("GAS_CODE") + private String gasCode; + + /** + * 激甲IP + */ + @TableField("GAS_IP") + private String gasIp; + + /** + * 激甲端口 + */ + @TableField("GAS_PORT") + private String gasPort; + + /** + * 甲烷报警阈值 + */ + @TableField("GAS_THRESHOLD") + private String gasThreshold; + + @TableField(value = "HAT_LINING_CODE") + private String hatLiningCode; + + + @Override + public String toString() { + return "DeviceExt{" + + "id=" + id + + ", deviceId=" + deviceId + + ", cameraCode=" + cameraCode + + ", cameraIp=" + cameraIp + + ", cameraPort=" + cameraPort + + ", gasCode=" + gasCode + + ", gasIp=" + gasIp + + ", gasPort=" + gasPort + + ", gasThreshold=" + gasThreshold + + ", hatLiningCode=" + hatLiningCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java new file mode 100644 index 0000000..c4f3472 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java @@ -0,0 +1,62 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Data +@ApiModel("ProjectDevice") +@TableName("br_project_device") +public class ProjectDevice implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + @ApiModelProperty("设备ID(新增编辑时传)") + private Long deviceId; + + /** + * 设备编号 + */ + @TableField(exist = false) + @ApiModelProperty("设备编号(详情中展示,新增编辑不用传)") + private String deviceCode; + + @Override + public String toString() { + return "ProjectDevice{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java new file mode 100644 index 0000000..10b23c4 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java @@ -0,0 +1,104 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("ProjectWorker") +@TableName("br_project_worker") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ProjectWorker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 人员ID + */ + @ApiModelProperty("人员ID") + @TableField("WORKER_ID") + private Long workerId; + + /** + * 安全帽编号 + */ + @ApiModelProperty("安全帽编号") + @TableField("HAT_CODE") + private String hatCode; + + /** + * 背心编号 + */ + @ApiModelProperty("背心编号") + @TableField("VAST_CODE") + private String vastCode; + + /** + * 手环编号 + */ + @ApiModelProperty("手环编号") + @TableField("BRACELET_CODE") + private String braceletCode; + + @ApiModelProperty("人员姓名(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerName; + + @ApiModelProperty("人员部门ID(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptId; + + @ApiModelProperty("人员部门名称(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptName; + + @ApiModelProperty("人员联系方式(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerPhoneNumber; + + public ProjectWorker(Long projectId, Long workerId) { + this.projectId = projectId; + this.workerId = workerId; + } + + @Override + public String toString() { + return "ProjectWorker{" + + "id=" + id + + ", projectId=" + projectId + + ", workerId=" + workerId + + ", hatCode=" + hatCode + + ", vastCode=" + vastCode + + ", braceletCode=" + braceletCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java new file mode 100644 index 0000000..fa6f41d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 作业现场表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("WorkSiteInfo") +@TableName("br_work_site_info") +@Data +public class WorkSiteInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("作业现场ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业名称 + */ + @ApiModelProperty("作业名称") + @TableField("WORK_TITLE") + private String workTitle; + + /** + * 责任人 + */ + @ApiModelProperty("责任人(人员ID)") + @TableField("WORK_PERSON") + private Long workPerson; + + /** + * 作业描述 + */ + @ApiModelProperty("作业描述") + @TableField("WORK_SITE_DESC") + private String workSiteDesc; + + /** + * 作业状态 + */ + @ApiModelProperty("作业状态") + @TableField("PROJECT_STATE") + private String projectState; + + /** + * 所属道路 + */ + @ApiModelProperty("所属道路") + @TableField("WORK_ROAD") + private String workRoad; + + @TableField("IMAGE_URL") + private String imageUrl; + + @TableField("CREATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + @TableField("UPDATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("FINISH_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + @ApiModelProperty("负责人姓名(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonName; + + @ApiModelProperty("负责人联系方式(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonPhoneNumber; + + @ApiModelProperty("负责人所属部门ID(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private Long workPersonDeptId; + + @ApiModelProperty("负责人所属部门名称(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonDeptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + + @Override + public String toString() { + return "WorkSiteInfo{" + + "id=" + id + + ", workTitle=" + workTitle + + ", workPerson=" + workPerson + + ", workSiteDesc=" + workSiteDesc + + ", projectState=" + projectState + + ", imageUrl=" + imageUrl + + ", updateTime=" + updateTime + + ", workRoad=" + workRoad + + "}"; + } +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java new file mode 100644 index 0000000..73d7799 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.dto; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "AlarmUpload",description = "报警上传") +@Data +public class AlarmUpload { + + @ApiModelProperty(value = "摄像头ip") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + @ApiModelProperty(value = "安全树甲烷设备ip") + private String gasIp; + @ApiModelProperty(value = "安全树甲烷设备端口") + private String gasPort; + @ApiModelProperty(value = "报警值") + private String alarmValue; + @ApiModelProperty(value = "报警时间") + private String alarmTime; + @ApiModelProperty(value = "报警类型") + private String alarmType; + @ApiModelProperty(value = "报警图片") + private String alarmImage; + @ApiModelProperty(value = "报警内容") + private String alarmContent; + + @Override + public String toString() { + return "AlarmUpload{" + + "cameraIp='" + cameraIp + '\'' + + ", cameraPort='" + cameraPort + '\'' + + ", gasIp='" + gasIp + '\'' + + ", gasPort='" + gasPort + '\'' + + ", alarmValue='" + alarmValue + '\'' + + ", alarmTime='" + alarmTime + '\'' + + ", alarmType='" + alarmType + '\'' + + ", alarmImage='" + (StrUtil.isNotEmpty(alarmImage) ? alarmImage.substring(0,50) : "null") + '\'' + + ", alarmContent='" + alarmContent + '\'' + + '}'; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java new file mode 100644 index 0000000..ea518d9 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.modular.system.entity.Device; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("DeviceDetailDTO") +@Data +public class DeviceDetailDTO extends Device { + + @ApiModelProperty(value = "摄像头编号") + private String cameraCode; + + @ApiModelProperty(value = "摄像头IP") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + + @ApiModelProperty(value = "激甲编号") + private String gasCode; + + @ApiModelProperty(value = "激甲IP") + private String gasIp; + + @ApiModelProperty(value = "激甲端口") + private String gasPort; + + @ApiModelProperty(value = "智能帽衬编号") + private String hatLiningCode; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java new file mode 100644 index 0000000..29378ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("WorkSiteDetailDTO") +public class WorkSiteDetailDTO extends WorkSiteInfo { + + @ApiModelProperty(value = "安全树列表",dataType = "ProjectDevice") + private List deviceList; + + @ApiModelProperty(value = "人员列表",dataType = "ProjectWorker") + private List workerList; + + + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java new file mode 100644 index 0000000..6fd7b24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java @@ -0,0 +1,68 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "WorkerLocationDTO",description = "人员位置列表(首页)") +@Data +public class WorkerLocationDTO { + + @ApiModelProperty("人员ID") + private Long workerId; + + @ApiModelProperty("人员姓名") + private String workerName; + + @ApiModelProperty("安全帽编号") + private String hatCode; + + @ApiModelProperty("安全帽ID") + private Long hatId; + + @ApiModelProperty("背心编号") + private String vastCode; + + @ApiModelProperty("手环编号") + private String braceletCode; + + @ApiModelProperty("位置") + private String location; + + @ApiModelProperty("时间") + private String time; + + @ApiModelProperty("经度") + private String lng; + + @ApiModelProperty("纬度") + private String lat; + + @ApiModelProperty("心率") + private String heartRate; + + @ApiModelProperty("血氧") + private String bloodOxygen; + + @ApiModelProperty("一氧化碳") + private String co; + + @ApiModelProperty("甲烷") + private String gas; + + @ApiModelProperty("硫化氢") + private String h2s; + + @ApiModelProperty("氧气") + private String o2; + + @ApiModelProperty("信号") + private String signal; + + @ApiModelProperty("电量") + private String cell; + + @ApiModelProperty("是否报警") + private boolean alarmFlag; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java new file mode 100644 index 0000000..efb4a23 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java @@ -0,0 +1,159 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 报警记录表 + *

+ * + * @author zyj + * @since 2023-05-16 + */ +@Data +@ApiModel("Alarm") +@TableName("br_bus_alarm") +public class BusAlarm implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @ApiModelProperty(value = "设备ID") + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 报警类型 + */ + @ApiModelProperty(value = "报警类型") + @TableField("ALARM_TYPE") + private String alarmType; + + /** + * 报警状态 + */ + @ApiModelProperty(value = "报警状态") + @TableField("ALARM_STATUS") + private String alarmStatus; + + /** + * 报警值 + */ + @ApiModelProperty(value = "报警值") + @TableField("ALARM_VALUE") + private String alarmValue; + + /** + * 报警图片 + */ + @ApiModelProperty(value = "报警图片") + @TableField("ALARM_IMAGE") + private String alarmImage; + + /** + * 报警内容 + */ + @ApiModelProperty(value = "报警内容") + @TableField("ALARM_CONTENT") + private String alarmContent; + + /** + * 报警时间 + */ + @ApiModelProperty(value = "报警时间") + @TableField("ALARM_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date alarmTime; + + /** + * 消警时间 + */ + @ApiModelProperty(value = "消警时间") + @TableField("CANCEL_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + /** + * 报警位置经度 + */ + @ApiModelProperty(value = "报警位置经度") + @TableField("ALARM_LNG") + private String alarmLng; + + /** + * 报警位置纬度 + */ + @ApiModelProperty(value = "报警位置纬度") + @TableField("ALARM_LAT") + private String alarmLat; + + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmStatusName; + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmTypeName; + @ApiModelProperty("作业名称") + @TableField(exist = false) + private String workTitle; + @ApiModelProperty("所属道路") + @TableField(exist = false) + private String workRoad; + @ApiModelProperty("作业状态") + @TableField(exist = false) + private String projectState; + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + @ApiModelProperty("负责人姓名") + @TableField(exist = false) + private String workPersonName; + @ApiModelProperty("负责人联系方式") + @TableField(exist = false) + private String workPersonPhoneNumber; + + + @Override + public String toString() { + return "BusAlarm{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + ", alarmType=" + alarmType + + ", alarmValue=" + alarmValue + + ", alarmStatus=" + alarmStatus + + ", alarmImage=" + alarmImage + + ", alarmContent=" + alarmContent + + ", alarmTime=" + alarmTime + + ", cancelTime=" + cancelTime + + ", alarmLng=" + alarmLng + + ", alarmLat=" + alarmLat + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java new file mode 100644 index 0000000..a0b7543 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + *

+ * 事件表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event") +@Data +@ApiModel("BusEvent") +public class BusEvent implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("事件ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件标题 + */ + @ApiModelProperty("事件名称") + @TableField("EVENT_TITLE") + private String eventTitle; + + /** + * 上报人员 + */ + @ApiModelProperty("上报人员") + @TableField("UPLOAD_NAME") + private String uploadName; + + /** + * 联系方式 + */ + @ApiModelProperty("联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 事件描述 + */ + @ApiModelProperty("事件描述") + @TableField("EVENT_DESCRIPTION") + private String eventDescription; + + @ApiModelProperty("经度") + @TableField("LNG") + private String lng; + + @ApiModelProperty("纬度") + @TableField("LAT") + private String lat; + + /** + * 事件上传时间 + */ + @ApiModelProperty("事件上传时间") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty("事件照片") + @TableField(exist = false) + private List imageList; + + + + @Override + public String toString() { + return "BusEvent{" + + "id=" + id + + ", eventTitle=" + eventTitle + + ", uploadName=" + uploadName + + ", phoneNumber=" + phoneNumber + + ", eventDescription=" + eventDescription + + ", lng=" + lng + + ", lat=" + lat + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java new file mode 100644 index 0000000..1e75245 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 事件图片表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event_image") +@Data +@ApiModel("BusEventImage") +public class BusEventImage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件ID + */ + @TableField("EVENT_ID") + private Long eventId; + + /** + * 报警图片 + */ + @TableField("IMAGE") + @ApiModelProperty("图片url") + private String image; + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java new file mode 100644 index 0000000..df89c70 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.core.base.json.DateDeserializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Device") +@TableName("br_device") +@Data +public class Device implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "设备ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty(value = "设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + /** + * 设备类型 + */ + @ApiModelProperty(value = "设备类型") + @TableField("DEVICE_TYPE") + private String deviceType; + + /** + * 设备批次 + */ + @ApiModelProperty(value = "设备批次") + @TableField("DEVICE_BATCH") + private String deviceBatch; + + /** + * 厂家 + */ + @ApiModelProperty(value = "厂家") + @TableField("MANUFACTURER") + private String manufacturer; + + /** + * 是否供电 + */ + @ApiModelProperty(value = "是否供电") + @TableField("IS_POWER_SUPPLY") + private String isPowerSupply; + + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间",dataType = "Date") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty(value = "设备类型名称") + @TableField(exist = false) + private String deviceTypeName; + + @ApiModelProperty(value = "是否供电名称") + @TableField(exist = false) + private String isPowerSupplyName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", deviceCode=" + deviceCode + + ", deviceType=" + deviceType + + ", deviceBatch=" + deviceBatch + + ", manufacturer=" + manufacturer + + ", isPowerSupply=" + isPowerSupply + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java new file mode 100644 index 0000000..5ee7015 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java @@ -0,0 +1,99 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 设备扩展信息表(安全树) + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Data +@TableName("br_device_ext") +public class DeviceExt implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 摄像头编号 + */ + @TableField("CAMERA_CODE") + private String cameraCode; + + /** + * 摄像头IP + */ + @TableField("CAMERA_IP") + private String cameraIp; + + /** + * 摄像头端口 + */ + @TableField("CAMERA_PORT") + private String cameraPort; + + /** + * 激甲编号 + */ + @TableField("GAS_CODE") + private String gasCode; + + /** + * 激甲IP + */ + @TableField("GAS_IP") + private String gasIp; + + /** + * 激甲端口 + */ + @TableField("GAS_PORT") + private String gasPort; + + /** + * 甲烷报警阈值 + */ + @TableField("GAS_THRESHOLD") + private String gasThreshold; + + @TableField(value = "HAT_LINING_CODE") + private String hatLiningCode; + + + @Override + public String toString() { + return "DeviceExt{" + + "id=" + id + + ", deviceId=" + deviceId + + ", cameraCode=" + cameraCode + + ", cameraIp=" + cameraIp + + ", cameraPort=" + cameraPort + + ", gasCode=" + gasCode + + ", gasIp=" + gasIp + + ", gasPort=" + gasPort + + ", gasThreshold=" + gasThreshold + + ", hatLiningCode=" + hatLiningCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java new file mode 100644 index 0000000..c4f3472 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java @@ -0,0 +1,62 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Data +@ApiModel("ProjectDevice") +@TableName("br_project_device") +public class ProjectDevice implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + @ApiModelProperty("设备ID(新增编辑时传)") + private Long deviceId; + + /** + * 设备编号 + */ + @TableField(exist = false) + @ApiModelProperty("设备编号(详情中展示,新增编辑不用传)") + private String deviceCode; + + @Override + public String toString() { + return "ProjectDevice{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java new file mode 100644 index 0000000..10b23c4 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java @@ -0,0 +1,104 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("ProjectWorker") +@TableName("br_project_worker") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ProjectWorker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 人员ID + */ + @ApiModelProperty("人员ID") + @TableField("WORKER_ID") + private Long workerId; + + /** + * 安全帽编号 + */ + @ApiModelProperty("安全帽编号") + @TableField("HAT_CODE") + private String hatCode; + + /** + * 背心编号 + */ + @ApiModelProperty("背心编号") + @TableField("VAST_CODE") + private String vastCode; + + /** + * 手环编号 + */ + @ApiModelProperty("手环编号") + @TableField("BRACELET_CODE") + private String braceletCode; + + @ApiModelProperty("人员姓名(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerName; + + @ApiModelProperty("人员部门ID(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptId; + + @ApiModelProperty("人员部门名称(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptName; + + @ApiModelProperty("人员联系方式(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerPhoneNumber; + + public ProjectWorker(Long projectId, Long workerId) { + this.projectId = projectId; + this.workerId = workerId; + } + + @Override + public String toString() { + return "ProjectWorker{" + + "id=" + id + + ", projectId=" + projectId + + ", workerId=" + workerId + + ", hatCode=" + hatCode + + ", vastCode=" + vastCode + + ", braceletCode=" + braceletCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java new file mode 100644 index 0000000..fa6f41d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 作业现场表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("WorkSiteInfo") +@TableName("br_work_site_info") +@Data +public class WorkSiteInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("作业现场ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业名称 + */ + @ApiModelProperty("作业名称") + @TableField("WORK_TITLE") + private String workTitle; + + /** + * 责任人 + */ + @ApiModelProperty("责任人(人员ID)") + @TableField("WORK_PERSON") + private Long workPerson; + + /** + * 作业描述 + */ + @ApiModelProperty("作业描述") + @TableField("WORK_SITE_DESC") + private String workSiteDesc; + + /** + * 作业状态 + */ + @ApiModelProperty("作业状态") + @TableField("PROJECT_STATE") + private String projectState; + + /** + * 所属道路 + */ + @ApiModelProperty("所属道路") + @TableField("WORK_ROAD") + private String workRoad; + + @TableField("IMAGE_URL") + private String imageUrl; + + @TableField("CREATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + @TableField("UPDATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("FINISH_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + @ApiModelProperty("负责人姓名(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonName; + + @ApiModelProperty("负责人联系方式(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonPhoneNumber; + + @ApiModelProperty("负责人所属部门ID(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private Long workPersonDeptId; + + @ApiModelProperty("负责人所属部门名称(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonDeptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + + @Override + public String toString() { + return "WorkSiteInfo{" + + "id=" + id + + ", workTitle=" + workTitle + + ", workPerson=" + workPerson + + ", workSiteDesc=" + workSiteDesc + + ", projectState=" + projectState + + ", imageUrl=" + imageUrl + + ", updateTime=" + updateTime + + ", workRoad=" + workRoad + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java new file mode 100644 index 0000000..28a4daa --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java @@ -0,0 +1,147 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Worker") +@TableName("br_worker") +@Data +public class Worker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "人员ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 姓名 + */ + @ApiModelProperty(value = "姓名") + @TableField("WORKER_NAME") + private String workerName; + + /** + * 性别 + */ + @ApiModelProperty(value = "性别") + @TableField("GENDER") + private String gender; + + /** + * 所属部门 + */ + @ApiModelProperty(value = "所属部门(人员管理)") + @TableField("DEPT_ID") + private Long deptId; + + /** + * 所属单位 + */ + @ApiModelProperty(value = "所属单位(入场申请中使用)") + @TableField("OWNER_SHIP") + private String ownerShip; + + /** + * 联系方式 + */ + @ApiModelProperty(value = "联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 证件号 + */ + @ApiModelProperty(value = "证件号") + @TableField("ID_CARD_NUMBER") + private String idCardNumber; + + /** + * 入场原因 + */ + @ApiModelProperty(value = "入场原因(入场申请中使用)") + @TableField("ENTER_REASON") + private String enterReason; + + /** + * 入场人脸照片 + */ + @ApiModelProperty(value = "人脸照片(照片路径)") + @TableField("WORKER_AVATAR") + private String workerAvatar; + + /** + * 申请入场时间 + */ + @ApiModelProperty(value = "注册时间/申请入场时间") + @TableField("CREATE_TIME") + private Date createTime; + + /** + * 人员类型 + */ + @ApiModelProperty(value = "人员类型(区分人员管理和入场申请)") + @TableField("WORKER_TYPE") + private String workerType; + + @ApiModelProperty(value = "性别名称") + @TableField(exist = false) + private String genderName; + + @ApiModelProperty(value = "部门名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @ApiModelProperty(value = "是否注册(0未注册;1已注册)",allowableValues = "0,1") + @TableField(exist = false) + private String isRegister; + + @Override + public String toString() { + return "Worker{" + + "id=" + id + + ", workerName=" + workerName + + ", gender=" + gender + + ", deptId=" + deptId + + ", ownerShip=" + ownerShip + + ", phoneNumber=" + phoneNumber + + ", idCardNumber=" + idCardNumber + + ", enterReason=" + enterReason + + ", workerAvatar=" + workerAvatar + + ", createTime=" + createTime + + ", workerType=" + workerType + + "}"; + } +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java new file mode 100644 index 0000000..73d7799 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.dto; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "AlarmUpload",description = "报警上传") +@Data +public class AlarmUpload { + + @ApiModelProperty(value = "摄像头ip") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + @ApiModelProperty(value = "安全树甲烷设备ip") + private String gasIp; + @ApiModelProperty(value = "安全树甲烷设备端口") + private String gasPort; + @ApiModelProperty(value = "报警值") + private String alarmValue; + @ApiModelProperty(value = "报警时间") + private String alarmTime; + @ApiModelProperty(value = "报警类型") + private String alarmType; + @ApiModelProperty(value = "报警图片") + private String alarmImage; + @ApiModelProperty(value = "报警内容") + private String alarmContent; + + @Override + public String toString() { + return "AlarmUpload{" + + "cameraIp='" + cameraIp + '\'' + + ", cameraPort='" + cameraPort + '\'' + + ", gasIp='" + gasIp + '\'' + + ", gasPort='" + gasPort + '\'' + + ", alarmValue='" + alarmValue + '\'' + + ", alarmTime='" + alarmTime + '\'' + + ", alarmType='" + alarmType + '\'' + + ", alarmImage='" + (StrUtil.isNotEmpty(alarmImage) ? alarmImage.substring(0,50) : "null") + '\'' + + ", alarmContent='" + alarmContent + '\'' + + '}'; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java new file mode 100644 index 0000000..ea518d9 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.modular.system.entity.Device; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("DeviceDetailDTO") +@Data +public class DeviceDetailDTO extends Device { + + @ApiModelProperty(value = "摄像头编号") + private String cameraCode; + + @ApiModelProperty(value = "摄像头IP") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + + @ApiModelProperty(value = "激甲编号") + private String gasCode; + + @ApiModelProperty(value = "激甲IP") + private String gasIp; + + @ApiModelProperty(value = "激甲端口") + private String gasPort; + + @ApiModelProperty(value = "智能帽衬编号") + private String hatLiningCode; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java new file mode 100644 index 0000000..29378ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("WorkSiteDetailDTO") +public class WorkSiteDetailDTO extends WorkSiteInfo { + + @ApiModelProperty(value = "安全树列表",dataType = "ProjectDevice") + private List deviceList; + + @ApiModelProperty(value = "人员列表",dataType = "ProjectWorker") + private List workerList; + + + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java new file mode 100644 index 0000000..6fd7b24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java @@ -0,0 +1,68 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "WorkerLocationDTO",description = "人员位置列表(首页)") +@Data +public class WorkerLocationDTO { + + @ApiModelProperty("人员ID") + private Long workerId; + + @ApiModelProperty("人员姓名") + private String workerName; + + @ApiModelProperty("安全帽编号") + private String hatCode; + + @ApiModelProperty("安全帽ID") + private Long hatId; + + @ApiModelProperty("背心编号") + private String vastCode; + + @ApiModelProperty("手环编号") + private String braceletCode; + + @ApiModelProperty("位置") + private String location; + + @ApiModelProperty("时间") + private String time; + + @ApiModelProperty("经度") + private String lng; + + @ApiModelProperty("纬度") + private String lat; + + @ApiModelProperty("心率") + private String heartRate; + + @ApiModelProperty("血氧") + private String bloodOxygen; + + @ApiModelProperty("一氧化碳") + private String co; + + @ApiModelProperty("甲烷") + private String gas; + + @ApiModelProperty("硫化氢") + private String h2s; + + @ApiModelProperty("氧气") + private String o2; + + @ApiModelProperty("信号") + private String signal; + + @ApiModelProperty("电量") + private String cell; + + @ApiModelProperty("是否报警") + private boolean alarmFlag; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java new file mode 100644 index 0000000..efb4a23 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java @@ -0,0 +1,159 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 报警记录表 + *

+ * + * @author zyj + * @since 2023-05-16 + */ +@Data +@ApiModel("Alarm") +@TableName("br_bus_alarm") +public class BusAlarm implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @ApiModelProperty(value = "设备ID") + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 报警类型 + */ + @ApiModelProperty(value = "报警类型") + @TableField("ALARM_TYPE") + private String alarmType; + + /** + * 报警状态 + */ + @ApiModelProperty(value = "报警状态") + @TableField("ALARM_STATUS") + private String alarmStatus; + + /** + * 报警值 + */ + @ApiModelProperty(value = "报警值") + @TableField("ALARM_VALUE") + private String alarmValue; + + /** + * 报警图片 + */ + @ApiModelProperty(value = "报警图片") + @TableField("ALARM_IMAGE") + private String alarmImage; + + /** + * 报警内容 + */ + @ApiModelProperty(value = "报警内容") + @TableField("ALARM_CONTENT") + private String alarmContent; + + /** + * 报警时间 + */ + @ApiModelProperty(value = "报警时间") + @TableField("ALARM_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date alarmTime; + + /** + * 消警时间 + */ + @ApiModelProperty(value = "消警时间") + @TableField("CANCEL_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + /** + * 报警位置经度 + */ + @ApiModelProperty(value = "报警位置经度") + @TableField("ALARM_LNG") + private String alarmLng; + + /** + * 报警位置纬度 + */ + @ApiModelProperty(value = "报警位置纬度") + @TableField("ALARM_LAT") + private String alarmLat; + + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmStatusName; + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmTypeName; + @ApiModelProperty("作业名称") + @TableField(exist = false) + private String workTitle; + @ApiModelProperty("所属道路") + @TableField(exist = false) + private String workRoad; + @ApiModelProperty("作业状态") + @TableField(exist = false) + private String projectState; + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + @ApiModelProperty("负责人姓名") + @TableField(exist = false) + private String workPersonName; + @ApiModelProperty("负责人联系方式") + @TableField(exist = false) + private String workPersonPhoneNumber; + + + @Override + public String toString() { + return "BusAlarm{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + ", alarmType=" + alarmType + + ", alarmValue=" + alarmValue + + ", alarmStatus=" + alarmStatus + + ", alarmImage=" + alarmImage + + ", alarmContent=" + alarmContent + + ", alarmTime=" + alarmTime + + ", cancelTime=" + cancelTime + + ", alarmLng=" + alarmLng + + ", alarmLat=" + alarmLat + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java new file mode 100644 index 0000000..a0b7543 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + *

+ * 事件表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event") +@Data +@ApiModel("BusEvent") +public class BusEvent implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("事件ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件标题 + */ + @ApiModelProperty("事件名称") + @TableField("EVENT_TITLE") + private String eventTitle; + + /** + * 上报人员 + */ + @ApiModelProperty("上报人员") + @TableField("UPLOAD_NAME") + private String uploadName; + + /** + * 联系方式 + */ + @ApiModelProperty("联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 事件描述 + */ + @ApiModelProperty("事件描述") + @TableField("EVENT_DESCRIPTION") + private String eventDescription; + + @ApiModelProperty("经度") + @TableField("LNG") + private String lng; + + @ApiModelProperty("纬度") + @TableField("LAT") + private String lat; + + /** + * 事件上传时间 + */ + @ApiModelProperty("事件上传时间") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty("事件照片") + @TableField(exist = false) + private List imageList; + + + + @Override + public String toString() { + return "BusEvent{" + + "id=" + id + + ", eventTitle=" + eventTitle + + ", uploadName=" + uploadName + + ", phoneNumber=" + phoneNumber + + ", eventDescription=" + eventDescription + + ", lng=" + lng + + ", lat=" + lat + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java new file mode 100644 index 0000000..1e75245 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 事件图片表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event_image") +@Data +@ApiModel("BusEventImage") +public class BusEventImage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件ID + */ + @TableField("EVENT_ID") + private Long eventId; + + /** + * 报警图片 + */ + @TableField("IMAGE") + @ApiModelProperty("图片url") + private String image; + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java new file mode 100644 index 0000000..df89c70 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.core.base.json.DateDeserializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Device") +@TableName("br_device") +@Data +public class Device implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "设备ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty(value = "设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + /** + * 设备类型 + */ + @ApiModelProperty(value = "设备类型") + @TableField("DEVICE_TYPE") + private String deviceType; + + /** + * 设备批次 + */ + @ApiModelProperty(value = "设备批次") + @TableField("DEVICE_BATCH") + private String deviceBatch; + + /** + * 厂家 + */ + @ApiModelProperty(value = "厂家") + @TableField("MANUFACTURER") + private String manufacturer; + + /** + * 是否供电 + */ + @ApiModelProperty(value = "是否供电") + @TableField("IS_POWER_SUPPLY") + private String isPowerSupply; + + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间",dataType = "Date") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty(value = "设备类型名称") + @TableField(exist = false) + private String deviceTypeName; + + @ApiModelProperty(value = "是否供电名称") + @TableField(exist = false) + private String isPowerSupplyName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", deviceCode=" + deviceCode + + ", deviceType=" + deviceType + + ", deviceBatch=" + deviceBatch + + ", manufacturer=" + manufacturer + + ", isPowerSupply=" + isPowerSupply + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java new file mode 100644 index 0000000..5ee7015 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java @@ -0,0 +1,99 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 设备扩展信息表(安全树) + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Data +@TableName("br_device_ext") +public class DeviceExt implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 摄像头编号 + */ + @TableField("CAMERA_CODE") + private String cameraCode; + + /** + * 摄像头IP + */ + @TableField("CAMERA_IP") + private String cameraIp; + + /** + * 摄像头端口 + */ + @TableField("CAMERA_PORT") + private String cameraPort; + + /** + * 激甲编号 + */ + @TableField("GAS_CODE") + private String gasCode; + + /** + * 激甲IP + */ + @TableField("GAS_IP") + private String gasIp; + + /** + * 激甲端口 + */ + @TableField("GAS_PORT") + private String gasPort; + + /** + * 甲烷报警阈值 + */ + @TableField("GAS_THRESHOLD") + private String gasThreshold; + + @TableField(value = "HAT_LINING_CODE") + private String hatLiningCode; + + + @Override + public String toString() { + return "DeviceExt{" + + "id=" + id + + ", deviceId=" + deviceId + + ", cameraCode=" + cameraCode + + ", cameraIp=" + cameraIp + + ", cameraPort=" + cameraPort + + ", gasCode=" + gasCode + + ", gasIp=" + gasIp + + ", gasPort=" + gasPort + + ", gasThreshold=" + gasThreshold + + ", hatLiningCode=" + hatLiningCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java new file mode 100644 index 0000000..c4f3472 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java @@ -0,0 +1,62 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Data +@ApiModel("ProjectDevice") +@TableName("br_project_device") +public class ProjectDevice implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + @ApiModelProperty("设备ID(新增编辑时传)") + private Long deviceId; + + /** + * 设备编号 + */ + @TableField(exist = false) + @ApiModelProperty("设备编号(详情中展示,新增编辑不用传)") + private String deviceCode; + + @Override + public String toString() { + return "ProjectDevice{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java new file mode 100644 index 0000000..10b23c4 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java @@ -0,0 +1,104 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("ProjectWorker") +@TableName("br_project_worker") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ProjectWorker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 人员ID + */ + @ApiModelProperty("人员ID") + @TableField("WORKER_ID") + private Long workerId; + + /** + * 安全帽编号 + */ + @ApiModelProperty("安全帽编号") + @TableField("HAT_CODE") + private String hatCode; + + /** + * 背心编号 + */ + @ApiModelProperty("背心编号") + @TableField("VAST_CODE") + private String vastCode; + + /** + * 手环编号 + */ + @ApiModelProperty("手环编号") + @TableField("BRACELET_CODE") + private String braceletCode; + + @ApiModelProperty("人员姓名(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerName; + + @ApiModelProperty("人员部门ID(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptId; + + @ApiModelProperty("人员部门名称(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptName; + + @ApiModelProperty("人员联系方式(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerPhoneNumber; + + public ProjectWorker(Long projectId, Long workerId) { + this.projectId = projectId; + this.workerId = workerId; + } + + @Override + public String toString() { + return "ProjectWorker{" + + "id=" + id + + ", projectId=" + projectId + + ", workerId=" + workerId + + ", hatCode=" + hatCode + + ", vastCode=" + vastCode + + ", braceletCode=" + braceletCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java new file mode 100644 index 0000000..fa6f41d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 作业现场表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("WorkSiteInfo") +@TableName("br_work_site_info") +@Data +public class WorkSiteInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("作业现场ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业名称 + */ + @ApiModelProperty("作业名称") + @TableField("WORK_TITLE") + private String workTitle; + + /** + * 责任人 + */ + @ApiModelProperty("责任人(人员ID)") + @TableField("WORK_PERSON") + private Long workPerson; + + /** + * 作业描述 + */ + @ApiModelProperty("作业描述") + @TableField("WORK_SITE_DESC") + private String workSiteDesc; + + /** + * 作业状态 + */ + @ApiModelProperty("作业状态") + @TableField("PROJECT_STATE") + private String projectState; + + /** + * 所属道路 + */ + @ApiModelProperty("所属道路") + @TableField("WORK_ROAD") + private String workRoad; + + @TableField("IMAGE_URL") + private String imageUrl; + + @TableField("CREATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + @TableField("UPDATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("FINISH_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + @ApiModelProperty("负责人姓名(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonName; + + @ApiModelProperty("负责人联系方式(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonPhoneNumber; + + @ApiModelProperty("负责人所属部门ID(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private Long workPersonDeptId; + + @ApiModelProperty("负责人所属部门名称(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonDeptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + + @Override + public String toString() { + return "WorkSiteInfo{" + + "id=" + id + + ", workTitle=" + workTitle + + ", workPerson=" + workPerson + + ", workSiteDesc=" + workSiteDesc + + ", projectState=" + projectState + + ", imageUrl=" + imageUrl + + ", updateTime=" + updateTime + + ", workRoad=" + workRoad + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java new file mode 100644 index 0000000..28a4daa --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java @@ -0,0 +1,147 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Worker") +@TableName("br_worker") +@Data +public class Worker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "人员ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 姓名 + */ + @ApiModelProperty(value = "姓名") + @TableField("WORKER_NAME") + private String workerName; + + /** + * 性别 + */ + @ApiModelProperty(value = "性别") + @TableField("GENDER") + private String gender; + + /** + * 所属部门 + */ + @ApiModelProperty(value = "所属部门(人员管理)") + @TableField("DEPT_ID") + private Long deptId; + + /** + * 所属单位 + */ + @ApiModelProperty(value = "所属单位(入场申请中使用)") + @TableField("OWNER_SHIP") + private String ownerShip; + + /** + * 联系方式 + */ + @ApiModelProperty(value = "联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 证件号 + */ + @ApiModelProperty(value = "证件号") + @TableField("ID_CARD_NUMBER") + private String idCardNumber; + + /** + * 入场原因 + */ + @ApiModelProperty(value = "入场原因(入场申请中使用)") + @TableField("ENTER_REASON") + private String enterReason; + + /** + * 入场人脸照片 + */ + @ApiModelProperty(value = "人脸照片(照片路径)") + @TableField("WORKER_AVATAR") + private String workerAvatar; + + /** + * 申请入场时间 + */ + @ApiModelProperty(value = "注册时间/申请入场时间") + @TableField("CREATE_TIME") + private Date createTime; + + /** + * 人员类型 + */ + @ApiModelProperty(value = "人员类型(区分人员管理和入场申请)") + @TableField("WORKER_TYPE") + private String workerType; + + @ApiModelProperty(value = "性别名称") + @TableField(exist = false) + private String genderName; + + @ApiModelProperty(value = "部门名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @ApiModelProperty(value = "是否注册(0未注册;1已注册)",allowableValues = "0,1") + @TableField(exist = false) + private String isRegister; + + @Override + public String toString() { + return "Worker{" + + "id=" + id + + ", workerName=" + workerName + + ", gender=" + gender + + ", deptId=" + deptId + + ", ownerShip=" + ownerShip + + ", phoneNumber=" + phoneNumber + + ", idCardNumber=" + idCardNumber + + ", enterReason=" + enterReason + + ", workerAvatar=" + workerAvatar + + ", createTime=" + createTime + + ", workerType=" + workerType + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java new file mode 100644 index 0000000..9801742 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警记录表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusAlarmMapper extends BaseMapper { + + Page listPage(Page page,@Param("ew") QueryWrapper queryWrapper); + + void cancelAlarm(@Param("deviceId")Long deviceId,@Param("alarmType") String alarmType); + + List alarmCount(@Param("projectId")Long projectId, @Param("alarmStatus")String alarmStatus); +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java new file mode 100644 index 0000000..73d7799 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.dto; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "AlarmUpload",description = "报警上传") +@Data +public class AlarmUpload { + + @ApiModelProperty(value = "摄像头ip") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + @ApiModelProperty(value = "安全树甲烷设备ip") + private String gasIp; + @ApiModelProperty(value = "安全树甲烷设备端口") + private String gasPort; + @ApiModelProperty(value = "报警值") + private String alarmValue; + @ApiModelProperty(value = "报警时间") + private String alarmTime; + @ApiModelProperty(value = "报警类型") + private String alarmType; + @ApiModelProperty(value = "报警图片") + private String alarmImage; + @ApiModelProperty(value = "报警内容") + private String alarmContent; + + @Override + public String toString() { + return "AlarmUpload{" + + "cameraIp='" + cameraIp + '\'' + + ", cameraPort='" + cameraPort + '\'' + + ", gasIp='" + gasIp + '\'' + + ", gasPort='" + gasPort + '\'' + + ", alarmValue='" + alarmValue + '\'' + + ", alarmTime='" + alarmTime + '\'' + + ", alarmType='" + alarmType + '\'' + + ", alarmImage='" + (StrUtil.isNotEmpty(alarmImage) ? alarmImage.substring(0,50) : "null") + '\'' + + ", alarmContent='" + alarmContent + '\'' + + '}'; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java new file mode 100644 index 0000000..ea518d9 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.modular.system.entity.Device; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("DeviceDetailDTO") +@Data +public class DeviceDetailDTO extends Device { + + @ApiModelProperty(value = "摄像头编号") + private String cameraCode; + + @ApiModelProperty(value = "摄像头IP") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + + @ApiModelProperty(value = "激甲编号") + private String gasCode; + + @ApiModelProperty(value = "激甲IP") + private String gasIp; + + @ApiModelProperty(value = "激甲端口") + private String gasPort; + + @ApiModelProperty(value = "智能帽衬编号") + private String hatLiningCode; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java new file mode 100644 index 0000000..29378ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("WorkSiteDetailDTO") +public class WorkSiteDetailDTO extends WorkSiteInfo { + + @ApiModelProperty(value = "安全树列表",dataType = "ProjectDevice") + private List deviceList; + + @ApiModelProperty(value = "人员列表",dataType = "ProjectWorker") + private List workerList; + + + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java new file mode 100644 index 0000000..6fd7b24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java @@ -0,0 +1,68 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "WorkerLocationDTO",description = "人员位置列表(首页)") +@Data +public class WorkerLocationDTO { + + @ApiModelProperty("人员ID") + private Long workerId; + + @ApiModelProperty("人员姓名") + private String workerName; + + @ApiModelProperty("安全帽编号") + private String hatCode; + + @ApiModelProperty("安全帽ID") + private Long hatId; + + @ApiModelProperty("背心编号") + private String vastCode; + + @ApiModelProperty("手环编号") + private String braceletCode; + + @ApiModelProperty("位置") + private String location; + + @ApiModelProperty("时间") + private String time; + + @ApiModelProperty("经度") + private String lng; + + @ApiModelProperty("纬度") + private String lat; + + @ApiModelProperty("心率") + private String heartRate; + + @ApiModelProperty("血氧") + private String bloodOxygen; + + @ApiModelProperty("一氧化碳") + private String co; + + @ApiModelProperty("甲烷") + private String gas; + + @ApiModelProperty("硫化氢") + private String h2s; + + @ApiModelProperty("氧气") + private String o2; + + @ApiModelProperty("信号") + private String signal; + + @ApiModelProperty("电量") + private String cell; + + @ApiModelProperty("是否报警") + private boolean alarmFlag; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java new file mode 100644 index 0000000..efb4a23 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java @@ -0,0 +1,159 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 报警记录表 + *

+ * + * @author zyj + * @since 2023-05-16 + */ +@Data +@ApiModel("Alarm") +@TableName("br_bus_alarm") +public class BusAlarm implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @ApiModelProperty(value = "设备ID") + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 报警类型 + */ + @ApiModelProperty(value = "报警类型") + @TableField("ALARM_TYPE") + private String alarmType; + + /** + * 报警状态 + */ + @ApiModelProperty(value = "报警状态") + @TableField("ALARM_STATUS") + private String alarmStatus; + + /** + * 报警值 + */ + @ApiModelProperty(value = "报警值") + @TableField("ALARM_VALUE") + private String alarmValue; + + /** + * 报警图片 + */ + @ApiModelProperty(value = "报警图片") + @TableField("ALARM_IMAGE") + private String alarmImage; + + /** + * 报警内容 + */ + @ApiModelProperty(value = "报警内容") + @TableField("ALARM_CONTENT") + private String alarmContent; + + /** + * 报警时间 + */ + @ApiModelProperty(value = "报警时间") + @TableField("ALARM_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date alarmTime; + + /** + * 消警时间 + */ + @ApiModelProperty(value = "消警时间") + @TableField("CANCEL_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + /** + * 报警位置经度 + */ + @ApiModelProperty(value = "报警位置经度") + @TableField("ALARM_LNG") + private String alarmLng; + + /** + * 报警位置纬度 + */ + @ApiModelProperty(value = "报警位置纬度") + @TableField("ALARM_LAT") + private String alarmLat; + + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmStatusName; + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmTypeName; + @ApiModelProperty("作业名称") + @TableField(exist = false) + private String workTitle; + @ApiModelProperty("所属道路") + @TableField(exist = false) + private String workRoad; + @ApiModelProperty("作业状态") + @TableField(exist = false) + private String projectState; + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + @ApiModelProperty("负责人姓名") + @TableField(exist = false) + private String workPersonName; + @ApiModelProperty("负责人联系方式") + @TableField(exist = false) + private String workPersonPhoneNumber; + + + @Override + public String toString() { + return "BusAlarm{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + ", alarmType=" + alarmType + + ", alarmValue=" + alarmValue + + ", alarmStatus=" + alarmStatus + + ", alarmImage=" + alarmImage + + ", alarmContent=" + alarmContent + + ", alarmTime=" + alarmTime + + ", cancelTime=" + cancelTime + + ", alarmLng=" + alarmLng + + ", alarmLat=" + alarmLat + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java new file mode 100644 index 0000000..a0b7543 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + *

+ * 事件表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event") +@Data +@ApiModel("BusEvent") +public class BusEvent implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("事件ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件标题 + */ + @ApiModelProperty("事件名称") + @TableField("EVENT_TITLE") + private String eventTitle; + + /** + * 上报人员 + */ + @ApiModelProperty("上报人员") + @TableField("UPLOAD_NAME") + private String uploadName; + + /** + * 联系方式 + */ + @ApiModelProperty("联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 事件描述 + */ + @ApiModelProperty("事件描述") + @TableField("EVENT_DESCRIPTION") + private String eventDescription; + + @ApiModelProperty("经度") + @TableField("LNG") + private String lng; + + @ApiModelProperty("纬度") + @TableField("LAT") + private String lat; + + /** + * 事件上传时间 + */ + @ApiModelProperty("事件上传时间") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty("事件照片") + @TableField(exist = false) + private List imageList; + + + + @Override + public String toString() { + return "BusEvent{" + + "id=" + id + + ", eventTitle=" + eventTitle + + ", uploadName=" + uploadName + + ", phoneNumber=" + phoneNumber + + ", eventDescription=" + eventDescription + + ", lng=" + lng + + ", lat=" + lat + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java new file mode 100644 index 0000000..1e75245 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 事件图片表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event_image") +@Data +@ApiModel("BusEventImage") +public class BusEventImage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件ID + */ + @TableField("EVENT_ID") + private Long eventId; + + /** + * 报警图片 + */ + @TableField("IMAGE") + @ApiModelProperty("图片url") + private String image; + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java new file mode 100644 index 0000000..df89c70 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.core.base.json.DateDeserializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Device") +@TableName("br_device") +@Data +public class Device implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "设备ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty(value = "设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + /** + * 设备类型 + */ + @ApiModelProperty(value = "设备类型") + @TableField("DEVICE_TYPE") + private String deviceType; + + /** + * 设备批次 + */ + @ApiModelProperty(value = "设备批次") + @TableField("DEVICE_BATCH") + private String deviceBatch; + + /** + * 厂家 + */ + @ApiModelProperty(value = "厂家") + @TableField("MANUFACTURER") + private String manufacturer; + + /** + * 是否供电 + */ + @ApiModelProperty(value = "是否供电") + @TableField("IS_POWER_SUPPLY") + private String isPowerSupply; + + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间",dataType = "Date") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty(value = "设备类型名称") + @TableField(exist = false) + private String deviceTypeName; + + @ApiModelProperty(value = "是否供电名称") + @TableField(exist = false) + private String isPowerSupplyName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", deviceCode=" + deviceCode + + ", deviceType=" + deviceType + + ", deviceBatch=" + deviceBatch + + ", manufacturer=" + manufacturer + + ", isPowerSupply=" + isPowerSupply + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java new file mode 100644 index 0000000..5ee7015 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java @@ -0,0 +1,99 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 设备扩展信息表(安全树) + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Data +@TableName("br_device_ext") +public class DeviceExt implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 摄像头编号 + */ + @TableField("CAMERA_CODE") + private String cameraCode; + + /** + * 摄像头IP + */ + @TableField("CAMERA_IP") + private String cameraIp; + + /** + * 摄像头端口 + */ + @TableField("CAMERA_PORT") + private String cameraPort; + + /** + * 激甲编号 + */ + @TableField("GAS_CODE") + private String gasCode; + + /** + * 激甲IP + */ + @TableField("GAS_IP") + private String gasIp; + + /** + * 激甲端口 + */ + @TableField("GAS_PORT") + private String gasPort; + + /** + * 甲烷报警阈值 + */ + @TableField("GAS_THRESHOLD") + private String gasThreshold; + + @TableField(value = "HAT_LINING_CODE") + private String hatLiningCode; + + + @Override + public String toString() { + return "DeviceExt{" + + "id=" + id + + ", deviceId=" + deviceId + + ", cameraCode=" + cameraCode + + ", cameraIp=" + cameraIp + + ", cameraPort=" + cameraPort + + ", gasCode=" + gasCode + + ", gasIp=" + gasIp + + ", gasPort=" + gasPort + + ", gasThreshold=" + gasThreshold + + ", hatLiningCode=" + hatLiningCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java new file mode 100644 index 0000000..c4f3472 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java @@ -0,0 +1,62 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Data +@ApiModel("ProjectDevice") +@TableName("br_project_device") +public class ProjectDevice implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + @ApiModelProperty("设备ID(新增编辑时传)") + private Long deviceId; + + /** + * 设备编号 + */ + @TableField(exist = false) + @ApiModelProperty("设备编号(详情中展示,新增编辑不用传)") + private String deviceCode; + + @Override + public String toString() { + return "ProjectDevice{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java new file mode 100644 index 0000000..10b23c4 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java @@ -0,0 +1,104 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("ProjectWorker") +@TableName("br_project_worker") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ProjectWorker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 人员ID + */ + @ApiModelProperty("人员ID") + @TableField("WORKER_ID") + private Long workerId; + + /** + * 安全帽编号 + */ + @ApiModelProperty("安全帽编号") + @TableField("HAT_CODE") + private String hatCode; + + /** + * 背心编号 + */ + @ApiModelProperty("背心编号") + @TableField("VAST_CODE") + private String vastCode; + + /** + * 手环编号 + */ + @ApiModelProperty("手环编号") + @TableField("BRACELET_CODE") + private String braceletCode; + + @ApiModelProperty("人员姓名(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerName; + + @ApiModelProperty("人员部门ID(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptId; + + @ApiModelProperty("人员部门名称(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptName; + + @ApiModelProperty("人员联系方式(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerPhoneNumber; + + public ProjectWorker(Long projectId, Long workerId) { + this.projectId = projectId; + this.workerId = workerId; + } + + @Override + public String toString() { + return "ProjectWorker{" + + "id=" + id + + ", projectId=" + projectId + + ", workerId=" + workerId + + ", hatCode=" + hatCode + + ", vastCode=" + vastCode + + ", braceletCode=" + braceletCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java new file mode 100644 index 0000000..fa6f41d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 作业现场表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("WorkSiteInfo") +@TableName("br_work_site_info") +@Data +public class WorkSiteInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("作业现场ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业名称 + */ + @ApiModelProperty("作业名称") + @TableField("WORK_TITLE") + private String workTitle; + + /** + * 责任人 + */ + @ApiModelProperty("责任人(人员ID)") + @TableField("WORK_PERSON") + private Long workPerson; + + /** + * 作业描述 + */ + @ApiModelProperty("作业描述") + @TableField("WORK_SITE_DESC") + private String workSiteDesc; + + /** + * 作业状态 + */ + @ApiModelProperty("作业状态") + @TableField("PROJECT_STATE") + private String projectState; + + /** + * 所属道路 + */ + @ApiModelProperty("所属道路") + @TableField("WORK_ROAD") + private String workRoad; + + @TableField("IMAGE_URL") + private String imageUrl; + + @TableField("CREATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + @TableField("UPDATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("FINISH_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + @ApiModelProperty("负责人姓名(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonName; + + @ApiModelProperty("负责人联系方式(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonPhoneNumber; + + @ApiModelProperty("负责人所属部门ID(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private Long workPersonDeptId; + + @ApiModelProperty("负责人所属部门名称(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonDeptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + + @Override + public String toString() { + return "WorkSiteInfo{" + + "id=" + id + + ", workTitle=" + workTitle + + ", workPerson=" + workPerson + + ", workSiteDesc=" + workSiteDesc + + ", projectState=" + projectState + + ", imageUrl=" + imageUrl + + ", updateTime=" + updateTime + + ", workRoad=" + workRoad + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java new file mode 100644 index 0000000..28a4daa --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java @@ -0,0 +1,147 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Worker") +@TableName("br_worker") +@Data +public class Worker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "人员ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 姓名 + */ + @ApiModelProperty(value = "姓名") + @TableField("WORKER_NAME") + private String workerName; + + /** + * 性别 + */ + @ApiModelProperty(value = "性别") + @TableField("GENDER") + private String gender; + + /** + * 所属部门 + */ + @ApiModelProperty(value = "所属部门(人员管理)") + @TableField("DEPT_ID") + private Long deptId; + + /** + * 所属单位 + */ + @ApiModelProperty(value = "所属单位(入场申请中使用)") + @TableField("OWNER_SHIP") + private String ownerShip; + + /** + * 联系方式 + */ + @ApiModelProperty(value = "联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 证件号 + */ + @ApiModelProperty(value = "证件号") + @TableField("ID_CARD_NUMBER") + private String idCardNumber; + + /** + * 入场原因 + */ + @ApiModelProperty(value = "入场原因(入场申请中使用)") + @TableField("ENTER_REASON") + private String enterReason; + + /** + * 入场人脸照片 + */ + @ApiModelProperty(value = "人脸照片(照片路径)") + @TableField("WORKER_AVATAR") + private String workerAvatar; + + /** + * 申请入场时间 + */ + @ApiModelProperty(value = "注册时间/申请入场时间") + @TableField("CREATE_TIME") + private Date createTime; + + /** + * 人员类型 + */ + @ApiModelProperty(value = "人员类型(区分人员管理和入场申请)") + @TableField("WORKER_TYPE") + private String workerType; + + @ApiModelProperty(value = "性别名称") + @TableField(exist = false) + private String genderName; + + @ApiModelProperty(value = "部门名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @ApiModelProperty(value = "是否注册(0未注册;1已注册)",allowableValues = "0,1") + @TableField(exist = false) + private String isRegister; + + @Override + public String toString() { + return "Worker{" + + "id=" + id + + ", workerName=" + workerName + + ", gender=" + gender + + ", deptId=" + deptId + + ", ownerShip=" + ownerShip + + ", phoneNumber=" + phoneNumber + + ", idCardNumber=" + idCardNumber + + ", enterReason=" + enterReason + + ", workerAvatar=" + workerAvatar + + ", createTime=" + createTime + + ", workerType=" + workerType + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java new file mode 100644 index 0000000..9801742 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警记录表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusAlarmMapper extends BaseMapper { + + Page listPage(Page page,@Param("ew") QueryWrapper queryWrapper); + + void cancelAlarm(@Param("deviceId")Long deviceId,@Param("alarmType") String alarmType); + + List alarmCount(@Param("projectId")Long projectId, @Param("alarmStatus")String alarmStatus); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java new file mode 100644 index 0000000..9590b7d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件图片表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventImageMapper extends BaseMapper { + +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java new file mode 100644 index 0000000..73d7799 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.dto; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "AlarmUpload",description = "报警上传") +@Data +public class AlarmUpload { + + @ApiModelProperty(value = "摄像头ip") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + @ApiModelProperty(value = "安全树甲烷设备ip") + private String gasIp; + @ApiModelProperty(value = "安全树甲烷设备端口") + private String gasPort; + @ApiModelProperty(value = "报警值") + private String alarmValue; + @ApiModelProperty(value = "报警时间") + private String alarmTime; + @ApiModelProperty(value = "报警类型") + private String alarmType; + @ApiModelProperty(value = "报警图片") + private String alarmImage; + @ApiModelProperty(value = "报警内容") + private String alarmContent; + + @Override + public String toString() { + return "AlarmUpload{" + + "cameraIp='" + cameraIp + '\'' + + ", cameraPort='" + cameraPort + '\'' + + ", gasIp='" + gasIp + '\'' + + ", gasPort='" + gasPort + '\'' + + ", alarmValue='" + alarmValue + '\'' + + ", alarmTime='" + alarmTime + '\'' + + ", alarmType='" + alarmType + '\'' + + ", alarmImage='" + (StrUtil.isNotEmpty(alarmImage) ? alarmImage.substring(0,50) : "null") + '\'' + + ", alarmContent='" + alarmContent + '\'' + + '}'; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java new file mode 100644 index 0000000..ea518d9 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.modular.system.entity.Device; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("DeviceDetailDTO") +@Data +public class DeviceDetailDTO extends Device { + + @ApiModelProperty(value = "摄像头编号") + private String cameraCode; + + @ApiModelProperty(value = "摄像头IP") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + + @ApiModelProperty(value = "激甲编号") + private String gasCode; + + @ApiModelProperty(value = "激甲IP") + private String gasIp; + + @ApiModelProperty(value = "激甲端口") + private String gasPort; + + @ApiModelProperty(value = "智能帽衬编号") + private String hatLiningCode; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java new file mode 100644 index 0000000..29378ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("WorkSiteDetailDTO") +public class WorkSiteDetailDTO extends WorkSiteInfo { + + @ApiModelProperty(value = "安全树列表",dataType = "ProjectDevice") + private List deviceList; + + @ApiModelProperty(value = "人员列表",dataType = "ProjectWorker") + private List workerList; + + + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java new file mode 100644 index 0000000..6fd7b24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java @@ -0,0 +1,68 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "WorkerLocationDTO",description = "人员位置列表(首页)") +@Data +public class WorkerLocationDTO { + + @ApiModelProperty("人员ID") + private Long workerId; + + @ApiModelProperty("人员姓名") + private String workerName; + + @ApiModelProperty("安全帽编号") + private String hatCode; + + @ApiModelProperty("安全帽ID") + private Long hatId; + + @ApiModelProperty("背心编号") + private String vastCode; + + @ApiModelProperty("手环编号") + private String braceletCode; + + @ApiModelProperty("位置") + private String location; + + @ApiModelProperty("时间") + private String time; + + @ApiModelProperty("经度") + private String lng; + + @ApiModelProperty("纬度") + private String lat; + + @ApiModelProperty("心率") + private String heartRate; + + @ApiModelProperty("血氧") + private String bloodOxygen; + + @ApiModelProperty("一氧化碳") + private String co; + + @ApiModelProperty("甲烷") + private String gas; + + @ApiModelProperty("硫化氢") + private String h2s; + + @ApiModelProperty("氧气") + private String o2; + + @ApiModelProperty("信号") + private String signal; + + @ApiModelProperty("电量") + private String cell; + + @ApiModelProperty("是否报警") + private boolean alarmFlag; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java new file mode 100644 index 0000000..efb4a23 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java @@ -0,0 +1,159 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 报警记录表 + *

+ * + * @author zyj + * @since 2023-05-16 + */ +@Data +@ApiModel("Alarm") +@TableName("br_bus_alarm") +public class BusAlarm implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @ApiModelProperty(value = "设备ID") + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 报警类型 + */ + @ApiModelProperty(value = "报警类型") + @TableField("ALARM_TYPE") + private String alarmType; + + /** + * 报警状态 + */ + @ApiModelProperty(value = "报警状态") + @TableField("ALARM_STATUS") + private String alarmStatus; + + /** + * 报警值 + */ + @ApiModelProperty(value = "报警值") + @TableField("ALARM_VALUE") + private String alarmValue; + + /** + * 报警图片 + */ + @ApiModelProperty(value = "报警图片") + @TableField("ALARM_IMAGE") + private String alarmImage; + + /** + * 报警内容 + */ + @ApiModelProperty(value = "报警内容") + @TableField("ALARM_CONTENT") + private String alarmContent; + + /** + * 报警时间 + */ + @ApiModelProperty(value = "报警时间") + @TableField("ALARM_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date alarmTime; + + /** + * 消警时间 + */ + @ApiModelProperty(value = "消警时间") + @TableField("CANCEL_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + /** + * 报警位置经度 + */ + @ApiModelProperty(value = "报警位置经度") + @TableField("ALARM_LNG") + private String alarmLng; + + /** + * 报警位置纬度 + */ + @ApiModelProperty(value = "报警位置纬度") + @TableField("ALARM_LAT") + private String alarmLat; + + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmStatusName; + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmTypeName; + @ApiModelProperty("作业名称") + @TableField(exist = false) + private String workTitle; + @ApiModelProperty("所属道路") + @TableField(exist = false) + private String workRoad; + @ApiModelProperty("作业状态") + @TableField(exist = false) + private String projectState; + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + @ApiModelProperty("负责人姓名") + @TableField(exist = false) + private String workPersonName; + @ApiModelProperty("负责人联系方式") + @TableField(exist = false) + private String workPersonPhoneNumber; + + + @Override + public String toString() { + return "BusAlarm{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + ", alarmType=" + alarmType + + ", alarmValue=" + alarmValue + + ", alarmStatus=" + alarmStatus + + ", alarmImage=" + alarmImage + + ", alarmContent=" + alarmContent + + ", alarmTime=" + alarmTime + + ", cancelTime=" + cancelTime + + ", alarmLng=" + alarmLng + + ", alarmLat=" + alarmLat + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java new file mode 100644 index 0000000..a0b7543 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + *

+ * 事件表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event") +@Data +@ApiModel("BusEvent") +public class BusEvent implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("事件ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件标题 + */ + @ApiModelProperty("事件名称") + @TableField("EVENT_TITLE") + private String eventTitle; + + /** + * 上报人员 + */ + @ApiModelProperty("上报人员") + @TableField("UPLOAD_NAME") + private String uploadName; + + /** + * 联系方式 + */ + @ApiModelProperty("联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 事件描述 + */ + @ApiModelProperty("事件描述") + @TableField("EVENT_DESCRIPTION") + private String eventDescription; + + @ApiModelProperty("经度") + @TableField("LNG") + private String lng; + + @ApiModelProperty("纬度") + @TableField("LAT") + private String lat; + + /** + * 事件上传时间 + */ + @ApiModelProperty("事件上传时间") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty("事件照片") + @TableField(exist = false) + private List imageList; + + + + @Override + public String toString() { + return "BusEvent{" + + "id=" + id + + ", eventTitle=" + eventTitle + + ", uploadName=" + uploadName + + ", phoneNumber=" + phoneNumber + + ", eventDescription=" + eventDescription + + ", lng=" + lng + + ", lat=" + lat + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java new file mode 100644 index 0000000..1e75245 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 事件图片表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event_image") +@Data +@ApiModel("BusEventImage") +public class BusEventImage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件ID + */ + @TableField("EVENT_ID") + private Long eventId; + + /** + * 报警图片 + */ + @TableField("IMAGE") + @ApiModelProperty("图片url") + private String image; + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java new file mode 100644 index 0000000..df89c70 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.core.base.json.DateDeserializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Device") +@TableName("br_device") +@Data +public class Device implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "设备ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty(value = "设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + /** + * 设备类型 + */ + @ApiModelProperty(value = "设备类型") + @TableField("DEVICE_TYPE") + private String deviceType; + + /** + * 设备批次 + */ + @ApiModelProperty(value = "设备批次") + @TableField("DEVICE_BATCH") + private String deviceBatch; + + /** + * 厂家 + */ + @ApiModelProperty(value = "厂家") + @TableField("MANUFACTURER") + private String manufacturer; + + /** + * 是否供电 + */ + @ApiModelProperty(value = "是否供电") + @TableField("IS_POWER_SUPPLY") + private String isPowerSupply; + + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间",dataType = "Date") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty(value = "设备类型名称") + @TableField(exist = false) + private String deviceTypeName; + + @ApiModelProperty(value = "是否供电名称") + @TableField(exist = false) + private String isPowerSupplyName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", deviceCode=" + deviceCode + + ", deviceType=" + deviceType + + ", deviceBatch=" + deviceBatch + + ", manufacturer=" + manufacturer + + ", isPowerSupply=" + isPowerSupply + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java new file mode 100644 index 0000000..5ee7015 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java @@ -0,0 +1,99 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 设备扩展信息表(安全树) + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Data +@TableName("br_device_ext") +public class DeviceExt implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 摄像头编号 + */ + @TableField("CAMERA_CODE") + private String cameraCode; + + /** + * 摄像头IP + */ + @TableField("CAMERA_IP") + private String cameraIp; + + /** + * 摄像头端口 + */ + @TableField("CAMERA_PORT") + private String cameraPort; + + /** + * 激甲编号 + */ + @TableField("GAS_CODE") + private String gasCode; + + /** + * 激甲IP + */ + @TableField("GAS_IP") + private String gasIp; + + /** + * 激甲端口 + */ + @TableField("GAS_PORT") + private String gasPort; + + /** + * 甲烷报警阈值 + */ + @TableField("GAS_THRESHOLD") + private String gasThreshold; + + @TableField(value = "HAT_LINING_CODE") + private String hatLiningCode; + + + @Override + public String toString() { + return "DeviceExt{" + + "id=" + id + + ", deviceId=" + deviceId + + ", cameraCode=" + cameraCode + + ", cameraIp=" + cameraIp + + ", cameraPort=" + cameraPort + + ", gasCode=" + gasCode + + ", gasIp=" + gasIp + + ", gasPort=" + gasPort + + ", gasThreshold=" + gasThreshold + + ", hatLiningCode=" + hatLiningCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java new file mode 100644 index 0000000..c4f3472 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java @@ -0,0 +1,62 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Data +@ApiModel("ProjectDevice") +@TableName("br_project_device") +public class ProjectDevice implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + @ApiModelProperty("设备ID(新增编辑时传)") + private Long deviceId; + + /** + * 设备编号 + */ + @TableField(exist = false) + @ApiModelProperty("设备编号(详情中展示,新增编辑不用传)") + private String deviceCode; + + @Override + public String toString() { + return "ProjectDevice{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java new file mode 100644 index 0000000..10b23c4 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java @@ -0,0 +1,104 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("ProjectWorker") +@TableName("br_project_worker") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ProjectWorker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 人员ID + */ + @ApiModelProperty("人员ID") + @TableField("WORKER_ID") + private Long workerId; + + /** + * 安全帽编号 + */ + @ApiModelProperty("安全帽编号") + @TableField("HAT_CODE") + private String hatCode; + + /** + * 背心编号 + */ + @ApiModelProperty("背心编号") + @TableField("VAST_CODE") + private String vastCode; + + /** + * 手环编号 + */ + @ApiModelProperty("手环编号") + @TableField("BRACELET_CODE") + private String braceletCode; + + @ApiModelProperty("人员姓名(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerName; + + @ApiModelProperty("人员部门ID(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptId; + + @ApiModelProperty("人员部门名称(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptName; + + @ApiModelProperty("人员联系方式(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerPhoneNumber; + + public ProjectWorker(Long projectId, Long workerId) { + this.projectId = projectId; + this.workerId = workerId; + } + + @Override + public String toString() { + return "ProjectWorker{" + + "id=" + id + + ", projectId=" + projectId + + ", workerId=" + workerId + + ", hatCode=" + hatCode + + ", vastCode=" + vastCode + + ", braceletCode=" + braceletCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java new file mode 100644 index 0000000..fa6f41d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 作业现场表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("WorkSiteInfo") +@TableName("br_work_site_info") +@Data +public class WorkSiteInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("作业现场ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业名称 + */ + @ApiModelProperty("作业名称") + @TableField("WORK_TITLE") + private String workTitle; + + /** + * 责任人 + */ + @ApiModelProperty("责任人(人员ID)") + @TableField("WORK_PERSON") + private Long workPerson; + + /** + * 作业描述 + */ + @ApiModelProperty("作业描述") + @TableField("WORK_SITE_DESC") + private String workSiteDesc; + + /** + * 作业状态 + */ + @ApiModelProperty("作业状态") + @TableField("PROJECT_STATE") + private String projectState; + + /** + * 所属道路 + */ + @ApiModelProperty("所属道路") + @TableField("WORK_ROAD") + private String workRoad; + + @TableField("IMAGE_URL") + private String imageUrl; + + @TableField("CREATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + @TableField("UPDATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("FINISH_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + @ApiModelProperty("负责人姓名(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonName; + + @ApiModelProperty("负责人联系方式(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonPhoneNumber; + + @ApiModelProperty("负责人所属部门ID(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private Long workPersonDeptId; + + @ApiModelProperty("负责人所属部门名称(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonDeptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + + @Override + public String toString() { + return "WorkSiteInfo{" + + "id=" + id + + ", workTitle=" + workTitle + + ", workPerson=" + workPerson + + ", workSiteDesc=" + workSiteDesc + + ", projectState=" + projectState + + ", imageUrl=" + imageUrl + + ", updateTime=" + updateTime + + ", workRoad=" + workRoad + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java new file mode 100644 index 0000000..28a4daa --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java @@ -0,0 +1,147 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Worker") +@TableName("br_worker") +@Data +public class Worker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "人员ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 姓名 + */ + @ApiModelProperty(value = "姓名") + @TableField("WORKER_NAME") + private String workerName; + + /** + * 性别 + */ + @ApiModelProperty(value = "性别") + @TableField("GENDER") + private String gender; + + /** + * 所属部门 + */ + @ApiModelProperty(value = "所属部门(人员管理)") + @TableField("DEPT_ID") + private Long deptId; + + /** + * 所属单位 + */ + @ApiModelProperty(value = "所属单位(入场申请中使用)") + @TableField("OWNER_SHIP") + private String ownerShip; + + /** + * 联系方式 + */ + @ApiModelProperty(value = "联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 证件号 + */ + @ApiModelProperty(value = "证件号") + @TableField("ID_CARD_NUMBER") + private String idCardNumber; + + /** + * 入场原因 + */ + @ApiModelProperty(value = "入场原因(入场申请中使用)") + @TableField("ENTER_REASON") + private String enterReason; + + /** + * 入场人脸照片 + */ + @ApiModelProperty(value = "人脸照片(照片路径)") + @TableField("WORKER_AVATAR") + private String workerAvatar; + + /** + * 申请入场时间 + */ + @ApiModelProperty(value = "注册时间/申请入场时间") + @TableField("CREATE_TIME") + private Date createTime; + + /** + * 人员类型 + */ + @ApiModelProperty(value = "人员类型(区分人员管理和入场申请)") + @TableField("WORKER_TYPE") + private String workerType; + + @ApiModelProperty(value = "性别名称") + @TableField(exist = false) + private String genderName; + + @ApiModelProperty(value = "部门名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @ApiModelProperty(value = "是否注册(0未注册;1已注册)",allowableValues = "0,1") + @TableField(exist = false) + private String isRegister; + + @Override + public String toString() { + return "Worker{" + + "id=" + id + + ", workerName=" + workerName + + ", gender=" + gender + + ", deptId=" + deptId + + ", ownerShip=" + ownerShip + + ", phoneNumber=" + phoneNumber + + ", idCardNumber=" + idCardNumber + + ", enterReason=" + enterReason + + ", workerAvatar=" + workerAvatar + + ", createTime=" + createTime + + ", workerType=" + workerType + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java new file mode 100644 index 0000000..9801742 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警记录表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusAlarmMapper extends BaseMapper { + + Page listPage(Page page,@Param("ew") QueryWrapper queryWrapper); + + void cancelAlarm(@Param("deviceId")Long deviceId,@Param("alarmType") String alarmType); + + List alarmCount(@Param("projectId")Long projectId, @Param("alarmStatus")String alarmStatus); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java new file mode 100644 index 0000000..9590b7d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件图片表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventImageMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java new file mode 100644 index 0000000..3c85edf --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventMapper extends BaseMapper { + +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java new file mode 100644 index 0000000..73d7799 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.dto; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "AlarmUpload",description = "报警上传") +@Data +public class AlarmUpload { + + @ApiModelProperty(value = "摄像头ip") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + @ApiModelProperty(value = "安全树甲烷设备ip") + private String gasIp; + @ApiModelProperty(value = "安全树甲烷设备端口") + private String gasPort; + @ApiModelProperty(value = "报警值") + private String alarmValue; + @ApiModelProperty(value = "报警时间") + private String alarmTime; + @ApiModelProperty(value = "报警类型") + private String alarmType; + @ApiModelProperty(value = "报警图片") + private String alarmImage; + @ApiModelProperty(value = "报警内容") + private String alarmContent; + + @Override + public String toString() { + return "AlarmUpload{" + + "cameraIp='" + cameraIp + '\'' + + ", cameraPort='" + cameraPort + '\'' + + ", gasIp='" + gasIp + '\'' + + ", gasPort='" + gasPort + '\'' + + ", alarmValue='" + alarmValue + '\'' + + ", alarmTime='" + alarmTime + '\'' + + ", alarmType='" + alarmType + '\'' + + ", alarmImage='" + (StrUtil.isNotEmpty(alarmImage) ? alarmImage.substring(0,50) : "null") + '\'' + + ", alarmContent='" + alarmContent + '\'' + + '}'; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java new file mode 100644 index 0000000..ea518d9 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.modular.system.entity.Device; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("DeviceDetailDTO") +@Data +public class DeviceDetailDTO extends Device { + + @ApiModelProperty(value = "摄像头编号") + private String cameraCode; + + @ApiModelProperty(value = "摄像头IP") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + + @ApiModelProperty(value = "激甲编号") + private String gasCode; + + @ApiModelProperty(value = "激甲IP") + private String gasIp; + + @ApiModelProperty(value = "激甲端口") + private String gasPort; + + @ApiModelProperty(value = "智能帽衬编号") + private String hatLiningCode; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java new file mode 100644 index 0000000..29378ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("WorkSiteDetailDTO") +public class WorkSiteDetailDTO extends WorkSiteInfo { + + @ApiModelProperty(value = "安全树列表",dataType = "ProjectDevice") + private List deviceList; + + @ApiModelProperty(value = "人员列表",dataType = "ProjectWorker") + private List workerList; + + + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java new file mode 100644 index 0000000..6fd7b24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java @@ -0,0 +1,68 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "WorkerLocationDTO",description = "人员位置列表(首页)") +@Data +public class WorkerLocationDTO { + + @ApiModelProperty("人员ID") + private Long workerId; + + @ApiModelProperty("人员姓名") + private String workerName; + + @ApiModelProperty("安全帽编号") + private String hatCode; + + @ApiModelProperty("安全帽ID") + private Long hatId; + + @ApiModelProperty("背心编号") + private String vastCode; + + @ApiModelProperty("手环编号") + private String braceletCode; + + @ApiModelProperty("位置") + private String location; + + @ApiModelProperty("时间") + private String time; + + @ApiModelProperty("经度") + private String lng; + + @ApiModelProperty("纬度") + private String lat; + + @ApiModelProperty("心率") + private String heartRate; + + @ApiModelProperty("血氧") + private String bloodOxygen; + + @ApiModelProperty("一氧化碳") + private String co; + + @ApiModelProperty("甲烷") + private String gas; + + @ApiModelProperty("硫化氢") + private String h2s; + + @ApiModelProperty("氧气") + private String o2; + + @ApiModelProperty("信号") + private String signal; + + @ApiModelProperty("电量") + private String cell; + + @ApiModelProperty("是否报警") + private boolean alarmFlag; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java new file mode 100644 index 0000000..efb4a23 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java @@ -0,0 +1,159 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 报警记录表 + *

+ * + * @author zyj + * @since 2023-05-16 + */ +@Data +@ApiModel("Alarm") +@TableName("br_bus_alarm") +public class BusAlarm implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @ApiModelProperty(value = "设备ID") + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 报警类型 + */ + @ApiModelProperty(value = "报警类型") + @TableField("ALARM_TYPE") + private String alarmType; + + /** + * 报警状态 + */ + @ApiModelProperty(value = "报警状态") + @TableField("ALARM_STATUS") + private String alarmStatus; + + /** + * 报警值 + */ + @ApiModelProperty(value = "报警值") + @TableField("ALARM_VALUE") + private String alarmValue; + + /** + * 报警图片 + */ + @ApiModelProperty(value = "报警图片") + @TableField("ALARM_IMAGE") + private String alarmImage; + + /** + * 报警内容 + */ + @ApiModelProperty(value = "报警内容") + @TableField("ALARM_CONTENT") + private String alarmContent; + + /** + * 报警时间 + */ + @ApiModelProperty(value = "报警时间") + @TableField("ALARM_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date alarmTime; + + /** + * 消警时间 + */ + @ApiModelProperty(value = "消警时间") + @TableField("CANCEL_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + /** + * 报警位置经度 + */ + @ApiModelProperty(value = "报警位置经度") + @TableField("ALARM_LNG") + private String alarmLng; + + /** + * 报警位置纬度 + */ + @ApiModelProperty(value = "报警位置纬度") + @TableField("ALARM_LAT") + private String alarmLat; + + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmStatusName; + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmTypeName; + @ApiModelProperty("作业名称") + @TableField(exist = false) + private String workTitle; + @ApiModelProperty("所属道路") + @TableField(exist = false) + private String workRoad; + @ApiModelProperty("作业状态") + @TableField(exist = false) + private String projectState; + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + @ApiModelProperty("负责人姓名") + @TableField(exist = false) + private String workPersonName; + @ApiModelProperty("负责人联系方式") + @TableField(exist = false) + private String workPersonPhoneNumber; + + + @Override + public String toString() { + return "BusAlarm{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + ", alarmType=" + alarmType + + ", alarmValue=" + alarmValue + + ", alarmStatus=" + alarmStatus + + ", alarmImage=" + alarmImage + + ", alarmContent=" + alarmContent + + ", alarmTime=" + alarmTime + + ", cancelTime=" + cancelTime + + ", alarmLng=" + alarmLng + + ", alarmLat=" + alarmLat + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java new file mode 100644 index 0000000..a0b7543 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + *

+ * 事件表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event") +@Data +@ApiModel("BusEvent") +public class BusEvent implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("事件ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件标题 + */ + @ApiModelProperty("事件名称") + @TableField("EVENT_TITLE") + private String eventTitle; + + /** + * 上报人员 + */ + @ApiModelProperty("上报人员") + @TableField("UPLOAD_NAME") + private String uploadName; + + /** + * 联系方式 + */ + @ApiModelProperty("联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 事件描述 + */ + @ApiModelProperty("事件描述") + @TableField("EVENT_DESCRIPTION") + private String eventDescription; + + @ApiModelProperty("经度") + @TableField("LNG") + private String lng; + + @ApiModelProperty("纬度") + @TableField("LAT") + private String lat; + + /** + * 事件上传时间 + */ + @ApiModelProperty("事件上传时间") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty("事件照片") + @TableField(exist = false) + private List imageList; + + + + @Override + public String toString() { + return "BusEvent{" + + "id=" + id + + ", eventTitle=" + eventTitle + + ", uploadName=" + uploadName + + ", phoneNumber=" + phoneNumber + + ", eventDescription=" + eventDescription + + ", lng=" + lng + + ", lat=" + lat + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java new file mode 100644 index 0000000..1e75245 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 事件图片表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event_image") +@Data +@ApiModel("BusEventImage") +public class BusEventImage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件ID + */ + @TableField("EVENT_ID") + private Long eventId; + + /** + * 报警图片 + */ + @TableField("IMAGE") + @ApiModelProperty("图片url") + private String image; + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java new file mode 100644 index 0000000..df89c70 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.core.base.json.DateDeserializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Device") +@TableName("br_device") +@Data +public class Device implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "设备ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty(value = "设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + /** + * 设备类型 + */ + @ApiModelProperty(value = "设备类型") + @TableField("DEVICE_TYPE") + private String deviceType; + + /** + * 设备批次 + */ + @ApiModelProperty(value = "设备批次") + @TableField("DEVICE_BATCH") + private String deviceBatch; + + /** + * 厂家 + */ + @ApiModelProperty(value = "厂家") + @TableField("MANUFACTURER") + private String manufacturer; + + /** + * 是否供电 + */ + @ApiModelProperty(value = "是否供电") + @TableField("IS_POWER_SUPPLY") + private String isPowerSupply; + + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间",dataType = "Date") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty(value = "设备类型名称") + @TableField(exist = false) + private String deviceTypeName; + + @ApiModelProperty(value = "是否供电名称") + @TableField(exist = false) + private String isPowerSupplyName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", deviceCode=" + deviceCode + + ", deviceType=" + deviceType + + ", deviceBatch=" + deviceBatch + + ", manufacturer=" + manufacturer + + ", isPowerSupply=" + isPowerSupply + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java new file mode 100644 index 0000000..5ee7015 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java @@ -0,0 +1,99 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 设备扩展信息表(安全树) + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Data +@TableName("br_device_ext") +public class DeviceExt implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 摄像头编号 + */ + @TableField("CAMERA_CODE") + private String cameraCode; + + /** + * 摄像头IP + */ + @TableField("CAMERA_IP") + private String cameraIp; + + /** + * 摄像头端口 + */ + @TableField("CAMERA_PORT") + private String cameraPort; + + /** + * 激甲编号 + */ + @TableField("GAS_CODE") + private String gasCode; + + /** + * 激甲IP + */ + @TableField("GAS_IP") + private String gasIp; + + /** + * 激甲端口 + */ + @TableField("GAS_PORT") + private String gasPort; + + /** + * 甲烷报警阈值 + */ + @TableField("GAS_THRESHOLD") + private String gasThreshold; + + @TableField(value = "HAT_LINING_CODE") + private String hatLiningCode; + + + @Override + public String toString() { + return "DeviceExt{" + + "id=" + id + + ", deviceId=" + deviceId + + ", cameraCode=" + cameraCode + + ", cameraIp=" + cameraIp + + ", cameraPort=" + cameraPort + + ", gasCode=" + gasCode + + ", gasIp=" + gasIp + + ", gasPort=" + gasPort + + ", gasThreshold=" + gasThreshold + + ", hatLiningCode=" + hatLiningCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java new file mode 100644 index 0000000..c4f3472 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java @@ -0,0 +1,62 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Data +@ApiModel("ProjectDevice") +@TableName("br_project_device") +public class ProjectDevice implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + @ApiModelProperty("设备ID(新增编辑时传)") + private Long deviceId; + + /** + * 设备编号 + */ + @TableField(exist = false) + @ApiModelProperty("设备编号(详情中展示,新增编辑不用传)") + private String deviceCode; + + @Override + public String toString() { + return "ProjectDevice{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java new file mode 100644 index 0000000..10b23c4 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java @@ -0,0 +1,104 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("ProjectWorker") +@TableName("br_project_worker") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ProjectWorker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 人员ID + */ + @ApiModelProperty("人员ID") + @TableField("WORKER_ID") + private Long workerId; + + /** + * 安全帽编号 + */ + @ApiModelProperty("安全帽编号") + @TableField("HAT_CODE") + private String hatCode; + + /** + * 背心编号 + */ + @ApiModelProperty("背心编号") + @TableField("VAST_CODE") + private String vastCode; + + /** + * 手环编号 + */ + @ApiModelProperty("手环编号") + @TableField("BRACELET_CODE") + private String braceletCode; + + @ApiModelProperty("人员姓名(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerName; + + @ApiModelProperty("人员部门ID(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptId; + + @ApiModelProperty("人员部门名称(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptName; + + @ApiModelProperty("人员联系方式(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerPhoneNumber; + + public ProjectWorker(Long projectId, Long workerId) { + this.projectId = projectId; + this.workerId = workerId; + } + + @Override + public String toString() { + return "ProjectWorker{" + + "id=" + id + + ", projectId=" + projectId + + ", workerId=" + workerId + + ", hatCode=" + hatCode + + ", vastCode=" + vastCode + + ", braceletCode=" + braceletCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java new file mode 100644 index 0000000..fa6f41d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 作业现场表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("WorkSiteInfo") +@TableName("br_work_site_info") +@Data +public class WorkSiteInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("作业现场ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业名称 + */ + @ApiModelProperty("作业名称") + @TableField("WORK_TITLE") + private String workTitle; + + /** + * 责任人 + */ + @ApiModelProperty("责任人(人员ID)") + @TableField("WORK_PERSON") + private Long workPerson; + + /** + * 作业描述 + */ + @ApiModelProperty("作业描述") + @TableField("WORK_SITE_DESC") + private String workSiteDesc; + + /** + * 作业状态 + */ + @ApiModelProperty("作业状态") + @TableField("PROJECT_STATE") + private String projectState; + + /** + * 所属道路 + */ + @ApiModelProperty("所属道路") + @TableField("WORK_ROAD") + private String workRoad; + + @TableField("IMAGE_URL") + private String imageUrl; + + @TableField("CREATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + @TableField("UPDATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("FINISH_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + @ApiModelProperty("负责人姓名(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonName; + + @ApiModelProperty("负责人联系方式(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonPhoneNumber; + + @ApiModelProperty("负责人所属部门ID(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private Long workPersonDeptId; + + @ApiModelProperty("负责人所属部门名称(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonDeptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + + @Override + public String toString() { + return "WorkSiteInfo{" + + "id=" + id + + ", workTitle=" + workTitle + + ", workPerson=" + workPerson + + ", workSiteDesc=" + workSiteDesc + + ", projectState=" + projectState + + ", imageUrl=" + imageUrl + + ", updateTime=" + updateTime + + ", workRoad=" + workRoad + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java new file mode 100644 index 0000000..28a4daa --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java @@ -0,0 +1,147 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Worker") +@TableName("br_worker") +@Data +public class Worker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "人员ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 姓名 + */ + @ApiModelProperty(value = "姓名") + @TableField("WORKER_NAME") + private String workerName; + + /** + * 性别 + */ + @ApiModelProperty(value = "性别") + @TableField("GENDER") + private String gender; + + /** + * 所属部门 + */ + @ApiModelProperty(value = "所属部门(人员管理)") + @TableField("DEPT_ID") + private Long deptId; + + /** + * 所属单位 + */ + @ApiModelProperty(value = "所属单位(入场申请中使用)") + @TableField("OWNER_SHIP") + private String ownerShip; + + /** + * 联系方式 + */ + @ApiModelProperty(value = "联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 证件号 + */ + @ApiModelProperty(value = "证件号") + @TableField("ID_CARD_NUMBER") + private String idCardNumber; + + /** + * 入场原因 + */ + @ApiModelProperty(value = "入场原因(入场申请中使用)") + @TableField("ENTER_REASON") + private String enterReason; + + /** + * 入场人脸照片 + */ + @ApiModelProperty(value = "人脸照片(照片路径)") + @TableField("WORKER_AVATAR") + private String workerAvatar; + + /** + * 申请入场时间 + */ + @ApiModelProperty(value = "注册时间/申请入场时间") + @TableField("CREATE_TIME") + private Date createTime; + + /** + * 人员类型 + */ + @ApiModelProperty(value = "人员类型(区分人员管理和入场申请)") + @TableField("WORKER_TYPE") + private String workerType; + + @ApiModelProperty(value = "性别名称") + @TableField(exist = false) + private String genderName; + + @ApiModelProperty(value = "部门名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @ApiModelProperty(value = "是否注册(0未注册;1已注册)",allowableValues = "0,1") + @TableField(exist = false) + private String isRegister; + + @Override + public String toString() { + return "Worker{" + + "id=" + id + + ", workerName=" + workerName + + ", gender=" + gender + + ", deptId=" + deptId + + ", ownerShip=" + ownerShip + + ", phoneNumber=" + phoneNumber + + ", idCardNumber=" + idCardNumber + + ", enterReason=" + enterReason + + ", workerAvatar=" + workerAvatar + + ", createTime=" + createTime + + ", workerType=" + workerType + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java new file mode 100644 index 0000000..9801742 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警记录表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusAlarmMapper extends BaseMapper { + + Page listPage(Page page,@Param("ew") QueryWrapper queryWrapper); + + void cancelAlarm(@Param("deviceId")Long deviceId,@Param("alarmType") String alarmType); + + List alarmCount(@Param("projectId")Long projectId, @Param("alarmStatus")String alarmStatus); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java new file mode 100644 index 0000000..9590b7d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件图片表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventImageMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java new file mode 100644 index 0000000..3c85edf --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java new file mode 100644 index 0000000..4ca9212 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 设备扩展信息表(安全树) Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface DeviceExtMapper extends BaseMapper { + +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java new file mode 100644 index 0000000..73d7799 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.dto; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "AlarmUpload",description = "报警上传") +@Data +public class AlarmUpload { + + @ApiModelProperty(value = "摄像头ip") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + @ApiModelProperty(value = "安全树甲烷设备ip") + private String gasIp; + @ApiModelProperty(value = "安全树甲烷设备端口") + private String gasPort; + @ApiModelProperty(value = "报警值") + private String alarmValue; + @ApiModelProperty(value = "报警时间") + private String alarmTime; + @ApiModelProperty(value = "报警类型") + private String alarmType; + @ApiModelProperty(value = "报警图片") + private String alarmImage; + @ApiModelProperty(value = "报警内容") + private String alarmContent; + + @Override + public String toString() { + return "AlarmUpload{" + + "cameraIp='" + cameraIp + '\'' + + ", cameraPort='" + cameraPort + '\'' + + ", gasIp='" + gasIp + '\'' + + ", gasPort='" + gasPort + '\'' + + ", alarmValue='" + alarmValue + '\'' + + ", alarmTime='" + alarmTime + '\'' + + ", alarmType='" + alarmType + '\'' + + ", alarmImage='" + (StrUtil.isNotEmpty(alarmImage) ? alarmImage.substring(0,50) : "null") + '\'' + + ", alarmContent='" + alarmContent + '\'' + + '}'; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java new file mode 100644 index 0000000..ea518d9 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.modular.system.entity.Device; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("DeviceDetailDTO") +@Data +public class DeviceDetailDTO extends Device { + + @ApiModelProperty(value = "摄像头编号") + private String cameraCode; + + @ApiModelProperty(value = "摄像头IP") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + + @ApiModelProperty(value = "激甲编号") + private String gasCode; + + @ApiModelProperty(value = "激甲IP") + private String gasIp; + + @ApiModelProperty(value = "激甲端口") + private String gasPort; + + @ApiModelProperty(value = "智能帽衬编号") + private String hatLiningCode; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java new file mode 100644 index 0000000..29378ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("WorkSiteDetailDTO") +public class WorkSiteDetailDTO extends WorkSiteInfo { + + @ApiModelProperty(value = "安全树列表",dataType = "ProjectDevice") + private List deviceList; + + @ApiModelProperty(value = "人员列表",dataType = "ProjectWorker") + private List workerList; + + + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java new file mode 100644 index 0000000..6fd7b24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java @@ -0,0 +1,68 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "WorkerLocationDTO",description = "人员位置列表(首页)") +@Data +public class WorkerLocationDTO { + + @ApiModelProperty("人员ID") + private Long workerId; + + @ApiModelProperty("人员姓名") + private String workerName; + + @ApiModelProperty("安全帽编号") + private String hatCode; + + @ApiModelProperty("安全帽ID") + private Long hatId; + + @ApiModelProperty("背心编号") + private String vastCode; + + @ApiModelProperty("手环编号") + private String braceletCode; + + @ApiModelProperty("位置") + private String location; + + @ApiModelProperty("时间") + private String time; + + @ApiModelProperty("经度") + private String lng; + + @ApiModelProperty("纬度") + private String lat; + + @ApiModelProperty("心率") + private String heartRate; + + @ApiModelProperty("血氧") + private String bloodOxygen; + + @ApiModelProperty("一氧化碳") + private String co; + + @ApiModelProperty("甲烷") + private String gas; + + @ApiModelProperty("硫化氢") + private String h2s; + + @ApiModelProperty("氧气") + private String o2; + + @ApiModelProperty("信号") + private String signal; + + @ApiModelProperty("电量") + private String cell; + + @ApiModelProperty("是否报警") + private boolean alarmFlag; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java new file mode 100644 index 0000000..efb4a23 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java @@ -0,0 +1,159 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 报警记录表 + *

+ * + * @author zyj + * @since 2023-05-16 + */ +@Data +@ApiModel("Alarm") +@TableName("br_bus_alarm") +public class BusAlarm implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @ApiModelProperty(value = "设备ID") + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 报警类型 + */ + @ApiModelProperty(value = "报警类型") + @TableField("ALARM_TYPE") + private String alarmType; + + /** + * 报警状态 + */ + @ApiModelProperty(value = "报警状态") + @TableField("ALARM_STATUS") + private String alarmStatus; + + /** + * 报警值 + */ + @ApiModelProperty(value = "报警值") + @TableField("ALARM_VALUE") + private String alarmValue; + + /** + * 报警图片 + */ + @ApiModelProperty(value = "报警图片") + @TableField("ALARM_IMAGE") + private String alarmImage; + + /** + * 报警内容 + */ + @ApiModelProperty(value = "报警内容") + @TableField("ALARM_CONTENT") + private String alarmContent; + + /** + * 报警时间 + */ + @ApiModelProperty(value = "报警时间") + @TableField("ALARM_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date alarmTime; + + /** + * 消警时间 + */ + @ApiModelProperty(value = "消警时间") + @TableField("CANCEL_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + /** + * 报警位置经度 + */ + @ApiModelProperty(value = "报警位置经度") + @TableField("ALARM_LNG") + private String alarmLng; + + /** + * 报警位置纬度 + */ + @ApiModelProperty(value = "报警位置纬度") + @TableField("ALARM_LAT") + private String alarmLat; + + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmStatusName; + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmTypeName; + @ApiModelProperty("作业名称") + @TableField(exist = false) + private String workTitle; + @ApiModelProperty("所属道路") + @TableField(exist = false) + private String workRoad; + @ApiModelProperty("作业状态") + @TableField(exist = false) + private String projectState; + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + @ApiModelProperty("负责人姓名") + @TableField(exist = false) + private String workPersonName; + @ApiModelProperty("负责人联系方式") + @TableField(exist = false) + private String workPersonPhoneNumber; + + + @Override + public String toString() { + return "BusAlarm{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + ", alarmType=" + alarmType + + ", alarmValue=" + alarmValue + + ", alarmStatus=" + alarmStatus + + ", alarmImage=" + alarmImage + + ", alarmContent=" + alarmContent + + ", alarmTime=" + alarmTime + + ", cancelTime=" + cancelTime + + ", alarmLng=" + alarmLng + + ", alarmLat=" + alarmLat + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java new file mode 100644 index 0000000..a0b7543 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + *

+ * 事件表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event") +@Data +@ApiModel("BusEvent") +public class BusEvent implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("事件ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件标题 + */ + @ApiModelProperty("事件名称") + @TableField("EVENT_TITLE") + private String eventTitle; + + /** + * 上报人员 + */ + @ApiModelProperty("上报人员") + @TableField("UPLOAD_NAME") + private String uploadName; + + /** + * 联系方式 + */ + @ApiModelProperty("联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 事件描述 + */ + @ApiModelProperty("事件描述") + @TableField("EVENT_DESCRIPTION") + private String eventDescription; + + @ApiModelProperty("经度") + @TableField("LNG") + private String lng; + + @ApiModelProperty("纬度") + @TableField("LAT") + private String lat; + + /** + * 事件上传时间 + */ + @ApiModelProperty("事件上传时间") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty("事件照片") + @TableField(exist = false) + private List imageList; + + + + @Override + public String toString() { + return "BusEvent{" + + "id=" + id + + ", eventTitle=" + eventTitle + + ", uploadName=" + uploadName + + ", phoneNumber=" + phoneNumber + + ", eventDescription=" + eventDescription + + ", lng=" + lng + + ", lat=" + lat + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java new file mode 100644 index 0000000..1e75245 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 事件图片表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event_image") +@Data +@ApiModel("BusEventImage") +public class BusEventImage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件ID + */ + @TableField("EVENT_ID") + private Long eventId; + + /** + * 报警图片 + */ + @TableField("IMAGE") + @ApiModelProperty("图片url") + private String image; + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java new file mode 100644 index 0000000..df89c70 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.core.base.json.DateDeserializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Device") +@TableName("br_device") +@Data +public class Device implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "设备ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty(value = "设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + /** + * 设备类型 + */ + @ApiModelProperty(value = "设备类型") + @TableField("DEVICE_TYPE") + private String deviceType; + + /** + * 设备批次 + */ + @ApiModelProperty(value = "设备批次") + @TableField("DEVICE_BATCH") + private String deviceBatch; + + /** + * 厂家 + */ + @ApiModelProperty(value = "厂家") + @TableField("MANUFACTURER") + private String manufacturer; + + /** + * 是否供电 + */ + @ApiModelProperty(value = "是否供电") + @TableField("IS_POWER_SUPPLY") + private String isPowerSupply; + + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间",dataType = "Date") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty(value = "设备类型名称") + @TableField(exist = false) + private String deviceTypeName; + + @ApiModelProperty(value = "是否供电名称") + @TableField(exist = false) + private String isPowerSupplyName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", deviceCode=" + deviceCode + + ", deviceType=" + deviceType + + ", deviceBatch=" + deviceBatch + + ", manufacturer=" + manufacturer + + ", isPowerSupply=" + isPowerSupply + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java new file mode 100644 index 0000000..5ee7015 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java @@ -0,0 +1,99 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 设备扩展信息表(安全树) + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Data +@TableName("br_device_ext") +public class DeviceExt implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 摄像头编号 + */ + @TableField("CAMERA_CODE") + private String cameraCode; + + /** + * 摄像头IP + */ + @TableField("CAMERA_IP") + private String cameraIp; + + /** + * 摄像头端口 + */ + @TableField("CAMERA_PORT") + private String cameraPort; + + /** + * 激甲编号 + */ + @TableField("GAS_CODE") + private String gasCode; + + /** + * 激甲IP + */ + @TableField("GAS_IP") + private String gasIp; + + /** + * 激甲端口 + */ + @TableField("GAS_PORT") + private String gasPort; + + /** + * 甲烷报警阈值 + */ + @TableField("GAS_THRESHOLD") + private String gasThreshold; + + @TableField(value = "HAT_LINING_CODE") + private String hatLiningCode; + + + @Override + public String toString() { + return "DeviceExt{" + + "id=" + id + + ", deviceId=" + deviceId + + ", cameraCode=" + cameraCode + + ", cameraIp=" + cameraIp + + ", cameraPort=" + cameraPort + + ", gasCode=" + gasCode + + ", gasIp=" + gasIp + + ", gasPort=" + gasPort + + ", gasThreshold=" + gasThreshold + + ", hatLiningCode=" + hatLiningCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java new file mode 100644 index 0000000..c4f3472 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java @@ -0,0 +1,62 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Data +@ApiModel("ProjectDevice") +@TableName("br_project_device") +public class ProjectDevice implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + @ApiModelProperty("设备ID(新增编辑时传)") + private Long deviceId; + + /** + * 设备编号 + */ + @TableField(exist = false) + @ApiModelProperty("设备编号(详情中展示,新增编辑不用传)") + private String deviceCode; + + @Override + public String toString() { + return "ProjectDevice{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java new file mode 100644 index 0000000..10b23c4 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java @@ -0,0 +1,104 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("ProjectWorker") +@TableName("br_project_worker") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ProjectWorker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 人员ID + */ + @ApiModelProperty("人员ID") + @TableField("WORKER_ID") + private Long workerId; + + /** + * 安全帽编号 + */ + @ApiModelProperty("安全帽编号") + @TableField("HAT_CODE") + private String hatCode; + + /** + * 背心编号 + */ + @ApiModelProperty("背心编号") + @TableField("VAST_CODE") + private String vastCode; + + /** + * 手环编号 + */ + @ApiModelProperty("手环编号") + @TableField("BRACELET_CODE") + private String braceletCode; + + @ApiModelProperty("人员姓名(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerName; + + @ApiModelProperty("人员部门ID(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptId; + + @ApiModelProperty("人员部门名称(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptName; + + @ApiModelProperty("人员联系方式(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerPhoneNumber; + + public ProjectWorker(Long projectId, Long workerId) { + this.projectId = projectId; + this.workerId = workerId; + } + + @Override + public String toString() { + return "ProjectWorker{" + + "id=" + id + + ", projectId=" + projectId + + ", workerId=" + workerId + + ", hatCode=" + hatCode + + ", vastCode=" + vastCode + + ", braceletCode=" + braceletCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java new file mode 100644 index 0000000..fa6f41d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 作业现场表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("WorkSiteInfo") +@TableName("br_work_site_info") +@Data +public class WorkSiteInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("作业现场ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业名称 + */ + @ApiModelProperty("作业名称") + @TableField("WORK_TITLE") + private String workTitle; + + /** + * 责任人 + */ + @ApiModelProperty("责任人(人员ID)") + @TableField("WORK_PERSON") + private Long workPerson; + + /** + * 作业描述 + */ + @ApiModelProperty("作业描述") + @TableField("WORK_SITE_DESC") + private String workSiteDesc; + + /** + * 作业状态 + */ + @ApiModelProperty("作业状态") + @TableField("PROJECT_STATE") + private String projectState; + + /** + * 所属道路 + */ + @ApiModelProperty("所属道路") + @TableField("WORK_ROAD") + private String workRoad; + + @TableField("IMAGE_URL") + private String imageUrl; + + @TableField("CREATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + @TableField("UPDATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("FINISH_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + @ApiModelProperty("负责人姓名(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonName; + + @ApiModelProperty("负责人联系方式(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonPhoneNumber; + + @ApiModelProperty("负责人所属部门ID(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private Long workPersonDeptId; + + @ApiModelProperty("负责人所属部门名称(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonDeptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + + @Override + public String toString() { + return "WorkSiteInfo{" + + "id=" + id + + ", workTitle=" + workTitle + + ", workPerson=" + workPerson + + ", workSiteDesc=" + workSiteDesc + + ", projectState=" + projectState + + ", imageUrl=" + imageUrl + + ", updateTime=" + updateTime + + ", workRoad=" + workRoad + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java new file mode 100644 index 0000000..28a4daa --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java @@ -0,0 +1,147 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Worker") +@TableName("br_worker") +@Data +public class Worker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "人员ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 姓名 + */ + @ApiModelProperty(value = "姓名") + @TableField("WORKER_NAME") + private String workerName; + + /** + * 性别 + */ + @ApiModelProperty(value = "性别") + @TableField("GENDER") + private String gender; + + /** + * 所属部门 + */ + @ApiModelProperty(value = "所属部门(人员管理)") + @TableField("DEPT_ID") + private Long deptId; + + /** + * 所属单位 + */ + @ApiModelProperty(value = "所属单位(入场申请中使用)") + @TableField("OWNER_SHIP") + private String ownerShip; + + /** + * 联系方式 + */ + @ApiModelProperty(value = "联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 证件号 + */ + @ApiModelProperty(value = "证件号") + @TableField("ID_CARD_NUMBER") + private String idCardNumber; + + /** + * 入场原因 + */ + @ApiModelProperty(value = "入场原因(入场申请中使用)") + @TableField("ENTER_REASON") + private String enterReason; + + /** + * 入场人脸照片 + */ + @ApiModelProperty(value = "人脸照片(照片路径)") + @TableField("WORKER_AVATAR") + private String workerAvatar; + + /** + * 申请入场时间 + */ + @ApiModelProperty(value = "注册时间/申请入场时间") + @TableField("CREATE_TIME") + private Date createTime; + + /** + * 人员类型 + */ + @ApiModelProperty(value = "人员类型(区分人员管理和入场申请)") + @TableField("WORKER_TYPE") + private String workerType; + + @ApiModelProperty(value = "性别名称") + @TableField(exist = false) + private String genderName; + + @ApiModelProperty(value = "部门名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @ApiModelProperty(value = "是否注册(0未注册;1已注册)",allowableValues = "0,1") + @TableField(exist = false) + private String isRegister; + + @Override + public String toString() { + return "Worker{" + + "id=" + id + + ", workerName=" + workerName + + ", gender=" + gender + + ", deptId=" + deptId + + ", ownerShip=" + ownerShip + + ", phoneNumber=" + phoneNumber + + ", idCardNumber=" + idCardNumber + + ", enterReason=" + enterReason + + ", workerAvatar=" + workerAvatar + + ", createTime=" + createTime + + ", workerType=" + workerType + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java new file mode 100644 index 0000000..9801742 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警记录表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusAlarmMapper extends BaseMapper { + + Page listPage(Page page,@Param("ew") QueryWrapper queryWrapper); + + void cancelAlarm(@Param("deviceId")Long deviceId,@Param("alarmType") String alarmType); + + List alarmCount(@Param("projectId")Long projectId, @Param("alarmStatus")String alarmStatus); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java new file mode 100644 index 0000000..9590b7d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件图片表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventImageMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java new file mode 100644 index 0000000..3c85edf --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java new file mode 100644 index 0000000..4ca9212 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 设备扩展信息表(安全树) Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface DeviceExtMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java new file mode 100644 index 0000000..444c0c5 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Mapper +public interface DeviceMapper extends BaseMapper { + + Page listDetailPage(Page page,@Param("ew") QueryWrapper ew); + + List selectProjectDevice(@Param("projectId") Long projectId); + + List selectHelmetList(@Param("deviceType")String deviceType); +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java new file mode 100644 index 0000000..73d7799 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.dto; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "AlarmUpload",description = "报警上传") +@Data +public class AlarmUpload { + + @ApiModelProperty(value = "摄像头ip") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + @ApiModelProperty(value = "安全树甲烷设备ip") + private String gasIp; + @ApiModelProperty(value = "安全树甲烷设备端口") + private String gasPort; + @ApiModelProperty(value = "报警值") + private String alarmValue; + @ApiModelProperty(value = "报警时间") + private String alarmTime; + @ApiModelProperty(value = "报警类型") + private String alarmType; + @ApiModelProperty(value = "报警图片") + private String alarmImage; + @ApiModelProperty(value = "报警内容") + private String alarmContent; + + @Override + public String toString() { + return "AlarmUpload{" + + "cameraIp='" + cameraIp + '\'' + + ", cameraPort='" + cameraPort + '\'' + + ", gasIp='" + gasIp + '\'' + + ", gasPort='" + gasPort + '\'' + + ", alarmValue='" + alarmValue + '\'' + + ", alarmTime='" + alarmTime + '\'' + + ", alarmType='" + alarmType + '\'' + + ", alarmImage='" + (StrUtil.isNotEmpty(alarmImage) ? alarmImage.substring(0,50) : "null") + '\'' + + ", alarmContent='" + alarmContent + '\'' + + '}'; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java new file mode 100644 index 0000000..ea518d9 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.modular.system.entity.Device; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("DeviceDetailDTO") +@Data +public class DeviceDetailDTO extends Device { + + @ApiModelProperty(value = "摄像头编号") + private String cameraCode; + + @ApiModelProperty(value = "摄像头IP") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + + @ApiModelProperty(value = "激甲编号") + private String gasCode; + + @ApiModelProperty(value = "激甲IP") + private String gasIp; + + @ApiModelProperty(value = "激甲端口") + private String gasPort; + + @ApiModelProperty(value = "智能帽衬编号") + private String hatLiningCode; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java new file mode 100644 index 0000000..29378ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("WorkSiteDetailDTO") +public class WorkSiteDetailDTO extends WorkSiteInfo { + + @ApiModelProperty(value = "安全树列表",dataType = "ProjectDevice") + private List deviceList; + + @ApiModelProperty(value = "人员列表",dataType = "ProjectWorker") + private List workerList; + + + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java new file mode 100644 index 0000000..6fd7b24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java @@ -0,0 +1,68 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "WorkerLocationDTO",description = "人员位置列表(首页)") +@Data +public class WorkerLocationDTO { + + @ApiModelProperty("人员ID") + private Long workerId; + + @ApiModelProperty("人员姓名") + private String workerName; + + @ApiModelProperty("安全帽编号") + private String hatCode; + + @ApiModelProperty("安全帽ID") + private Long hatId; + + @ApiModelProperty("背心编号") + private String vastCode; + + @ApiModelProperty("手环编号") + private String braceletCode; + + @ApiModelProperty("位置") + private String location; + + @ApiModelProperty("时间") + private String time; + + @ApiModelProperty("经度") + private String lng; + + @ApiModelProperty("纬度") + private String lat; + + @ApiModelProperty("心率") + private String heartRate; + + @ApiModelProperty("血氧") + private String bloodOxygen; + + @ApiModelProperty("一氧化碳") + private String co; + + @ApiModelProperty("甲烷") + private String gas; + + @ApiModelProperty("硫化氢") + private String h2s; + + @ApiModelProperty("氧气") + private String o2; + + @ApiModelProperty("信号") + private String signal; + + @ApiModelProperty("电量") + private String cell; + + @ApiModelProperty("是否报警") + private boolean alarmFlag; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java new file mode 100644 index 0000000..efb4a23 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java @@ -0,0 +1,159 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 报警记录表 + *

+ * + * @author zyj + * @since 2023-05-16 + */ +@Data +@ApiModel("Alarm") +@TableName("br_bus_alarm") +public class BusAlarm implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @ApiModelProperty(value = "设备ID") + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 报警类型 + */ + @ApiModelProperty(value = "报警类型") + @TableField("ALARM_TYPE") + private String alarmType; + + /** + * 报警状态 + */ + @ApiModelProperty(value = "报警状态") + @TableField("ALARM_STATUS") + private String alarmStatus; + + /** + * 报警值 + */ + @ApiModelProperty(value = "报警值") + @TableField("ALARM_VALUE") + private String alarmValue; + + /** + * 报警图片 + */ + @ApiModelProperty(value = "报警图片") + @TableField("ALARM_IMAGE") + private String alarmImage; + + /** + * 报警内容 + */ + @ApiModelProperty(value = "报警内容") + @TableField("ALARM_CONTENT") + private String alarmContent; + + /** + * 报警时间 + */ + @ApiModelProperty(value = "报警时间") + @TableField("ALARM_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date alarmTime; + + /** + * 消警时间 + */ + @ApiModelProperty(value = "消警时间") + @TableField("CANCEL_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + /** + * 报警位置经度 + */ + @ApiModelProperty(value = "报警位置经度") + @TableField("ALARM_LNG") + private String alarmLng; + + /** + * 报警位置纬度 + */ + @ApiModelProperty(value = "报警位置纬度") + @TableField("ALARM_LAT") + private String alarmLat; + + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmStatusName; + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmTypeName; + @ApiModelProperty("作业名称") + @TableField(exist = false) + private String workTitle; + @ApiModelProperty("所属道路") + @TableField(exist = false) + private String workRoad; + @ApiModelProperty("作业状态") + @TableField(exist = false) + private String projectState; + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + @ApiModelProperty("负责人姓名") + @TableField(exist = false) + private String workPersonName; + @ApiModelProperty("负责人联系方式") + @TableField(exist = false) + private String workPersonPhoneNumber; + + + @Override + public String toString() { + return "BusAlarm{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + ", alarmType=" + alarmType + + ", alarmValue=" + alarmValue + + ", alarmStatus=" + alarmStatus + + ", alarmImage=" + alarmImage + + ", alarmContent=" + alarmContent + + ", alarmTime=" + alarmTime + + ", cancelTime=" + cancelTime + + ", alarmLng=" + alarmLng + + ", alarmLat=" + alarmLat + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java new file mode 100644 index 0000000..a0b7543 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + *

+ * 事件表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event") +@Data +@ApiModel("BusEvent") +public class BusEvent implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("事件ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件标题 + */ + @ApiModelProperty("事件名称") + @TableField("EVENT_TITLE") + private String eventTitle; + + /** + * 上报人员 + */ + @ApiModelProperty("上报人员") + @TableField("UPLOAD_NAME") + private String uploadName; + + /** + * 联系方式 + */ + @ApiModelProperty("联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 事件描述 + */ + @ApiModelProperty("事件描述") + @TableField("EVENT_DESCRIPTION") + private String eventDescription; + + @ApiModelProperty("经度") + @TableField("LNG") + private String lng; + + @ApiModelProperty("纬度") + @TableField("LAT") + private String lat; + + /** + * 事件上传时间 + */ + @ApiModelProperty("事件上传时间") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty("事件照片") + @TableField(exist = false) + private List imageList; + + + + @Override + public String toString() { + return "BusEvent{" + + "id=" + id + + ", eventTitle=" + eventTitle + + ", uploadName=" + uploadName + + ", phoneNumber=" + phoneNumber + + ", eventDescription=" + eventDescription + + ", lng=" + lng + + ", lat=" + lat + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java new file mode 100644 index 0000000..1e75245 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 事件图片表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event_image") +@Data +@ApiModel("BusEventImage") +public class BusEventImage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件ID + */ + @TableField("EVENT_ID") + private Long eventId; + + /** + * 报警图片 + */ + @TableField("IMAGE") + @ApiModelProperty("图片url") + private String image; + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java new file mode 100644 index 0000000..df89c70 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.core.base.json.DateDeserializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Device") +@TableName("br_device") +@Data +public class Device implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "设备ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty(value = "设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + /** + * 设备类型 + */ + @ApiModelProperty(value = "设备类型") + @TableField("DEVICE_TYPE") + private String deviceType; + + /** + * 设备批次 + */ + @ApiModelProperty(value = "设备批次") + @TableField("DEVICE_BATCH") + private String deviceBatch; + + /** + * 厂家 + */ + @ApiModelProperty(value = "厂家") + @TableField("MANUFACTURER") + private String manufacturer; + + /** + * 是否供电 + */ + @ApiModelProperty(value = "是否供电") + @TableField("IS_POWER_SUPPLY") + private String isPowerSupply; + + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间",dataType = "Date") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty(value = "设备类型名称") + @TableField(exist = false) + private String deviceTypeName; + + @ApiModelProperty(value = "是否供电名称") + @TableField(exist = false) + private String isPowerSupplyName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", deviceCode=" + deviceCode + + ", deviceType=" + deviceType + + ", deviceBatch=" + deviceBatch + + ", manufacturer=" + manufacturer + + ", isPowerSupply=" + isPowerSupply + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java new file mode 100644 index 0000000..5ee7015 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java @@ -0,0 +1,99 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 设备扩展信息表(安全树) + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Data +@TableName("br_device_ext") +public class DeviceExt implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 摄像头编号 + */ + @TableField("CAMERA_CODE") + private String cameraCode; + + /** + * 摄像头IP + */ + @TableField("CAMERA_IP") + private String cameraIp; + + /** + * 摄像头端口 + */ + @TableField("CAMERA_PORT") + private String cameraPort; + + /** + * 激甲编号 + */ + @TableField("GAS_CODE") + private String gasCode; + + /** + * 激甲IP + */ + @TableField("GAS_IP") + private String gasIp; + + /** + * 激甲端口 + */ + @TableField("GAS_PORT") + private String gasPort; + + /** + * 甲烷报警阈值 + */ + @TableField("GAS_THRESHOLD") + private String gasThreshold; + + @TableField(value = "HAT_LINING_CODE") + private String hatLiningCode; + + + @Override + public String toString() { + return "DeviceExt{" + + "id=" + id + + ", deviceId=" + deviceId + + ", cameraCode=" + cameraCode + + ", cameraIp=" + cameraIp + + ", cameraPort=" + cameraPort + + ", gasCode=" + gasCode + + ", gasIp=" + gasIp + + ", gasPort=" + gasPort + + ", gasThreshold=" + gasThreshold + + ", hatLiningCode=" + hatLiningCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java new file mode 100644 index 0000000..c4f3472 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java @@ -0,0 +1,62 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Data +@ApiModel("ProjectDevice") +@TableName("br_project_device") +public class ProjectDevice implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + @ApiModelProperty("设备ID(新增编辑时传)") + private Long deviceId; + + /** + * 设备编号 + */ + @TableField(exist = false) + @ApiModelProperty("设备编号(详情中展示,新增编辑不用传)") + private String deviceCode; + + @Override + public String toString() { + return "ProjectDevice{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java new file mode 100644 index 0000000..10b23c4 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java @@ -0,0 +1,104 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("ProjectWorker") +@TableName("br_project_worker") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ProjectWorker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 人员ID + */ + @ApiModelProperty("人员ID") + @TableField("WORKER_ID") + private Long workerId; + + /** + * 安全帽编号 + */ + @ApiModelProperty("安全帽编号") + @TableField("HAT_CODE") + private String hatCode; + + /** + * 背心编号 + */ + @ApiModelProperty("背心编号") + @TableField("VAST_CODE") + private String vastCode; + + /** + * 手环编号 + */ + @ApiModelProperty("手环编号") + @TableField("BRACELET_CODE") + private String braceletCode; + + @ApiModelProperty("人员姓名(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerName; + + @ApiModelProperty("人员部门ID(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptId; + + @ApiModelProperty("人员部门名称(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptName; + + @ApiModelProperty("人员联系方式(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerPhoneNumber; + + public ProjectWorker(Long projectId, Long workerId) { + this.projectId = projectId; + this.workerId = workerId; + } + + @Override + public String toString() { + return "ProjectWorker{" + + "id=" + id + + ", projectId=" + projectId + + ", workerId=" + workerId + + ", hatCode=" + hatCode + + ", vastCode=" + vastCode + + ", braceletCode=" + braceletCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java new file mode 100644 index 0000000..fa6f41d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 作业现场表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("WorkSiteInfo") +@TableName("br_work_site_info") +@Data +public class WorkSiteInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("作业现场ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业名称 + */ + @ApiModelProperty("作业名称") + @TableField("WORK_TITLE") + private String workTitle; + + /** + * 责任人 + */ + @ApiModelProperty("责任人(人员ID)") + @TableField("WORK_PERSON") + private Long workPerson; + + /** + * 作业描述 + */ + @ApiModelProperty("作业描述") + @TableField("WORK_SITE_DESC") + private String workSiteDesc; + + /** + * 作业状态 + */ + @ApiModelProperty("作业状态") + @TableField("PROJECT_STATE") + private String projectState; + + /** + * 所属道路 + */ + @ApiModelProperty("所属道路") + @TableField("WORK_ROAD") + private String workRoad; + + @TableField("IMAGE_URL") + private String imageUrl; + + @TableField("CREATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + @TableField("UPDATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("FINISH_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + @ApiModelProperty("负责人姓名(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonName; + + @ApiModelProperty("负责人联系方式(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonPhoneNumber; + + @ApiModelProperty("负责人所属部门ID(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private Long workPersonDeptId; + + @ApiModelProperty("负责人所属部门名称(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonDeptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + + @Override + public String toString() { + return "WorkSiteInfo{" + + "id=" + id + + ", workTitle=" + workTitle + + ", workPerson=" + workPerson + + ", workSiteDesc=" + workSiteDesc + + ", projectState=" + projectState + + ", imageUrl=" + imageUrl + + ", updateTime=" + updateTime + + ", workRoad=" + workRoad + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java new file mode 100644 index 0000000..28a4daa --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java @@ -0,0 +1,147 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Worker") +@TableName("br_worker") +@Data +public class Worker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "人员ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 姓名 + */ + @ApiModelProperty(value = "姓名") + @TableField("WORKER_NAME") + private String workerName; + + /** + * 性别 + */ + @ApiModelProperty(value = "性别") + @TableField("GENDER") + private String gender; + + /** + * 所属部门 + */ + @ApiModelProperty(value = "所属部门(人员管理)") + @TableField("DEPT_ID") + private Long deptId; + + /** + * 所属单位 + */ + @ApiModelProperty(value = "所属单位(入场申请中使用)") + @TableField("OWNER_SHIP") + private String ownerShip; + + /** + * 联系方式 + */ + @ApiModelProperty(value = "联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 证件号 + */ + @ApiModelProperty(value = "证件号") + @TableField("ID_CARD_NUMBER") + private String idCardNumber; + + /** + * 入场原因 + */ + @ApiModelProperty(value = "入场原因(入场申请中使用)") + @TableField("ENTER_REASON") + private String enterReason; + + /** + * 入场人脸照片 + */ + @ApiModelProperty(value = "人脸照片(照片路径)") + @TableField("WORKER_AVATAR") + private String workerAvatar; + + /** + * 申请入场时间 + */ + @ApiModelProperty(value = "注册时间/申请入场时间") + @TableField("CREATE_TIME") + private Date createTime; + + /** + * 人员类型 + */ + @ApiModelProperty(value = "人员类型(区分人员管理和入场申请)") + @TableField("WORKER_TYPE") + private String workerType; + + @ApiModelProperty(value = "性别名称") + @TableField(exist = false) + private String genderName; + + @ApiModelProperty(value = "部门名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @ApiModelProperty(value = "是否注册(0未注册;1已注册)",allowableValues = "0,1") + @TableField(exist = false) + private String isRegister; + + @Override + public String toString() { + return "Worker{" + + "id=" + id + + ", workerName=" + workerName + + ", gender=" + gender + + ", deptId=" + deptId + + ", ownerShip=" + ownerShip + + ", phoneNumber=" + phoneNumber + + ", idCardNumber=" + idCardNumber + + ", enterReason=" + enterReason + + ", workerAvatar=" + workerAvatar + + ", createTime=" + createTime + + ", workerType=" + workerType + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java new file mode 100644 index 0000000..9801742 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警记录表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusAlarmMapper extends BaseMapper { + + Page listPage(Page page,@Param("ew") QueryWrapper queryWrapper); + + void cancelAlarm(@Param("deviceId")Long deviceId,@Param("alarmType") String alarmType); + + List alarmCount(@Param("projectId")Long projectId, @Param("alarmStatus")String alarmStatus); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java new file mode 100644 index 0000000..9590b7d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件图片表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventImageMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java new file mode 100644 index 0000000..3c85edf --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java new file mode 100644 index 0000000..4ca9212 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 设备扩展信息表(安全树) Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface DeviceExtMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java new file mode 100644 index 0000000..444c0c5 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Mapper +public interface DeviceMapper extends BaseMapper { + + Page listDetailPage(Page page,@Param("ew") QueryWrapper ew); + + List selectProjectDevice(@Param("projectId") Long projectId); + + List selectHelmetList(@Param("deviceType")String deviceType); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java new file mode 100644 index 0000000..1d0c14e --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectDeviceMapper extends BaseMapper { + List selectDetailByProjectId(@Param("projectId") Long projectId); + + List selectDeviceLocationList(@Param("projectId") Long projectId); + +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java new file mode 100644 index 0000000..73d7799 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.dto; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "AlarmUpload",description = "报警上传") +@Data +public class AlarmUpload { + + @ApiModelProperty(value = "摄像头ip") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + @ApiModelProperty(value = "安全树甲烷设备ip") + private String gasIp; + @ApiModelProperty(value = "安全树甲烷设备端口") + private String gasPort; + @ApiModelProperty(value = "报警值") + private String alarmValue; + @ApiModelProperty(value = "报警时间") + private String alarmTime; + @ApiModelProperty(value = "报警类型") + private String alarmType; + @ApiModelProperty(value = "报警图片") + private String alarmImage; + @ApiModelProperty(value = "报警内容") + private String alarmContent; + + @Override + public String toString() { + return "AlarmUpload{" + + "cameraIp='" + cameraIp + '\'' + + ", cameraPort='" + cameraPort + '\'' + + ", gasIp='" + gasIp + '\'' + + ", gasPort='" + gasPort + '\'' + + ", alarmValue='" + alarmValue + '\'' + + ", alarmTime='" + alarmTime + '\'' + + ", alarmType='" + alarmType + '\'' + + ", alarmImage='" + (StrUtil.isNotEmpty(alarmImage) ? alarmImage.substring(0,50) : "null") + '\'' + + ", alarmContent='" + alarmContent + '\'' + + '}'; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java new file mode 100644 index 0000000..ea518d9 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.modular.system.entity.Device; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("DeviceDetailDTO") +@Data +public class DeviceDetailDTO extends Device { + + @ApiModelProperty(value = "摄像头编号") + private String cameraCode; + + @ApiModelProperty(value = "摄像头IP") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + + @ApiModelProperty(value = "激甲编号") + private String gasCode; + + @ApiModelProperty(value = "激甲IP") + private String gasIp; + + @ApiModelProperty(value = "激甲端口") + private String gasPort; + + @ApiModelProperty(value = "智能帽衬编号") + private String hatLiningCode; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java new file mode 100644 index 0000000..29378ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("WorkSiteDetailDTO") +public class WorkSiteDetailDTO extends WorkSiteInfo { + + @ApiModelProperty(value = "安全树列表",dataType = "ProjectDevice") + private List deviceList; + + @ApiModelProperty(value = "人员列表",dataType = "ProjectWorker") + private List workerList; + + + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java new file mode 100644 index 0000000..6fd7b24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java @@ -0,0 +1,68 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "WorkerLocationDTO",description = "人员位置列表(首页)") +@Data +public class WorkerLocationDTO { + + @ApiModelProperty("人员ID") + private Long workerId; + + @ApiModelProperty("人员姓名") + private String workerName; + + @ApiModelProperty("安全帽编号") + private String hatCode; + + @ApiModelProperty("安全帽ID") + private Long hatId; + + @ApiModelProperty("背心编号") + private String vastCode; + + @ApiModelProperty("手环编号") + private String braceletCode; + + @ApiModelProperty("位置") + private String location; + + @ApiModelProperty("时间") + private String time; + + @ApiModelProperty("经度") + private String lng; + + @ApiModelProperty("纬度") + private String lat; + + @ApiModelProperty("心率") + private String heartRate; + + @ApiModelProperty("血氧") + private String bloodOxygen; + + @ApiModelProperty("一氧化碳") + private String co; + + @ApiModelProperty("甲烷") + private String gas; + + @ApiModelProperty("硫化氢") + private String h2s; + + @ApiModelProperty("氧气") + private String o2; + + @ApiModelProperty("信号") + private String signal; + + @ApiModelProperty("电量") + private String cell; + + @ApiModelProperty("是否报警") + private boolean alarmFlag; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java new file mode 100644 index 0000000..efb4a23 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java @@ -0,0 +1,159 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 报警记录表 + *

+ * + * @author zyj + * @since 2023-05-16 + */ +@Data +@ApiModel("Alarm") +@TableName("br_bus_alarm") +public class BusAlarm implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @ApiModelProperty(value = "设备ID") + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 报警类型 + */ + @ApiModelProperty(value = "报警类型") + @TableField("ALARM_TYPE") + private String alarmType; + + /** + * 报警状态 + */ + @ApiModelProperty(value = "报警状态") + @TableField("ALARM_STATUS") + private String alarmStatus; + + /** + * 报警值 + */ + @ApiModelProperty(value = "报警值") + @TableField("ALARM_VALUE") + private String alarmValue; + + /** + * 报警图片 + */ + @ApiModelProperty(value = "报警图片") + @TableField("ALARM_IMAGE") + private String alarmImage; + + /** + * 报警内容 + */ + @ApiModelProperty(value = "报警内容") + @TableField("ALARM_CONTENT") + private String alarmContent; + + /** + * 报警时间 + */ + @ApiModelProperty(value = "报警时间") + @TableField("ALARM_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date alarmTime; + + /** + * 消警时间 + */ + @ApiModelProperty(value = "消警时间") + @TableField("CANCEL_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + /** + * 报警位置经度 + */ + @ApiModelProperty(value = "报警位置经度") + @TableField("ALARM_LNG") + private String alarmLng; + + /** + * 报警位置纬度 + */ + @ApiModelProperty(value = "报警位置纬度") + @TableField("ALARM_LAT") + private String alarmLat; + + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmStatusName; + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmTypeName; + @ApiModelProperty("作业名称") + @TableField(exist = false) + private String workTitle; + @ApiModelProperty("所属道路") + @TableField(exist = false) + private String workRoad; + @ApiModelProperty("作业状态") + @TableField(exist = false) + private String projectState; + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + @ApiModelProperty("负责人姓名") + @TableField(exist = false) + private String workPersonName; + @ApiModelProperty("负责人联系方式") + @TableField(exist = false) + private String workPersonPhoneNumber; + + + @Override + public String toString() { + return "BusAlarm{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + ", alarmType=" + alarmType + + ", alarmValue=" + alarmValue + + ", alarmStatus=" + alarmStatus + + ", alarmImage=" + alarmImage + + ", alarmContent=" + alarmContent + + ", alarmTime=" + alarmTime + + ", cancelTime=" + cancelTime + + ", alarmLng=" + alarmLng + + ", alarmLat=" + alarmLat + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java new file mode 100644 index 0000000..a0b7543 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + *

+ * 事件表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event") +@Data +@ApiModel("BusEvent") +public class BusEvent implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("事件ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件标题 + */ + @ApiModelProperty("事件名称") + @TableField("EVENT_TITLE") + private String eventTitle; + + /** + * 上报人员 + */ + @ApiModelProperty("上报人员") + @TableField("UPLOAD_NAME") + private String uploadName; + + /** + * 联系方式 + */ + @ApiModelProperty("联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 事件描述 + */ + @ApiModelProperty("事件描述") + @TableField("EVENT_DESCRIPTION") + private String eventDescription; + + @ApiModelProperty("经度") + @TableField("LNG") + private String lng; + + @ApiModelProperty("纬度") + @TableField("LAT") + private String lat; + + /** + * 事件上传时间 + */ + @ApiModelProperty("事件上传时间") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty("事件照片") + @TableField(exist = false) + private List imageList; + + + + @Override + public String toString() { + return "BusEvent{" + + "id=" + id + + ", eventTitle=" + eventTitle + + ", uploadName=" + uploadName + + ", phoneNumber=" + phoneNumber + + ", eventDescription=" + eventDescription + + ", lng=" + lng + + ", lat=" + lat + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java new file mode 100644 index 0000000..1e75245 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 事件图片表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event_image") +@Data +@ApiModel("BusEventImage") +public class BusEventImage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件ID + */ + @TableField("EVENT_ID") + private Long eventId; + + /** + * 报警图片 + */ + @TableField("IMAGE") + @ApiModelProperty("图片url") + private String image; + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java new file mode 100644 index 0000000..df89c70 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.core.base.json.DateDeserializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Device") +@TableName("br_device") +@Data +public class Device implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "设备ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty(value = "设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + /** + * 设备类型 + */ + @ApiModelProperty(value = "设备类型") + @TableField("DEVICE_TYPE") + private String deviceType; + + /** + * 设备批次 + */ + @ApiModelProperty(value = "设备批次") + @TableField("DEVICE_BATCH") + private String deviceBatch; + + /** + * 厂家 + */ + @ApiModelProperty(value = "厂家") + @TableField("MANUFACTURER") + private String manufacturer; + + /** + * 是否供电 + */ + @ApiModelProperty(value = "是否供电") + @TableField("IS_POWER_SUPPLY") + private String isPowerSupply; + + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间",dataType = "Date") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty(value = "设备类型名称") + @TableField(exist = false) + private String deviceTypeName; + + @ApiModelProperty(value = "是否供电名称") + @TableField(exist = false) + private String isPowerSupplyName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", deviceCode=" + deviceCode + + ", deviceType=" + deviceType + + ", deviceBatch=" + deviceBatch + + ", manufacturer=" + manufacturer + + ", isPowerSupply=" + isPowerSupply + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java new file mode 100644 index 0000000..5ee7015 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java @@ -0,0 +1,99 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 设备扩展信息表(安全树) + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Data +@TableName("br_device_ext") +public class DeviceExt implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 摄像头编号 + */ + @TableField("CAMERA_CODE") + private String cameraCode; + + /** + * 摄像头IP + */ + @TableField("CAMERA_IP") + private String cameraIp; + + /** + * 摄像头端口 + */ + @TableField("CAMERA_PORT") + private String cameraPort; + + /** + * 激甲编号 + */ + @TableField("GAS_CODE") + private String gasCode; + + /** + * 激甲IP + */ + @TableField("GAS_IP") + private String gasIp; + + /** + * 激甲端口 + */ + @TableField("GAS_PORT") + private String gasPort; + + /** + * 甲烷报警阈值 + */ + @TableField("GAS_THRESHOLD") + private String gasThreshold; + + @TableField(value = "HAT_LINING_CODE") + private String hatLiningCode; + + + @Override + public String toString() { + return "DeviceExt{" + + "id=" + id + + ", deviceId=" + deviceId + + ", cameraCode=" + cameraCode + + ", cameraIp=" + cameraIp + + ", cameraPort=" + cameraPort + + ", gasCode=" + gasCode + + ", gasIp=" + gasIp + + ", gasPort=" + gasPort + + ", gasThreshold=" + gasThreshold + + ", hatLiningCode=" + hatLiningCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java new file mode 100644 index 0000000..c4f3472 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java @@ -0,0 +1,62 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Data +@ApiModel("ProjectDevice") +@TableName("br_project_device") +public class ProjectDevice implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + @ApiModelProperty("设备ID(新增编辑时传)") + private Long deviceId; + + /** + * 设备编号 + */ + @TableField(exist = false) + @ApiModelProperty("设备编号(详情中展示,新增编辑不用传)") + private String deviceCode; + + @Override + public String toString() { + return "ProjectDevice{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java new file mode 100644 index 0000000..10b23c4 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java @@ -0,0 +1,104 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("ProjectWorker") +@TableName("br_project_worker") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ProjectWorker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 人员ID + */ + @ApiModelProperty("人员ID") + @TableField("WORKER_ID") + private Long workerId; + + /** + * 安全帽编号 + */ + @ApiModelProperty("安全帽编号") + @TableField("HAT_CODE") + private String hatCode; + + /** + * 背心编号 + */ + @ApiModelProperty("背心编号") + @TableField("VAST_CODE") + private String vastCode; + + /** + * 手环编号 + */ + @ApiModelProperty("手环编号") + @TableField("BRACELET_CODE") + private String braceletCode; + + @ApiModelProperty("人员姓名(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerName; + + @ApiModelProperty("人员部门ID(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptId; + + @ApiModelProperty("人员部门名称(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptName; + + @ApiModelProperty("人员联系方式(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerPhoneNumber; + + public ProjectWorker(Long projectId, Long workerId) { + this.projectId = projectId; + this.workerId = workerId; + } + + @Override + public String toString() { + return "ProjectWorker{" + + "id=" + id + + ", projectId=" + projectId + + ", workerId=" + workerId + + ", hatCode=" + hatCode + + ", vastCode=" + vastCode + + ", braceletCode=" + braceletCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java new file mode 100644 index 0000000..fa6f41d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 作业现场表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("WorkSiteInfo") +@TableName("br_work_site_info") +@Data +public class WorkSiteInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("作业现场ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业名称 + */ + @ApiModelProperty("作业名称") + @TableField("WORK_TITLE") + private String workTitle; + + /** + * 责任人 + */ + @ApiModelProperty("责任人(人员ID)") + @TableField("WORK_PERSON") + private Long workPerson; + + /** + * 作业描述 + */ + @ApiModelProperty("作业描述") + @TableField("WORK_SITE_DESC") + private String workSiteDesc; + + /** + * 作业状态 + */ + @ApiModelProperty("作业状态") + @TableField("PROJECT_STATE") + private String projectState; + + /** + * 所属道路 + */ + @ApiModelProperty("所属道路") + @TableField("WORK_ROAD") + private String workRoad; + + @TableField("IMAGE_URL") + private String imageUrl; + + @TableField("CREATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + @TableField("UPDATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("FINISH_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + @ApiModelProperty("负责人姓名(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonName; + + @ApiModelProperty("负责人联系方式(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonPhoneNumber; + + @ApiModelProperty("负责人所属部门ID(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private Long workPersonDeptId; + + @ApiModelProperty("负责人所属部门名称(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonDeptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + + @Override + public String toString() { + return "WorkSiteInfo{" + + "id=" + id + + ", workTitle=" + workTitle + + ", workPerson=" + workPerson + + ", workSiteDesc=" + workSiteDesc + + ", projectState=" + projectState + + ", imageUrl=" + imageUrl + + ", updateTime=" + updateTime + + ", workRoad=" + workRoad + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java new file mode 100644 index 0000000..28a4daa --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java @@ -0,0 +1,147 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Worker") +@TableName("br_worker") +@Data +public class Worker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "人员ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 姓名 + */ + @ApiModelProperty(value = "姓名") + @TableField("WORKER_NAME") + private String workerName; + + /** + * 性别 + */ + @ApiModelProperty(value = "性别") + @TableField("GENDER") + private String gender; + + /** + * 所属部门 + */ + @ApiModelProperty(value = "所属部门(人员管理)") + @TableField("DEPT_ID") + private Long deptId; + + /** + * 所属单位 + */ + @ApiModelProperty(value = "所属单位(入场申请中使用)") + @TableField("OWNER_SHIP") + private String ownerShip; + + /** + * 联系方式 + */ + @ApiModelProperty(value = "联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 证件号 + */ + @ApiModelProperty(value = "证件号") + @TableField("ID_CARD_NUMBER") + private String idCardNumber; + + /** + * 入场原因 + */ + @ApiModelProperty(value = "入场原因(入场申请中使用)") + @TableField("ENTER_REASON") + private String enterReason; + + /** + * 入场人脸照片 + */ + @ApiModelProperty(value = "人脸照片(照片路径)") + @TableField("WORKER_AVATAR") + private String workerAvatar; + + /** + * 申请入场时间 + */ + @ApiModelProperty(value = "注册时间/申请入场时间") + @TableField("CREATE_TIME") + private Date createTime; + + /** + * 人员类型 + */ + @ApiModelProperty(value = "人员类型(区分人员管理和入场申请)") + @TableField("WORKER_TYPE") + private String workerType; + + @ApiModelProperty(value = "性别名称") + @TableField(exist = false) + private String genderName; + + @ApiModelProperty(value = "部门名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @ApiModelProperty(value = "是否注册(0未注册;1已注册)",allowableValues = "0,1") + @TableField(exist = false) + private String isRegister; + + @Override + public String toString() { + return "Worker{" + + "id=" + id + + ", workerName=" + workerName + + ", gender=" + gender + + ", deptId=" + deptId + + ", ownerShip=" + ownerShip + + ", phoneNumber=" + phoneNumber + + ", idCardNumber=" + idCardNumber + + ", enterReason=" + enterReason + + ", workerAvatar=" + workerAvatar + + ", createTime=" + createTime + + ", workerType=" + workerType + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java new file mode 100644 index 0000000..9801742 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警记录表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusAlarmMapper extends BaseMapper { + + Page listPage(Page page,@Param("ew") QueryWrapper queryWrapper); + + void cancelAlarm(@Param("deviceId")Long deviceId,@Param("alarmType") String alarmType); + + List alarmCount(@Param("projectId")Long projectId, @Param("alarmStatus")String alarmStatus); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java new file mode 100644 index 0000000..9590b7d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件图片表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventImageMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java new file mode 100644 index 0000000..3c85edf --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java new file mode 100644 index 0000000..4ca9212 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 设备扩展信息表(安全树) Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface DeviceExtMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java new file mode 100644 index 0000000..444c0c5 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Mapper +public interface DeviceMapper extends BaseMapper { + + Page listDetailPage(Page page,@Param("ew") QueryWrapper ew); + + List selectProjectDevice(@Param("projectId") Long projectId); + + List selectHelmetList(@Param("deviceType")String deviceType); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java new file mode 100644 index 0000000..1d0c14e --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectDeviceMapper extends BaseMapper { + List selectDetailByProjectId(@Param("projectId") Long projectId); + + List selectDeviceLocationList(@Param("projectId") Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java new file mode 100644 index 0000000..58583d1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectWorkerMapper extends BaseMapper { + + List selectDetailByProjectId(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + + List selectWorkerLocationList(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java new file mode 100644 index 0000000..73d7799 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.dto; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "AlarmUpload",description = "报警上传") +@Data +public class AlarmUpload { + + @ApiModelProperty(value = "摄像头ip") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + @ApiModelProperty(value = "安全树甲烷设备ip") + private String gasIp; + @ApiModelProperty(value = "安全树甲烷设备端口") + private String gasPort; + @ApiModelProperty(value = "报警值") + private String alarmValue; + @ApiModelProperty(value = "报警时间") + private String alarmTime; + @ApiModelProperty(value = "报警类型") + private String alarmType; + @ApiModelProperty(value = "报警图片") + private String alarmImage; + @ApiModelProperty(value = "报警内容") + private String alarmContent; + + @Override + public String toString() { + return "AlarmUpload{" + + "cameraIp='" + cameraIp + '\'' + + ", cameraPort='" + cameraPort + '\'' + + ", gasIp='" + gasIp + '\'' + + ", gasPort='" + gasPort + '\'' + + ", alarmValue='" + alarmValue + '\'' + + ", alarmTime='" + alarmTime + '\'' + + ", alarmType='" + alarmType + '\'' + + ", alarmImage='" + (StrUtil.isNotEmpty(alarmImage) ? alarmImage.substring(0,50) : "null") + '\'' + + ", alarmContent='" + alarmContent + '\'' + + '}'; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java new file mode 100644 index 0000000..ea518d9 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.modular.system.entity.Device; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("DeviceDetailDTO") +@Data +public class DeviceDetailDTO extends Device { + + @ApiModelProperty(value = "摄像头编号") + private String cameraCode; + + @ApiModelProperty(value = "摄像头IP") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + + @ApiModelProperty(value = "激甲编号") + private String gasCode; + + @ApiModelProperty(value = "激甲IP") + private String gasIp; + + @ApiModelProperty(value = "激甲端口") + private String gasPort; + + @ApiModelProperty(value = "智能帽衬编号") + private String hatLiningCode; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java new file mode 100644 index 0000000..29378ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("WorkSiteDetailDTO") +public class WorkSiteDetailDTO extends WorkSiteInfo { + + @ApiModelProperty(value = "安全树列表",dataType = "ProjectDevice") + private List deviceList; + + @ApiModelProperty(value = "人员列表",dataType = "ProjectWorker") + private List workerList; + + + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java new file mode 100644 index 0000000..6fd7b24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java @@ -0,0 +1,68 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "WorkerLocationDTO",description = "人员位置列表(首页)") +@Data +public class WorkerLocationDTO { + + @ApiModelProperty("人员ID") + private Long workerId; + + @ApiModelProperty("人员姓名") + private String workerName; + + @ApiModelProperty("安全帽编号") + private String hatCode; + + @ApiModelProperty("安全帽ID") + private Long hatId; + + @ApiModelProperty("背心编号") + private String vastCode; + + @ApiModelProperty("手环编号") + private String braceletCode; + + @ApiModelProperty("位置") + private String location; + + @ApiModelProperty("时间") + private String time; + + @ApiModelProperty("经度") + private String lng; + + @ApiModelProperty("纬度") + private String lat; + + @ApiModelProperty("心率") + private String heartRate; + + @ApiModelProperty("血氧") + private String bloodOxygen; + + @ApiModelProperty("一氧化碳") + private String co; + + @ApiModelProperty("甲烷") + private String gas; + + @ApiModelProperty("硫化氢") + private String h2s; + + @ApiModelProperty("氧气") + private String o2; + + @ApiModelProperty("信号") + private String signal; + + @ApiModelProperty("电量") + private String cell; + + @ApiModelProperty("是否报警") + private boolean alarmFlag; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java new file mode 100644 index 0000000..efb4a23 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java @@ -0,0 +1,159 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 报警记录表 + *

+ * + * @author zyj + * @since 2023-05-16 + */ +@Data +@ApiModel("Alarm") +@TableName("br_bus_alarm") +public class BusAlarm implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @ApiModelProperty(value = "设备ID") + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 报警类型 + */ + @ApiModelProperty(value = "报警类型") + @TableField("ALARM_TYPE") + private String alarmType; + + /** + * 报警状态 + */ + @ApiModelProperty(value = "报警状态") + @TableField("ALARM_STATUS") + private String alarmStatus; + + /** + * 报警值 + */ + @ApiModelProperty(value = "报警值") + @TableField("ALARM_VALUE") + private String alarmValue; + + /** + * 报警图片 + */ + @ApiModelProperty(value = "报警图片") + @TableField("ALARM_IMAGE") + private String alarmImage; + + /** + * 报警内容 + */ + @ApiModelProperty(value = "报警内容") + @TableField("ALARM_CONTENT") + private String alarmContent; + + /** + * 报警时间 + */ + @ApiModelProperty(value = "报警时间") + @TableField("ALARM_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date alarmTime; + + /** + * 消警时间 + */ + @ApiModelProperty(value = "消警时间") + @TableField("CANCEL_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + /** + * 报警位置经度 + */ + @ApiModelProperty(value = "报警位置经度") + @TableField("ALARM_LNG") + private String alarmLng; + + /** + * 报警位置纬度 + */ + @ApiModelProperty(value = "报警位置纬度") + @TableField("ALARM_LAT") + private String alarmLat; + + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmStatusName; + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmTypeName; + @ApiModelProperty("作业名称") + @TableField(exist = false) + private String workTitle; + @ApiModelProperty("所属道路") + @TableField(exist = false) + private String workRoad; + @ApiModelProperty("作业状态") + @TableField(exist = false) + private String projectState; + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + @ApiModelProperty("负责人姓名") + @TableField(exist = false) + private String workPersonName; + @ApiModelProperty("负责人联系方式") + @TableField(exist = false) + private String workPersonPhoneNumber; + + + @Override + public String toString() { + return "BusAlarm{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + ", alarmType=" + alarmType + + ", alarmValue=" + alarmValue + + ", alarmStatus=" + alarmStatus + + ", alarmImage=" + alarmImage + + ", alarmContent=" + alarmContent + + ", alarmTime=" + alarmTime + + ", cancelTime=" + cancelTime + + ", alarmLng=" + alarmLng + + ", alarmLat=" + alarmLat + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java new file mode 100644 index 0000000..a0b7543 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + *

+ * 事件表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event") +@Data +@ApiModel("BusEvent") +public class BusEvent implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("事件ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件标题 + */ + @ApiModelProperty("事件名称") + @TableField("EVENT_TITLE") + private String eventTitle; + + /** + * 上报人员 + */ + @ApiModelProperty("上报人员") + @TableField("UPLOAD_NAME") + private String uploadName; + + /** + * 联系方式 + */ + @ApiModelProperty("联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 事件描述 + */ + @ApiModelProperty("事件描述") + @TableField("EVENT_DESCRIPTION") + private String eventDescription; + + @ApiModelProperty("经度") + @TableField("LNG") + private String lng; + + @ApiModelProperty("纬度") + @TableField("LAT") + private String lat; + + /** + * 事件上传时间 + */ + @ApiModelProperty("事件上传时间") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty("事件照片") + @TableField(exist = false) + private List imageList; + + + + @Override + public String toString() { + return "BusEvent{" + + "id=" + id + + ", eventTitle=" + eventTitle + + ", uploadName=" + uploadName + + ", phoneNumber=" + phoneNumber + + ", eventDescription=" + eventDescription + + ", lng=" + lng + + ", lat=" + lat + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java new file mode 100644 index 0000000..1e75245 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 事件图片表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event_image") +@Data +@ApiModel("BusEventImage") +public class BusEventImage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件ID + */ + @TableField("EVENT_ID") + private Long eventId; + + /** + * 报警图片 + */ + @TableField("IMAGE") + @ApiModelProperty("图片url") + private String image; + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java new file mode 100644 index 0000000..df89c70 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.core.base.json.DateDeserializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Device") +@TableName("br_device") +@Data +public class Device implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "设备ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty(value = "设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + /** + * 设备类型 + */ + @ApiModelProperty(value = "设备类型") + @TableField("DEVICE_TYPE") + private String deviceType; + + /** + * 设备批次 + */ + @ApiModelProperty(value = "设备批次") + @TableField("DEVICE_BATCH") + private String deviceBatch; + + /** + * 厂家 + */ + @ApiModelProperty(value = "厂家") + @TableField("MANUFACTURER") + private String manufacturer; + + /** + * 是否供电 + */ + @ApiModelProperty(value = "是否供电") + @TableField("IS_POWER_SUPPLY") + private String isPowerSupply; + + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间",dataType = "Date") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty(value = "设备类型名称") + @TableField(exist = false) + private String deviceTypeName; + + @ApiModelProperty(value = "是否供电名称") + @TableField(exist = false) + private String isPowerSupplyName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", deviceCode=" + deviceCode + + ", deviceType=" + deviceType + + ", deviceBatch=" + deviceBatch + + ", manufacturer=" + manufacturer + + ", isPowerSupply=" + isPowerSupply + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java new file mode 100644 index 0000000..5ee7015 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java @@ -0,0 +1,99 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 设备扩展信息表(安全树) + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Data +@TableName("br_device_ext") +public class DeviceExt implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 摄像头编号 + */ + @TableField("CAMERA_CODE") + private String cameraCode; + + /** + * 摄像头IP + */ + @TableField("CAMERA_IP") + private String cameraIp; + + /** + * 摄像头端口 + */ + @TableField("CAMERA_PORT") + private String cameraPort; + + /** + * 激甲编号 + */ + @TableField("GAS_CODE") + private String gasCode; + + /** + * 激甲IP + */ + @TableField("GAS_IP") + private String gasIp; + + /** + * 激甲端口 + */ + @TableField("GAS_PORT") + private String gasPort; + + /** + * 甲烷报警阈值 + */ + @TableField("GAS_THRESHOLD") + private String gasThreshold; + + @TableField(value = "HAT_LINING_CODE") + private String hatLiningCode; + + + @Override + public String toString() { + return "DeviceExt{" + + "id=" + id + + ", deviceId=" + deviceId + + ", cameraCode=" + cameraCode + + ", cameraIp=" + cameraIp + + ", cameraPort=" + cameraPort + + ", gasCode=" + gasCode + + ", gasIp=" + gasIp + + ", gasPort=" + gasPort + + ", gasThreshold=" + gasThreshold + + ", hatLiningCode=" + hatLiningCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java new file mode 100644 index 0000000..c4f3472 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java @@ -0,0 +1,62 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Data +@ApiModel("ProjectDevice") +@TableName("br_project_device") +public class ProjectDevice implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + @ApiModelProperty("设备ID(新增编辑时传)") + private Long deviceId; + + /** + * 设备编号 + */ + @TableField(exist = false) + @ApiModelProperty("设备编号(详情中展示,新增编辑不用传)") + private String deviceCode; + + @Override + public String toString() { + return "ProjectDevice{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java new file mode 100644 index 0000000..10b23c4 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java @@ -0,0 +1,104 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("ProjectWorker") +@TableName("br_project_worker") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ProjectWorker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 人员ID + */ + @ApiModelProperty("人员ID") + @TableField("WORKER_ID") + private Long workerId; + + /** + * 安全帽编号 + */ + @ApiModelProperty("安全帽编号") + @TableField("HAT_CODE") + private String hatCode; + + /** + * 背心编号 + */ + @ApiModelProperty("背心编号") + @TableField("VAST_CODE") + private String vastCode; + + /** + * 手环编号 + */ + @ApiModelProperty("手环编号") + @TableField("BRACELET_CODE") + private String braceletCode; + + @ApiModelProperty("人员姓名(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerName; + + @ApiModelProperty("人员部门ID(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptId; + + @ApiModelProperty("人员部门名称(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptName; + + @ApiModelProperty("人员联系方式(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerPhoneNumber; + + public ProjectWorker(Long projectId, Long workerId) { + this.projectId = projectId; + this.workerId = workerId; + } + + @Override + public String toString() { + return "ProjectWorker{" + + "id=" + id + + ", projectId=" + projectId + + ", workerId=" + workerId + + ", hatCode=" + hatCode + + ", vastCode=" + vastCode + + ", braceletCode=" + braceletCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java new file mode 100644 index 0000000..fa6f41d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 作业现场表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("WorkSiteInfo") +@TableName("br_work_site_info") +@Data +public class WorkSiteInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("作业现场ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业名称 + */ + @ApiModelProperty("作业名称") + @TableField("WORK_TITLE") + private String workTitle; + + /** + * 责任人 + */ + @ApiModelProperty("责任人(人员ID)") + @TableField("WORK_PERSON") + private Long workPerson; + + /** + * 作业描述 + */ + @ApiModelProperty("作业描述") + @TableField("WORK_SITE_DESC") + private String workSiteDesc; + + /** + * 作业状态 + */ + @ApiModelProperty("作业状态") + @TableField("PROJECT_STATE") + private String projectState; + + /** + * 所属道路 + */ + @ApiModelProperty("所属道路") + @TableField("WORK_ROAD") + private String workRoad; + + @TableField("IMAGE_URL") + private String imageUrl; + + @TableField("CREATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + @TableField("UPDATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("FINISH_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + @ApiModelProperty("负责人姓名(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonName; + + @ApiModelProperty("负责人联系方式(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonPhoneNumber; + + @ApiModelProperty("负责人所属部门ID(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private Long workPersonDeptId; + + @ApiModelProperty("负责人所属部门名称(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonDeptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + + @Override + public String toString() { + return "WorkSiteInfo{" + + "id=" + id + + ", workTitle=" + workTitle + + ", workPerson=" + workPerson + + ", workSiteDesc=" + workSiteDesc + + ", projectState=" + projectState + + ", imageUrl=" + imageUrl + + ", updateTime=" + updateTime + + ", workRoad=" + workRoad + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java new file mode 100644 index 0000000..28a4daa --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java @@ -0,0 +1,147 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Worker") +@TableName("br_worker") +@Data +public class Worker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "人员ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 姓名 + */ + @ApiModelProperty(value = "姓名") + @TableField("WORKER_NAME") + private String workerName; + + /** + * 性别 + */ + @ApiModelProperty(value = "性别") + @TableField("GENDER") + private String gender; + + /** + * 所属部门 + */ + @ApiModelProperty(value = "所属部门(人员管理)") + @TableField("DEPT_ID") + private Long deptId; + + /** + * 所属单位 + */ + @ApiModelProperty(value = "所属单位(入场申请中使用)") + @TableField("OWNER_SHIP") + private String ownerShip; + + /** + * 联系方式 + */ + @ApiModelProperty(value = "联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 证件号 + */ + @ApiModelProperty(value = "证件号") + @TableField("ID_CARD_NUMBER") + private String idCardNumber; + + /** + * 入场原因 + */ + @ApiModelProperty(value = "入场原因(入场申请中使用)") + @TableField("ENTER_REASON") + private String enterReason; + + /** + * 入场人脸照片 + */ + @ApiModelProperty(value = "人脸照片(照片路径)") + @TableField("WORKER_AVATAR") + private String workerAvatar; + + /** + * 申请入场时间 + */ + @ApiModelProperty(value = "注册时间/申请入场时间") + @TableField("CREATE_TIME") + private Date createTime; + + /** + * 人员类型 + */ + @ApiModelProperty(value = "人员类型(区分人员管理和入场申请)") + @TableField("WORKER_TYPE") + private String workerType; + + @ApiModelProperty(value = "性别名称") + @TableField(exist = false) + private String genderName; + + @ApiModelProperty(value = "部门名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @ApiModelProperty(value = "是否注册(0未注册;1已注册)",allowableValues = "0,1") + @TableField(exist = false) + private String isRegister; + + @Override + public String toString() { + return "Worker{" + + "id=" + id + + ", workerName=" + workerName + + ", gender=" + gender + + ", deptId=" + deptId + + ", ownerShip=" + ownerShip + + ", phoneNumber=" + phoneNumber + + ", idCardNumber=" + idCardNumber + + ", enterReason=" + enterReason + + ", workerAvatar=" + workerAvatar + + ", createTime=" + createTime + + ", workerType=" + workerType + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java new file mode 100644 index 0000000..9801742 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警记录表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusAlarmMapper extends BaseMapper { + + Page listPage(Page page,@Param("ew") QueryWrapper queryWrapper); + + void cancelAlarm(@Param("deviceId")Long deviceId,@Param("alarmType") String alarmType); + + List alarmCount(@Param("projectId")Long projectId, @Param("alarmStatus")String alarmStatus); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java new file mode 100644 index 0000000..9590b7d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件图片表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventImageMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java new file mode 100644 index 0000000..3c85edf --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java new file mode 100644 index 0000000..4ca9212 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 设备扩展信息表(安全树) Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface DeviceExtMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java new file mode 100644 index 0000000..444c0c5 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Mapper +public interface DeviceMapper extends BaseMapper { + + Page listDetailPage(Page page,@Param("ew") QueryWrapper ew); + + List selectProjectDevice(@Param("projectId") Long projectId); + + List selectHelmetList(@Param("deviceType")String deviceType); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java new file mode 100644 index 0000000..1d0c14e --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectDeviceMapper extends BaseMapper { + List selectDetailByProjectId(@Param("projectId") Long projectId); + + List selectDeviceLocationList(@Param("projectId") Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java new file mode 100644 index 0000000..58583d1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectWorkerMapper extends BaseMapper { + + List selectDetailByProjectId(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + + List selectWorkerLocationList(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java new file mode 100644 index 0000000..a4934d2 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +/** + *

+ * 作业现场表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkSiteInfoMapper extends BaseMapper { + + Page selectListPage(Page page,@Param("ew") QueryWrapper ew); +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java new file mode 100644 index 0000000..73d7799 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.dto; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "AlarmUpload",description = "报警上传") +@Data +public class AlarmUpload { + + @ApiModelProperty(value = "摄像头ip") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + @ApiModelProperty(value = "安全树甲烷设备ip") + private String gasIp; + @ApiModelProperty(value = "安全树甲烷设备端口") + private String gasPort; + @ApiModelProperty(value = "报警值") + private String alarmValue; + @ApiModelProperty(value = "报警时间") + private String alarmTime; + @ApiModelProperty(value = "报警类型") + private String alarmType; + @ApiModelProperty(value = "报警图片") + private String alarmImage; + @ApiModelProperty(value = "报警内容") + private String alarmContent; + + @Override + public String toString() { + return "AlarmUpload{" + + "cameraIp='" + cameraIp + '\'' + + ", cameraPort='" + cameraPort + '\'' + + ", gasIp='" + gasIp + '\'' + + ", gasPort='" + gasPort + '\'' + + ", alarmValue='" + alarmValue + '\'' + + ", alarmTime='" + alarmTime + '\'' + + ", alarmType='" + alarmType + '\'' + + ", alarmImage='" + (StrUtil.isNotEmpty(alarmImage) ? alarmImage.substring(0,50) : "null") + '\'' + + ", alarmContent='" + alarmContent + '\'' + + '}'; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java new file mode 100644 index 0000000..ea518d9 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.modular.system.entity.Device; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("DeviceDetailDTO") +@Data +public class DeviceDetailDTO extends Device { + + @ApiModelProperty(value = "摄像头编号") + private String cameraCode; + + @ApiModelProperty(value = "摄像头IP") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + + @ApiModelProperty(value = "激甲编号") + private String gasCode; + + @ApiModelProperty(value = "激甲IP") + private String gasIp; + + @ApiModelProperty(value = "激甲端口") + private String gasPort; + + @ApiModelProperty(value = "智能帽衬编号") + private String hatLiningCode; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java new file mode 100644 index 0000000..29378ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("WorkSiteDetailDTO") +public class WorkSiteDetailDTO extends WorkSiteInfo { + + @ApiModelProperty(value = "安全树列表",dataType = "ProjectDevice") + private List deviceList; + + @ApiModelProperty(value = "人员列表",dataType = "ProjectWorker") + private List workerList; + + + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java new file mode 100644 index 0000000..6fd7b24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java @@ -0,0 +1,68 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "WorkerLocationDTO",description = "人员位置列表(首页)") +@Data +public class WorkerLocationDTO { + + @ApiModelProperty("人员ID") + private Long workerId; + + @ApiModelProperty("人员姓名") + private String workerName; + + @ApiModelProperty("安全帽编号") + private String hatCode; + + @ApiModelProperty("安全帽ID") + private Long hatId; + + @ApiModelProperty("背心编号") + private String vastCode; + + @ApiModelProperty("手环编号") + private String braceletCode; + + @ApiModelProperty("位置") + private String location; + + @ApiModelProperty("时间") + private String time; + + @ApiModelProperty("经度") + private String lng; + + @ApiModelProperty("纬度") + private String lat; + + @ApiModelProperty("心率") + private String heartRate; + + @ApiModelProperty("血氧") + private String bloodOxygen; + + @ApiModelProperty("一氧化碳") + private String co; + + @ApiModelProperty("甲烷") + private String gas; + + @ApiModelProperty("硫化氢") + private String h2s; + + @ApiModelProperty("氧气") + private String o2; + + @ApiModelProperty("信号") + private String signal; + + @ApiModelProperty("电量") + private String cell; + + @ApiModelProperty("是否报警") + private boolean alarmFlag; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java new file mode 100644 index 0000000..efb4a23 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java @@ -0,0 +1,159 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 报警记录表 + *

+ * + * @author zyj + * @since 2023-05-16 + */ +@Data +@ApiModel("Alarm") +@TableName("br_bus_alarm") +public class BusAlarm implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @ApiModelProperty(value = "设备ID") + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 报警类型 + */ + @ApiModelProperty(value = "报警类型") + @TableField("ALARM_TYPE") + private String alarmType; + + /** + * 报警状态 + */ + @ApiModelProperty(value = "报警状态") + @TableField("ALARM_STATUS") + private String alarmStatus; + + /** + * 报警值 + */ + @ApiModelProperty(value = "报警值") + @TableField("ALARM_VALUE") + private String alarmValue; + + /** + * 报警图片 + */ + @ApiModelProperty(value = "报警图片") + @TableField("ALARM_IMAGE") + private String alarmImage; + + /** + * 报警内容 + */ + @ApiModelProperty(value = "报警内容") + @TableField("ALARM_CONTENT") + private String alarmContent; + + /** + * 报警时间 + */ + @ApiModelProperty(value = "报警时间") + @TableField("ALARM_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date alarmTime; + + /** + * 消警时间 + */ + @ApiModelProperty(value = "消警时间") + @TableField("CANCEL_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + /** + * 报警位置经度 + */ + @ApiModelProperty(value = "报警位置经度") + @TableField("ALARM_LNG") + private String alarmLng; + + /** + * 报警位置纬度 + */ + @ApiModelProperty(value = "报警位置纬度") + @TableField("ALARM_LAT") + private String alarmLat; + + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmStatusName; + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmTypeName; + @ApiModelProperty("作业名称") + @TableField(exist = false) + private String workTitle; + @ApiModelProperty("所属道路") + @TableField(exist = false) + private String workRoad; + @ApiModelProperty("作业状态") + @TableField(exist = false) + private String projectState; + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + @ApiModelProperty("负责人姓名") + @TableField(exist = false) + private String workPersonName; + @ApiModelProperty("负责人联系方式") + @TableField(exist = false) + private String workPersonPhoneNumber; + + + @Override + public String toString() { + return "BusAlarm{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + ", alarmType=" + alarmType + + ", alarmValue=" + alarmValue + + ", alarmStatus=" + alarmStatus + + ", alarmImage=" + alarmImage + + ", alarmContent=" + alarmContent + + ", alarmTime=" + alarmTime + + ", cancelTime=" + cancelTime + + ", alarmLng=" + alarmLng + + ", alarmLat=" + alarmLat + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java new file mode 100644 index 0000000..a0b7543 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + *

+ * 事件表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event") +@Data +@ApiModel("BusEvent") +public class BusEvent implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("事件ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件标题 + */ + @ApiModelProperty("事件名称") + @TableField("EVENT_TITLE") + private String eventTitle; + + /** + * 上报人员 + */ + @ApiModelProperty("上报人员") + @TableField("UPLOAD_NAME") + private String uploadName; + + /** + * 联系方式 + */ + @ApiModelProperty("联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 事件描述 + */ + @ApiModelProperty("事件描述") + @TableField("EVENT_DESCRIPTION") + private String eventDescription; + + @ApiModelProperty("经度") + @TableField("LNG") + private String lng; + + @ApiModelProperty("纬度") + @TableField("LAT") + private String lat; + + /** + * 事件上传时间 + */ + @ApiModelProperty("事件上传时间") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty("事件照片") + @TableField(exist = false) + private List imageList; + + + + @Override + public String toString() { + return "BusEvent{" + + "id=" + id + + ", eventTitle=" + eventTitle + + ", uploadName=" + uploadName + + ", phoneNumber=" + phoneNumber + + ", eventDescription=" + eventDescription + + ", lng=" + lng + + ", lat=" + lat + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java new file mode 100644 index 0000000..1e75245 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 事件图片表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event_image") +@Data +@ApiModel("BusEventImage") +public class BusEventImage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件ID + */ + @TableField("EVENT_ID") + private Long eventId; + + /** + * 报警图片 + */ + @TableField("IMAGE") + @ApiModelProperty("图片url") + private String image; + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java new file mode 100644 index 0000000..df89c70 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.core.base.json.DateDeserializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Device") +@TableName("br_device") +@Data +public class Device implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "设备ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty(value = "设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + /** + * 设备类型 + */ + @ApiModelProperty(value = "设备类型") + @TableField("DEVICE_TYPE") + private String deviceType; + + /** + * 设备批次 + */ + @ApiModelProperty(value = "设备批次") + @TableField("DEVICE_BATCH") + private String deviceBatch; + + /** + * 厂家 + */ + @ApiModelProperty(value = "厂家") + @TableField("MANUFACTURER") + private String manufacturer; + + /** + * 是否供电 + */ + @ApiModelProperty(value = "是否供电") + @TableField("IS_POWER_SUPPLY") + private String isPowerSupply; + + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间",dataType = "Date") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty(value = "设备类型名称") + @TableField(exist = false) + private String deviceTypeName; + + @ApiModelProperty(value = "是否供电名称") + @TableField(exist = false) + private String isPowerSupplyName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", deviceCode=" + deviceCode + + ", deviceType=" + deviceType + + ", deviceBatch=" + deviceBatch + + ", manufacturer=" + manufacturer + + ", isPowerSupply=" + isPowerSupply + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java new file mode 100644 index 0000000..5ee7015 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java @@ -0,0 +1,99 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 设备扩展信息表(安全树) + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Data +@TableName("br_device_ext") +public class DeviceExt implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 摄像头编号 + */ + @TableField("CAMERA_CODE") + private String cameraCode; + + /** + * 摄像头IP + */ + @TableField("CAMERA_IP") + private String cameraIp; + + /** + * 摄像头端口 + */ + @TableField("CAMERA_PORT") + private String cameraPort; + + /** + * 激甲编号 + */ + @TableField("GAS_CODE") + private String gasCode; + + /** + * 激甲IP + */ + @TableField("GAS_IP") + private String gasIp; + + /** + * 激甲端口 + */ + @TableField("GAS_PORT") + private String gasPort; + + /** + * 甲烷报警阈值 + */ + @TableField("GAS_THRESHOLD") + private String gasThreshold; + + @TableField(value = "HAT_LINING_CODE") + private String hatLiningCode; + + + @Override + public String toString() { + return "DeviceExt{" + + "id=" + id + + ", deviceId=" + deviceId + + ", cameraCode=" + cameraCode + + ", cameraIp=" + cameraIp + + ", cameraPort=" + cameraPort + + ", gasCode=" + gasCode + + ", gasIp=" + gasIp + + ", gasPort=" + gasPort + + ", gasThreshold=" + gasThreshold + + ", hatLiningCode=" + hatLiningCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java new file mode 100644 index 0000000..c4f3472 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java @@ -0,0 +1,62 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Data +@ApiModel("ProjectDevice") +@TableName("br_project_device") +public class ProjectDevice implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + @ApiModelProperty("设备ID(新增编辑时传)") + private Long deviceId; + + /** + * 设备编号 + */ + @TableField(exist = false) + @ApiModelProperty("设备编号(详情中展示,新增编辑不用传)") + private String deviceCode; + + @Override + public String toString() { + return "ProjectDevice{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java new file mode 100644 index 0000000..10b23c4 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java @@ -0,0 +1,104 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("ProjectWorker") +@TableName("br_project_worker") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ProjectWorker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 人员ID + */ + @ApiModelProperty("人员ID") + @TableField("WORKER_ID") + private Long workerId; + + /** + * 安全帽编号 + */ + @ApiModelProperty("安全帽编号") + @TableField("HAT_CODE") + private String hatCode; + + /** + * 背心编号 + */ + @ApiModelProperty("背心编号") + @TableField("VAST_CODE") + private String vastCode; + + /** + * 手环编号 + */ + @ApiModelProperty("手环编号") + @TableField("BRACELET_CODE") + private String braceletCode; + + @ApiModelProperty("人员姓名(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerName; + + @ApiModelProperty("人员部门ID(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptId; + + @ApiModelProperty("人员部门名称(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptName; + + @ApiModelProperty("人员联系方式(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerPhoneNumber; + + public ProjectWorker(Long projectId, Long workerId) { + this.projectId = projectId; + this.workerId = workerId; + } + + @Override + public String toString() { + return "ProjectWorker{" + + "id=" + id + + ", projectId=" + projectId + + ", workerId=" + workerId + + ", hatCode=" + hatCode + + ", vastCode=" + vastCode + + ", braceletCode=" + braceletCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java new file mode 100644 index 0000000..fa6f41d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 作业现场表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("WorkSiteInfo") +@TableName("br_work_site_info") +@Data +public class WorkSiteInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("作业现场ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业名称 + */ + @ApiModelProperty("作业名称") + @TableField("WORK_TITLE") + private String workTitle; + + /** + * 责任人 + */ + @ApiModelProperty("责任人(人员ID)") + @TableField("WORK_PERSON") + private Long workPerson; + + /** + * 作业描述 + */ + @ApiModelProperty("作业描述") + @TableField("WORK_SITE_DESC") + private String workSiteDesc; + + /** + * 作业状态 + */ + @ApiModelProperty("作业状态") + @TableField("PROJECT_STATE") + private String projectState; + + /** + * 所属道路 + */ + @ApiModelProperty("所属道路") + @TableField("WORK_ROAD") + private String workRoad; + + @TableField("IMAGE_URL") + private String imageUrl; + + @TableField("CREATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + @TableField("UPDATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("FINISH_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + @ApiModelProperty("负责人姓名(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonName; + + @ApiModelProperty("负责人联系方式(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonPhoneNumber; + + @ApiModelProperty("负责人所属部门ID(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private Long workPersonDeptId; + + @ApiModelProperty("负责人所属部门名称(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonDeptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + + @Override + public String toString() { + return "WorkSiteInfo{" + + "id=" + id + + ", workTitle=" + workTitle + + ", workPerson=" + workPerson + + ", workSiteDesc=" + workSiteDesc + + ", projectState=" + projectState + + ", imageUrl=" + imageUrl + + ", updateTime=" + updateTime + + ", workRoad=" + workRoad + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java new file mode 100644 index 0000000..28a4daa --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java @@ -0,0 +1,147 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Worker") +@TableName("br_worker") +@Data +public class Worker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "人员ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 姓名 + */ + @ApiModelProperty(value = "姓名") + @TableField("WORKER_NAME") + private String workerName; + + /** + * 性别 + */ + @ApiModelProperty(value = "性别") + @TableField("GENDER") + private String gender; + + /** + * 所属部门 + */ + @ApiModelProperty(value = "所属部门(人员管理)") + @TableField("DEPT_ID") + private Long deptId; + + /** + * 所属单位 + */ + @ApiModelProperty(value = "所属单位(入场申请中使用)") + @TableField("OWNER_SHIP") + private String ownerShip; + + /** + * 联系方式 + */ + @ApiModelProperty(value = "联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 证件号 + */ + @ApiModelProperty(value = "证件号") + @TableField("ID_CARD_NUMBER") + private String idCardNumber; + + /** + * 入场原因 + */ + @ApiModelProperty(value = "入场原因(入场申请中使用)") + @TableField("ENTER_REASON") + private String enterReason; + + /** + * 入场人脸照片 + */ + @ApiModelProperty(value = "人脸照片(照片路径)") + @TableField("WORKER_AVATAR") + private String workerAvatar; + + /** + * 申请入场时间 + */ + @ApiModelProperty(value = "注册时间/申请入场时间") + @TableField("CREATE_TIME") + private Date createTime; + + /** + * 人员类型 + */ + @ApiModelProperty(value = "人员类型(区分人员管理和入场申请)") + @TableField("WORKER_TYPE") + private String workerType; + + @ApiModelProperty(value = "性别名称") + @TableField(exist = false) + private String genderName; + + @ApiModelProperty(value = "部门名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @ApiModelProperty(value = "是否注册(0未注册;1已注册)",allowableValues = "0,1") + @TableField(exist = false) + private String isRegister; + + @Override + public String toString() { + return "Worker{" + + "id=" + id + + ", workerName=" + workerName + + ", gender=" + gender + + ", deptId=" + deptId + + ", ownerShip=" + ownerShip + + ", phoneNumber=" + phoneNumber + + ", idCardNumber=" + idCardNumber + + ", enterReason=" + enterReason + + ", workerAvatar=" + workerAvatar + + ", createTime=" + createTime + + ", workerType=" + workerType + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java new file mode 100644 index 0000000..9801742 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警记录表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusAlarmMapper extends BaseMapper { + + Page listPage(Page page,@Param("ew") QueryWrapper queryWrapper); + + void cancelAlarm(@Param("deviceId")Long deviceId,@Param("alarmType") String alarmType); + + List alarmCount(@Param("projectId")Long projectId, @Param("alarmStatus")String alarmStatus); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java new file mode 100644 index 0000000..9590b7d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件图片表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventImageMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java new file mode 100644 index 0000000..3c85edf --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java new file mode 100644 index 0000000..4ca9212 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 设备扩展信息表(安全树) Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface DeviceExtMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java new file mode 100644 index 0000000..444c0c5 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Mapper +public interface DeviceMapper extends BaseMapper { + + Page listDetailPage(Page page,@Param("ew") QueryWrapper ew); + + List selectProjectDevice(@Param("projectId") Long projectId); + + List selectHelmetList(@Param("deviceType")String deviceType); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java new file mode 100644 index 0000000..1d0c14e --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectDeviceMapper extends BaseMapper { + List selectDetailByProjectId(@Param("projectId") Long projectId); + + List selectDeviceLocationList(@Param("projectId") Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java new file mode 100644 index 0000000..58583d1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectWorkerMapper extends BaseMapper { + + List selectDetailByProjectId(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + + List selectWorkerLocationList(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java new file mode 100644 index 0000000..a4934d2 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +/** + *

+ * 作业现场表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkSiteInfoMapper extends BaseMapper { + + Page selectListPage(Page page,@Param("ew") QueryWrapper ew); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java new file mode 100644 index 0000000..258fb12 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkerMapper extends BaseMapper { + + + Page selectListPage(Page page, @Param("ew") QueryWrapper ew); + + List selectWorkerAvatars(@Param("projectId")Long projectId); + + +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java new file mode 100644 index 0000000..73d7799 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.dto; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "AlarmUpload",description = "报警上传") +@Data +public class AlarmUpload { + + @ApiModelProperty(value = "摄像头ip") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + @ApiModelProperty(value = "安全树甲烷设备ip") + private String gasIp; + @ApiModelProperty(value = "安全树甲烷设备端口") + private String gasPort; + @ApiModelProperty(value = "报警值") + private String alarmValue; + @ApiModelProperty(value = "报警时间") + private String alarmTime; + @ApiModelProperty(value = "报警类型") + private String alarmType; + @ApiModelProperty(value = "报警图片") + private String alarmImage; + @ApiModelProperty(value = "报警内容") + private String alarmContent; + + @Override + public String toString() { + return "AlarmUpload{" + + "cameraIp='" + cameraIp + '\'' + + ", cameraPort='" + cameraPort + '\'' + + ", gasIp='" + gasIp + '\'' + + ", gasPort='" + gasPort + '\'' + + ", alarmValue='" + alarmValue + '\'' + + ", alarmTime='" + alarmTime + '\'' + + ", alarmType='" + alarmType + '\'' + + ", alarmImage='" + (StrUtil.isNotEmpty(alarmImage) ? alarmImage.substring(0,50) : "null") + '\'' + + ", alarmContent='" + alarmContent + '\'' + + '}'; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java new file mode 100644 index 0000000..ea518d9 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.modular.system.entity.Device; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("DeviceDetailDTO") +@Data +public class DeviceDetailDTO extends Device { + + @ApiModelProperty(value = "摄像头编号") + private String cameraCode; + + @ApiModelProperty(value = "摄像头IP") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + + @ApiModelProperty(value = "激甲编号") + private String gasCode; + + @ApiModelProperty(value = "激甲IP") + private String gasIp; + + @ApiModelProperty(value = "激甲端口") + private String gasPort; + + @ApiModelProperty(value = "智能帽衬编号") + private String hatLiningCode; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java new file mode 100644 index 0000000..29378ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("WorkSiteDetailDTO") +public class WorkSiteDetailDTO extends WorkSiteInfo { + + @ApiModelProperty(value = "安全树列表",dataType = "ProjectDevice") + private List deviceList; + + @ApiModelProperty(value = "人员列表",dataType = "ProjectWorker") + private List workerList; + + + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java new file mode 100644 index 0000000..6fd7b24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java @@ -0,0 +1,68 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "WorkerLocationDTO",description = "人员位置列表(首页)") +@Data +public class WorkerLocationDTO { + + @ApiModelProperty("人员ID") + private Long workerId; + + @ApiModelProperty("人员姓名") + private String workerName; + + @ApiModelProperty("安全帽编号") + private String hatCode; + + @ApiModelProperty("安全帽ID") + private Long hatId; + + @ApiModelProperty("背心编号") + private String vastCode; + + @ApiModelProperty("手环编号") + private String braceletCode; + + @ApiModelProperty("位置") + private String location; + + @ApiModelProperty("时间") + private String time; + + @ApiModelProperty("经度") + private String lng; + + @ApiModelProperty("纬度") + private String lat; + + @ApiModelProperty("心率") + private String heartRate; + + @ApiModelProperty("血氧") + private String bloodOxygen; + + @ApiModelProperty("一氧化碳") + private String co; + + @ApiModelProperty("甲烷") + private String gas; + + @ApiModelProperty("硫化氢") + private String h2s; + + @ApiModelProperty("氧气") + private String o2; + + @ApiModelProperty("信号") + private String signal; + + @ApiModelProperty("电量") + private String cell; + + @ApiModelProperty("是否报警") + private boolean alarmFlag; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java new file mode 100644 index 0000000..efb4a23 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java @@ -0,0 +1,159 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 报警记录表 + *

+ * + * @author zyj + * @since 2023-05-16 + */ +@Data +@ApiModel("Alarm") +@TableName("br_bus_alarm") +public class BusAlarm implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @ApiModelProperty(value = "设备ID") + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 报警类型 + */ + @ApiModelProperty(value = "报警类型") + @TableField("ALARM_TYPE") + private String alarmType; + + /** + * 报警状态 + */ + @ApiModelProperty(value = "报警状态") + @TableField("ALARM_STATUS") + private String alarmStatus; + + /** + * 报警值 + */ + @ApiModelProperty(value = "报警值") + @TableField("ALARM_VALUE") + private String alarmValue; + + /** + * 报警图片 + */ + @ApiModelProperty(value = "报警图片") + @TableField("ALARM_IMAGE") + private String alarmImage; + + /** + * 报警内容 + */ + @ApiModelProperty(value = "报警内容") + @TableField("ALARM_CONTENT") + private String alarmContent; + + /** + * 报警时间 + */ + @ApiModelProperty(value = "报警时间") + @TableField("ALARM_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date alarmTime; + + /** + * 消警时间 + */ + @ApiModelProperty(value = "消警时间") + @TableField("CANCEL_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + /** + * 报警位置经度 + */ + @ApiModelProperty(value = "报警位置经度") + @TableField("ALARM_LNG") + private String alarmLng; + + /** + * 报警位置纬度 + */ + @ApiModelProperty(value = "报警位置纬度") + @TableField("ALARM_LAT") + private String alarmLat; + + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmStatusName; + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmTypeName; + @ApiModelProperty("作业名称") + @TableField(exist = false) + private String workTitle; + @ApiModelProperty("所属道路") + @TableField(exist = false) + private String workRoad; + @ApiModelProperty("作业状态") + @TableField(exist = false) + private String projectState; + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + @ApiModelProperty("负责人姓名") + @TableField(exist = false) + private String workPersonName; + @ApiModelProperty("负责人联系方式") + @TableField(exist = false) + private String workPersonPhoneNumber; + + + @Override + public String toString() { + return "BusAlarm{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + ", alarmType=" + alarmType + + ", alarmValue=" + alarmValue + + ", alarmStatus=" + alarmStatus + + ", alarmImage=" + alarmImage + + ", alarmContent=" + alarmContent + + ", alarmTime=" + alarmTime + + ", cancelTime=" + cancelTime + + ", alarmLng=" + alarmLng + + ", alarmLat=" + alarmLat + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java new file mode 100644 index 0000000..a0b7543 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + *

+ * 事件表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event") +@Data +@ApiModel("BusEvent") +public class BusEvent implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("事件ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件标题 + */ + @ApiModelProperty("事件名称") + @TableField("EVENT_TITLE") + private String eventTitle; + + /** + * 上报人员 + */ + @ApiModelProperty("上报人员") + @TableField("UPLOAD_NAME") + private String uploadName; + + /** + * 联系方式 + */ + @ApiModelProperty("联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 事件描述 + */ + @ApiModelProperty("事件描述") + @TableField("EVENT_DESCRIPTION") + private String eventDescription; + + @ApiModelProperty("经度") + @TableField("LNG") + private String lng; + + @ApiModelProperty("纬度") + @TableField("LAT") + private String lat; + + /** + * 事件上传时间 + */ + @ApiModelProperty("事件上传时间") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty("事件照片") + @TableField(exist = false) + private List imageList; + + + + @Override + public String toString() { + return "BusEvent{" + + "id=" + id + + ", eventTitle=" + eventTitle + + ", uploadName=" + uploadName + + ", phoneNumber=" + phoneNumber + + ", eventDescription=" + eventDescription + + ", lng=" + lng + + ", lat=" + lat + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java new file mode 100644 index 0000000..1e75245 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 事件图片表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event_image") +@Data +@ApiModel("BusEventImage") +public class BusEventImage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件ID + */ + @TableField("EVENT_ID") + private Long eventId; + + /** + * 报警图片 + */ + @TableField("IMAGE") + @ApiModelProperty("图片url") + private String image; + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java new file mode 100644 index 0000000..df89c70 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.core.base.json.DateDeserializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Device") +@TableName("br_device") +@Data +public class Device implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "设备ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty(value = "设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + /** + * 设备类型 + */ + @ApiModelProperty(value = "设备类型") + @TableField("DEVICE_TYPE") + private String deviceType; + + /** + * 设备批次 + */ + @ApiModelProperty(value = "设备批次") + @TableField("DEVICE_BATCH") + private String deviceBatch; + + /** + * 厂家 + */ + @ApiModelProperty(value = "厂家") + @TableField("MANUFACTURER") + private String manufacturer; + + /** + * 是否供电 + */ + @ApiModelProperty(value = "是否供电") + @TableField("IS_POWER_SUPPLY") + private String isPowerSupply; + + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间",dataType = "Date") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty(value = "设备类型名称") + @TableField(exist = false) + private String deviceTypeName; + + @ApiModelProperty(value = "是否供电名称") + @TableField(exist = false) + private String isPowerSupplyName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", deviceCode=" + deviceCode + + ", deviceType=" + deviceType + + ", deviceBatch=" + deviceBatch + + ", manufacturer=" + manufacturer + + ", isPowerSupply=" + isPowerSupply + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java new file mode 100644 index 0000000..5ee7015 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java @@ -0,0 +1,99 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 设备扩展信息表(安全树) + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Data +@TableName("br_device_ext") +public class DeviceExt implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 摄像头编号 + */ + @TableField("CAMERA_CODE") + private String cameraCode; + + /** + * 摄像头IP + */ + @TableField("CAMERA_IP") + private String cameraIp; + + /** + * 摄像头端口 + */ + @TableField("CAMERA_PORT") + private String cameraPort; + + /** + * 激甲编号 + */ + @TableField("GAS_CODE") + private String gasCode; + + /** + * 激甲IP + */ + @TableField("GAS_IP") + private String gasIp; + + /** + * 激甲端口 + */ + @TableField("GAS_PORT") + private String gasPort; + + /** + * 甲烷报警阈值 + */ + @TableField("GAS_THRESHOLD") + private String gasThreshold; + + @TableField(value = "HAT_LINING_CODE") + private String hatLiningCode; + + + @Override + public String toString() { + return "DeviceExt{" + + "id=" + id + + ", deviceId=" + deviceId + + ", cameraCode=" + cameraCode + + ", cameraIp=" + cameraIp + + ", cameraPort=" + cameraPort + + ", gasCode=" + gasCode + + ", gasIp=" + gasIp + + ", gasPort=" + gasPort + + ", gasThreshold=" + gasThreshold + + ", hatLiningCode=" + hatLiningCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java new file mode 100644 index 0000000..c4f3472 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java @@ -0,0 +1,62 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Data +@ApiModel("ProjectDevice") +@TableName("br_project_device") +public class ProjectDevice implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + @ApiModelProperty("设备ID(新增编辑时传)") + private Long deviceId; + + /** + * 设备编号 + */ + @TableField(exist = false) + @ApiModelProperty("设备编号(详情中展示,新增编辑不用传)") + private String deviceCode; + + @Override + public String toString() { + return "ProjectDevice{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java new file mode 100644 index 0000000..10b23c4 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java @@ -0,0 +1,104 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("ProjectWorker") +@TableName("br_project_worker") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ProjectWorker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 人员ID + */ + @ApiModelProperty("人员ID") + @TableField("WORKER_ID") + private Long workerId; + + /** + * 安全帽编号 + */ + @ApiModelProperty("安全帽编号") + @TableField("HAT_CODE") + private String hatCode; + + /** + * 背心编号 + */ + @ApiModelProperty("背心编号") + @TableField("VAST_CODE") + private String vastCode; + + /** + * 手环编号 + */ + @ApiModelProperty("手环编号") + @TableField("BRACELET_CODE") + private String braceletCode; + + @ApiModelProperty("人员姓名(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerName; + + @ApiModelProperty("人员部门ID(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptId; + + @ApiModelProperty("人员部门名称(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptName; + + @ApiModelProperty("人员联系方式(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerPhoneNumber; + + public ProjectWorker(Long projectId, Long workerId) { + this.projectId = projectId; + this.workerId = workerId; + } + + @Override + public String toString() { + return "ProjectWorker{" + + "id=" + id + + ", projectId=" + projectId + + ", workerId=" + workerId + + ", hatCode=" + hatCode + + ", vastCode=" + vastCode + + ", braceletCode=" + braceletCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java new file mode 100644 index 0000000..fa6f41d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 作业现场表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("WorkSiteInfo") +@TableName("br_work_site_info") +@Data +public class WorkSiteInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("作业现场ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业名称 + */ + @ApiModelProperty("作业名称") + @TableField("WORK_TITLE") + private String workTitle; + + /** + * 责任人 + */ + @ApiModelProperty("责任人(人员ID)") + @TableField("WORK_PERSON") + private Long workPerson; + + /** + * 作业描述 + */ + @ApiModelProperty("作业描述") + @TableField("WORK_SITE_DESC") + private String workSiteDesc; + + /** + * 作业状态 + */ + @ApiModelProperty("作业状态") + @TableField("PROJECT_STATE") + private String projectState; + + /** + * 所属道路 + */ + @ApiModelProperty("所属道路") + @TableField("WORK_ROAD") + private String workRoad; + + @TableField("IMAGE_URL") + private String imageUrl; + + @TableField("CREATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + @TableField("UPDATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("FINISH_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + @ApiModelProperty("负责人姓名(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonName; + + @ApiModelProperty("负责人联系方式(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonPhoneNumber; + + @ApiModelProperty("负责人所属部门ID(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private Long workPersonDeptId; + + @ApiModelProperty("负责人所属部门名称(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonDeptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + + @Override + public String toString() { + return "WorkSiteInfo{" + + "id=" + id + + ", workTitle=" + workTitle + + ", workPerson=" + workPerson + + ", workSiteDesc=" + workSiteDesc + + ", projectState=" + projectState + + ", imageUrl=" + imageUrl + + ", updateTime=" + updateTime + + ", workRoad=" + workRoad + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java new file mode 100644 index 0000000..28a4daa --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java @@ -0,0 +1,147 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Worker") +@TableName("br_worker") +@Data +public class Worker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "人员ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 姓名 + */ + @ApiModelProperty(value = "姓名") + @TableField("WORKER_NAME") + private String workerName; + + /** + * 性别 + */ + @ApiModelProperty(value = "性别") + @TableField("GENDER") + private String gender; + + /** + * 所属部门 + */ + @ApiModelProperty(value = "所属部门(人员管理)") + @TableField("DEPT_ID") + private Long deptId; + + /** + * 所属单位 + */ + @ApiModelProperty(value = "所属单位(入场申请中使用)") + @TableField("OWNER_SHIP") + private String ownerShip; + + /** + * 联系方式 + */ + @ApiModelProperty(value = "联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 证件号 + */ + @ApiModelProperty(value = "证件号") + @TableField("ID_CARD_NUMBER") + private String idCardNumber; + + /** + * 入场原因 + */ + @ApiModelProperty(value = "入场原因(入场申请中使用)") + @TableField("ENTER_REASON") + private String enterReason; + + /** + * 入场人脸照片 + */ + @ApiModelProperty(value = "人脸照片(照片路径)") + @TableField("WORKER_AVATAR") + private String workerAvatar; + + /** + * 申请入场时间 + */ + @ApiModelProperty(value = "注册时间/申请入场时间") + @TableField("CREATE_TIME") + private Date createTime; + + /** + * 人员类型 + */ + @ApiModelProperty(value = "人员类型(区分人员管理和入场申请)") + @TableField("WORKER_TYPE") + private String workerType; + + @ApiModelProperty(value = "性别名称") + @TableField(exist = false) + private String genderName; + + @ApiModelProperty(value = "部门名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @ApiModelProperty(value = "是否注册(0未注册;1已注册)",allowableValues = "0,1") + @TableField(exist = false) + private String isRegister; + + @Override + public String toString() { + return "Worker{" + + "id=" + id + + ", workerName=" + workerName + + ", gender=" + gender + + ", deptId=" + deptId + + ", ownerShip=" + ownerShip + + ", phoneNumber=" + phoneNumber + + ", idCardNumber=" + idCardNumber + + ", enterReason=" + enterReason + + ", workerAvatar=" + workerAvatar + + ", createTime=" + createTime + + ", workerType=" + workerType + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java new file mode 100644 index 0000000..9801742 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警记录表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusAlarmMapper extends BaseMapper { + + Page listPage(Page page,@Param("ew") QueryWrapper queryWrapper); + + void cancelAlarm(@Param("deviceId")Long deviceId,@Param("alarmType") String alarmType); + + List alarmCount(@Param("projectId")Long projectId, @Param("alarmStatus")String alarmStatus); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java new file mode 100644 index 0000000..9590b7d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件图片表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventImageMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java new file mode 100644 index 0000000..3c85edf --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java new file mode 100644 index 0000000..4ca9212 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 设备扩展信息表(安全树) Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface DeviceExtMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java new file mode 100644 index 0000000..444c0c5 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Mapper +public interface DeviceMapper extends BaseMapper { + + Page listDetailPage(Page page,@Param("ew") QueryWrapper ew); + + List selectProjectDevice(@Param("projectId") Long projectId); + + List selectHelmetList(@Param("deviceType")String deviceType); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java new file mode 100644 index 0000000..1d0c14e --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectDeviceMapper extends BaseMapper { + List selectDetailByProjectId(@Param("projectId") Long projectId); + + List selectDeviceLocationList(@Param("projectId") Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java new file mode 100644 index 0000000..58583d1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectWorkerMapper extends BaseMapper { + + List selectDetailByProjectId(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + + List selectWorkerLocationList(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java new file mode 100644 index 0000000..a4934d2 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +/** + *

+ * 作业现场表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkSiteInfoMapper extends BaseMapper { + + Page selectListPage(Page page,@Param("ew") QueryWrapper ew); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java new file mode 100644 index 0000000..258fb12 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkerMapper extends BaseMapper { + + + Page selectListPage(Page page, @Param("ew") QueryWrapper ew); + + List selectWorkerAvatars(@Param("projectId")Long projectId); + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml new file mode 100644 index 0000000..595088a --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml @@ -0,0 +1,58 @@ + + + + + + + + + + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java new file mode 100644 index 0000000..73d7799 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.dto; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "AlarmUpload",description = "报警上传") +@Data +public class AlarmUpload { + + @ApiModelProperty(value = "摄像头ip") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + @ApiModelProperty(value = "安全树甲烷设备ip") + private String gasIp; + @ApiModelProperty(value = "安全树甲烷设备端口") + private String gasPort; + @ApiModelProperty(value = "报警值") + private String alarmValue; + @ApiModelProperty(value = "报警时间") + private String alarmTime; + @ApiModelProperty(value = "报警类型") + private String alarmType; + @ApiModelProperty(value = "报警图片") + private String alarmImage; + @ApiModelProperty(value = "报警内容") + private String alarmContent; + + @Override + public String toString() { + return "AlarmUpload{" + + "cameraIp='" + cameraIp + '\'' + + ", cameraPort='" + cameraPort + '\'' + + ", gasIp='" + gasIp + '\'' + + ", gasPort='" + gasPort + '\'' + + ", alarmValue='" + alarmValue + '\'' + + ", alarmTime='" + alarmTime + '\'' + + ", alarmType='" + alarmType + '\'' + + ", alarmImage='" + (StrUtil.isNotEmpty(alarmImage) ? alarmImage.substring(0,50) : "null") + '\'' + + ", alarmContent='" + alarmContent + '\'' + + '}'; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java new file mode 100644 index 0000000..ea518d9 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.modular.system.entity.Device; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("DeviceDetailDTO") +@Data +public class DeviceDetailDTO extends Device { + + @ApiModelProperty(value = "摄像头编号") + private String cameraCode; + + @ApiModelProperty(value = "摄像头IP") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + + @ApiModelProperty(value = "激甲编号") + private String gasCode; + + @ApiModelProperty(value = "激甲IP") + private String gasIp; + + @ApiModelProperty(value = "激甲端口") + private String gasPort; + + @ApiModelProperty(value = "智能帽衬编号") + private String hatLiningCode; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java new file mode 100644 index 0000000..29378ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("WorkSiteDetailDTO") +public class WorkSiteDetailDTO extends WorkSiteInfo { + + @ApiModelProperty(value = "安全树列表",dataType = "ProjectDevice") + private List deviceList; + + @ApiModelProperty(value = "人员列表",dataType = "ProjectWorker") + private List workerList; + + + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java new file mode 100644 index 0000000..6fd7b24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java @@ -0,0 +1,68 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "WorkerLocationDTO",description = "人员位置列表(首页)") +@Data +public class WorkerLocationDTO { + + @ApiModelProperty("人员ID") + private Long workerId; + + @ApiModelProperty("人员姓名") + private String workerName; + + @ApiModelProperty("安全帽编号") + private String hatCode; + + @ApiModelProperty("安全帽ID") + private Long hatId; + + @ApiModelProperty("背心编号") + private String vastCode; + + @ApiModelProperty("手环编号") + private String braceletCode; + + @ApiModelProperty("位置") + private String location; + + @ApiModelProperty("时间") + private String time; + + @ApiModelProperty("经度") + private String lng; + + @ApiModelProperty("纬度") + private String lat; + + @ApiModelProperty("心率") + private String heartRate; + + @ApiModelProperty("血氧") + private String bloodOxygen; + + @ApiModelProperty("一氧化碳") + private String co; + + @ApiModelProperty("甲烷") + private String gas; + + @ApiModelProperty("硫化氢") + private String h2s; + + @ApiModelProperty("氧气") + private String o2; + + @ApiModelProperty("信号") + private String signal; + + @ApiModelProperty("电量") + private String cell; + + @ApiModelProperty("是否报警") + private boolean alarmFlag; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java new file mode 100644 index 0000000..efb4a23 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java @@ -0,0 +1,159 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 报警记录表 + *

+ * + * @author zyj + * @since 2023-05-16 + */ +@Data +@ApiModel("Alarm") +@TableName("br_bus_alarm") +public class BusAlarm implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @ApiModelProperty(value = "设备ID") + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 报警类型 + */ + @ApiModelProperty(value = "报警类型") + @TableField("ALARM_TYPE") + private String alarmType; + + /** + * 报警状态 + */ + @ApiModelProperty(value = "报警状态") + @TableField("ALARM_STATUS") + private String alarmStatus; + + /** + * 报警值 + */ + @ApiModelProperty(value = "报警值") + @TableField("ALARM_VALUE") + private String alarmValue; + + /** + * 报警图片 + */ + @ApiModelProperty(value = "报警图片") + @TableField("ALARM_IMAGE") + private String alarmImage; + + /** + * 报警内容 + */ + @ApiModelProperty(value = "报警内容") + @TableField("ALARM_CONTENT") + private String alarmContent; + + /** + * 报警时间 + */ + @ApiModelProperty(value = "报警时间") + @TableField("ALARM_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date alarmTime; + + /** + * 消警时间 + */ + @ApiModelProperty(value = "消警时间") + @TableField("CANCEL_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + /** + * 报警位置经度 + */ + @ApiModelProperty(value = "报警位置经度") + @TableField("ALARM_LNG") + private String alarmLng; + + /** + * 报警位置纬度 + */ + @ApiModelProperty(value = "报警位置纬度") + @TableField("ALARM_LAT") + private String alarmLat; + + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmStatusName; + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmTypeName; + @ApiModelProperty("作业名称") + @TableField(exist = false) + private String workTitle; + @ApiModelProperty("所属道路") + @TableField(exist = false) + private String workRoad; + @ApiModelProperty("作业状态") + @TableField(exist = false) + private String projectState; + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + @ApiModelProperty("负责人姓名") + @TableField(exist = false) + private String workPersonName; + @ApiModelProperty("负责人联系方式") + @TableField(exist = false) + private String workPersonPhoneNumber; + + + @Override + public String toString() { + return "BusAlarm{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + ", alarmType=" + alarmType + + ", alarmValue=" + alarmValue + + ", alarmStatus=" + alarmStatus + + ", alarmImage=" + alarmImage + + ", alarmContent=" + alarmContent + + ", alarmTime=" + alarmTime + + ", cancelTime=" + cancelTime + + ", alarmLng=" + alarmLng + + ", alarmLat=" + alarmLat + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java new file mode 100644 index 0000000..a0b7543 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + *

+ * 事件表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event") +@Data +@ApiModel("BusEvent") +public class BusEvent implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("事件ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件标题 + */ + @ApiModelProperty("事件名称") + @TableField("EVENT_TITLE") + private String eventTitle; + + /** + * 上报人员 + */ + @ApiModelProperty("上报人员") + @TableField("UPLOAD_NAME") + private String uploadName; + + /** + * 联系方式 + */ + @ApiModelProperty("联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 事件描述 + */ + @ApiModelProperty("事件描述") + @TableField("EVENT_DESCRIPTION") + private String eventDescription; + + @ApiModelProperty("经度") + @TableField("LNG") + private String lng; + + @ApiModelProperty("纬度") + @TableField("LAT") + private String lat; + + /** + * 事件上传时间 + */ + @ApiModelProperty("事件上传时间") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty("事件照片") + @TableField(exist = false) + private List imageList; + + + + @Override + public String toString() { + return "BusEvent{" + + "id=" + id + + ", eventTitle=" + eventTitle + + ", uploadName=" + uploadName + + ", phoneNumber=" + phoneNumber + + ", eventDescription=" + eventDescription + + ", lng=" + lng + + ", lat=" + lat + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java new file mode 100644 index 0000000..1e75245 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 事件图片表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event_image") +@Data +@ApiModel("BusEventImage") +public class BusEventImage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件ID + */ + @TableField("EVENT_ID") + private Long eventId; + + /** + * 报警图片 + */ + @TableField("IMAGE") + @ApiModelProperty("图片url") + private String image; + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java new file mode 100644 index 0000000..df89c70 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.core.base.json.DateDeserializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Device") +@TableName("br_device") +@Data +public class Device implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "设备ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty(value = "设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + /** + * 设备类型 + */ + @ApiModelProperty(value = "设备类型") + @TableField("DEVICE_TYPE") + private String deviceType; + + /** + * 设备批次 + */ + @ApiModelProperty(value = "设备批次") + @TableField("DEVICE_BATCH") + private String deviceBatch; + + /** + * 厂家 + */ + @ApiModelProperty(value = "厂家") + @TableField("MANUFACTURER") + private String manufacturer; + + /** + * 是否供电 + */ + @ApiModelProperty(value = "是否供电") + @TableField("IS_POWER_SUPPLY") + private String isPowerSupply; + + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间",dataType = "Date") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty(value = "设备类型名称") + @TableField(exist = false) + private String deviceTypeName; + + @ApiModelProperty(value = "是否供电名称") + @TableField(exist = false) + private String isPowerSupplyName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", deviceCode=" + deviceCode + + ", deviceType=" + deviceType + + ", deviceBatch=" + deviceBatch + + ", manufacturer=" + manufacturer + + ", isPowerSupply=" + isPowerSupply + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java new file mode 100644 index 0000000..5ee7015 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java @@ -0,0 +1,99 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 设备扩展信息表(安全树) + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Data +@TableName("br_device_ext") +public class DeviceExt implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 摄像头编号 + */ + @TableField("CAMERA_CODE") + private String cameraCode; + + /** + * 摄像头IP + */ + @TableField("CAMERA_IP") + private String cameraIp; + + /** + * 摄像头端口 + */ + @TableField("CAMERA_PORT") + private String cameraPort; + + /** + * 激甲编号 + */ + @TableField("GAS_CODE") + private String gasCode; + + /** + * 激甲IP + */ + @TableField("GAS_IP") + private String gasIp; + + /** + * 激甲端口 + */ + @TableField("GAS_PORT") + private String gasPort; + + /** + * 甲烷报警阈值 + */ + @TableField("GAS_THRESHOLD") + private String gasThreshold; + + @TableField(value = "HAT_LINING_CODE") + private String hatLiningCode; + + + @Override + public String toString() { + return "DeviceExt{" + + "id=" + id + + ", deviceId=" + deviceId + + ", cameraCode=" + cameraCode + + ", cameraIp=" + cameraIp + + ", cameraPort=" + cameraPort + + ", gasCode=" + gasCode + + ", gasIp=" + gasIp + + ", gasPort=" + gasPort + + ", gasThreshold=" + gasThreshold + + ", hatLiningCode=" + hatLiningCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java new file mode 100644 index 0000000..c4f3472 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java @@ -0,0 +1,62 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Data +@ApiModel("ProjectDevice") +@TableName("br_project_device") +public class ProjectDevice implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + @ApiModelProperty("设备ID(新增编辑时传)") + private Long deviceId; + + /** + * 设备编号 + */ + @TableField(exist = false) + @ApiModelProperty("设备编号(详情中展示,新增编辑不用传)") + private String deviceCode; + + @Override + public String toString() { + return "ProjectDevice{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java new file mode 100644 index 0000000..10b23c4 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java @@ -0,0 +1,104 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("ProjectWorker") +@TableName("br_project_worker") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ProjectWorker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 人员ID + */ + @ApiModelProperty("人员ID") + @TableField("WORKER_ID") + private Long workerId; + + /** + * 安全帽编号 + */ + @ApiModelProperty("安全帽编号") + @TableField("HAT_CODE") + private String hatCode; + + /** + * 背心编号 + */ + @ApiModelProperty("背心编号") + @TableField("VAST_CODE") + private String vastCode; + + /** + * 手环编号 + */ + @ApiModelProperty("手环编号") + @TableField("BRACELET_CODE") + private String braceletCode; + + @ApiModelProperty("人员姓名(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerName; + + @ApiModelProperty("人员部门ID(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptId; + + @ApiModelProperty("人员部门名称(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptName; + + @ApiModelProperty("人员联系方式(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerPhoneNumber; + + public ProjectWorker(Long projectId, Long workerId) { + this.projectId = projectId; + this.workerId = workerId; + } + + @Override + public String toString() { + return "ProjectWorker{" + + "id=" + id + + ", projectId=" + projectId + + ", workerId=" + workerId + + ", hatCode=" + hatCode + + ", vastCode=" + vastCode + + ", braceletCode=" + braceletCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java new file mode 100644 index 0000000..fa6f41d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 作业现场表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("WorkSiteInfo") +@TableName("br_work_site_info") +@Data +public class WorkSiteInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("作业现场ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业名称 + */ + @ApiModelProperty("作业名称") + @TableField("WORK_TITLE") + private String workTitle; + + /** + * 责任人 + */ + @ApiModelProperty("责任人(人员ID)") + @TableField("WORK_PERSON") + private Long workPerson; + + /** + * 作业描述 + */ + @ApiModelProperty("作业描述") + @TableField("WORK_SITE_DESC") + private String workSiteDesc; + + /** + * 作业状态 + */ + @ApiModelProperty("作业状态") + @TableField("PROJECT_STATE") + private String projectState; + + /** + * 所属道路 + */ + @ApiModelProperty("所属道路") + @TableField("WORK_ROAD") + private String workRoad; + + @TableField("IMAGE_URL") + private String imageUrl; + + @TableField("CREATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + @TableField("UPDATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("FINISH_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + @ApiModelProperty("负责人姓名(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonName; + + @ApiModelProperty("负责人联系方式(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonPhoneNumber; + + @ApiModelProperty("负责人所属部门ID(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private Long workPersonDeptId; + + @ApiModelProperty("负责人所属部门名称(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonDeptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + + @Override + public String toString() { + return "WorkSiteInfo{" + + "id=" + id + + ", workTitle=" + workTitle + + ", workPerson=" + workPerson + + ", workSiteDesc=" + workSiteDesc + + ", projectState=" + projectState + + ", imageUrl=" + imageUrl + + ", updateTime=" + updateTime + + ", workRoad=" + workRoad + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java new file mode 100644 index 0000000..28a4daa --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java @@ -0,0 +1,147 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Worker") +@TableName("br_worker") +@Data +public class Worker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "人员ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 姓名 + */ + @ApiModelProperty(value = "姓名") + @TableField("WORKER_NAME") + private String workerName; + + /** + * 性别 + */ + @ApiModelProperty(value = "性别") + @TableField("GENDER") + private String gender; + + /** + * 所属部门 + */ + @ApiModelProperty(value = "所属部门(人员管理)") + @TableField("DEPT_ID") + private Long deptId; + + /** + * 所属单位 + */ + @ApiModelProperty(value = "所属单位(入场申请中使用)") + @TableField("OWNER_SHIP") + private String ownerShip; + + /** + * 联系方式 + */ + @ApiModelProperty(value = "联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 证件号 + */ + @ApiModelProperty(value = "证件号") + @TableField("ID_CARD_NUMBER") + private String idCardNumber; + + /** + * 入场原因 + */ + @ApiModelProperty(value = "入场原因(入场申请中使用)") + @TableField("ENTER_REASON") + private String enterReason; + + /** + * 入场人脸照片 + */ + @ApiModelProperty(value = "人脸照片(照片路径)") + @TableField("WORKER_AVATAR") + private String workerAvatar; + + /** + * 申请入场时间 + */ + @ApiModelProperty(value = "注册时间/申请入场时间") + @TableField("CREATE_TIME") + private Date createTime; + + /** + * 人员类型 + */ + @ApiModelProperty(value = "人员类型(区分人员管理和入场申请)") + @TableField("WORKER_TYPE") + private String workerType; + + @ApiModelProperty(value = "性别名称") + @TableField(exist = false) + private String genderName; + + @ApiModelProperty(value = "部门名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @ApiModelProperty(value = "是否注册(0未注册;1已注册)",allowableValues = "0,1") + @TableField(exist = false) + private String isRegister; + + @Override + public String toString() { + return "Worker{" + + "id=" + id + + ", workerName=" + workerName + + ", gender=" + gender + + ", deptId=" + deptId + + ", ownerShip=" + ownerShip + + ", phoneNumber=" + phoneNumber + + ", idCardNumber=" + idCardNumber + + ", enterReason=" + enterReason + + ", workerAvatar=" + workerAvatar + + ", createTime=" + createTime + + ", workerType=" + workerType + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java new file mode 100644 index 0000000..9801742 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警记录表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusAlarmMapper extends BaseMapper { + + Page listPage(Page page,@Param("ew") QueryWrapper queryWrapper); + + void cancelAlarm(@Param("deviceId")Long deviceId,@Param("alarmType") String alarmType); + + List alarmCount(@Param("projectId")Long projectId, @Param("alarmStatus")String alarmStatus); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java new file mode 100644 index 0000000..9590b7d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件图片表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventImageMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java new file mode 100644 index 0000000..3c85edf --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java new file mode 100644 index 0000000..4ca9212 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 设备扩展信息表(安全树) Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface DeviceExtMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java new file mode 100644 index 0000000..444c0c5 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Mapper +public interface DeviceMapper extends BaseMapper { + + Page listDetailPage(Page page,@Param("ew") QueryWrapper ew); + + List selectProjectDevice(@Param("projectId") Long projectId); + + List selectHelmetList(@Param("deviceType")String deviceType); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java new file mode 100644 index 0000000..1d0c14e --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectDeviceMapper extends BaseMapper { + List selectDetailByProjectId(@Param("projectId") Long projectId); + + List selectDeviceLocationList(@Param("projectId") Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java new file mode 100644 index 0000000..58583d1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectWorkerMapper extends BaseMapper { + + List selectDetailByProjectId(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + + List selectWorkerLocationList(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java new file mode 100644 index 0000000..a4934d2 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +/** + *

+ * 作业现场表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkSiteInfoMapper extends BaseMapper { + + Page selectListPage(Page page,@Param("ew") QueryWrapper ew); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java new file mode 100644 index 0000000..258fb12 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkerMapper extends BaseMapper { + + + Page selectListPage(Page page, @Param("ew") QueryWrapper ew); + + List selectWorkerAvatars(@Param("projectId")Long projectId); + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml new file mode 100644 index 0000000..595088a --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml @@ -0,0 +1,58 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml new file mode 100644 index 0000000..fbc3db3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java new file mode 100644 index 0000000..73d7799 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.dto; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "AlarmUpload",description = "报警上传") +@Data +public class AlarmUpload { + + @ApiModelProperty(value = "摄像头ip") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + @ApiModelProperty(value = "安全树甲烷设备ip") + private String gasIp; + @ApiModelProperty(value = "安全树甲烷设备端口") + private String gasPort; + @ApiModelProperty(value = "报警值") + private String alarmValue; + @ApiModelProperty(value = "报警时间") + private String alarmTime; + @ApiModelProperty(value = "报警类型") + private String alarmType; + @ApiModelProperty(value = "报警图片") + private String alarmImage; + @ApiModelProperty(value = "报警内容") + private String alarmContent; + + @Override + public String toString() { + return "AlarmUpload{" + + "cameraIp='" + cameraIp + '\'' + + ", cameraPort='" + cameraPort + '\'' + + ", gasIp='" + gasIp + '\'' + + ", gasPort='" + gasPort + '\'' + + ", alarmValue='" + alarmValue + '\'' + + ", alarmTime='" + alarmTime + '\'' + + ", alarmType='" + alarmType + '\'' + + ", alarmImage='" + (StrUtil.isNotEmpty(alarmImage) ? alarmImage.substring(0,50) : "null") + '\'' + + ", alarmContent='" + alarmContent + '\'' + + '}'; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java new file mode 100644 index 0000000..ea518d9 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.modular.system.entity.Device; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("DeviceDetailDTO") +@Data +public class DeviceDetailDTO extends Device { + + @ApiModelProperty(value = "摄像头编号") + private String cameraCode; + + @ApiModelProperty(value = "摄像头IP") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + + @ApiModelProperty(value = "激甲编号") + private String gasCode; + + @ApiModelProperty(value = "激甲IP") + private String gasIp; + + @ApiModelProperty(value = "激甲端口") + private String gasPort; + + @ApiModelProperty(value = "智能帽衬编号") + private String hatLiningCode; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java new file mode 100644 index 0000000..29378ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("WorkSiteDetailDTO") +public class WorkSiteDetailDTO extends WorkSiteInfo { + + @ApiModelProperty(value = "安全树列表",dataType = "ProjectDevice") + private List deviceList; + + @ApiModelProperty(value = "人员列表",dataType = "ProjectWorker") + private List workerList; + + + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java new file mode 100644 index 0000000..6fd7b24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java @@ -0,0 +1,68 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "WorkerLocationDTO",description = "人员位置列表(首页)") +@Data +public class WorkerLocationDTO { + + @ApiModelProperty("人员ID") + private Long workerId; + + @ApiModelProperty("人员姓名") + private String workerName; + + @ApiModelProperty("安全帽编号") + private String hatCode; + + @ApiModelProperty("安全帽ID") + private Long hatId; + + @ApiModelProperty("背心编号") + private String vastCode; + + @ApiModelProperty("手环编号") + private String braceletCode; + + @ApiModelProperty("位置") + private String location; + + @ApiModelProperty("时间") + private String time; + + @ApiModelProperty("经度") + private String lng; + + @ApiModelProperty("纬度") + private String lat; + + @ApiModelProperty("心率") + private String heartRate; + + @ApiModelProperty("血氧") + private String bloodOxygen; + + @ApiModelProperty("一氧化碳") + private String co; + + @ApiModelProperty("甲烷") + private String gas; + + @ApiModelProperty("硫化氢") + private String h2s; + + @ApiModelProperty("氧气") + private String o2; + + @ApiModelProperty("信号") + private String signal; + + @ApiModelProperty("电量") + private String cell; + + @ApiModelProperty("是否报警") + private boolean alarmFlag; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java new file mode 100644 index 0000000..efb4a23 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java @@ -0,0 +1,159 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 报警记录表 + *

+ * + * @author zyj + * @since 2023-05-16 + */ +@Data +@ApiModel("Alarm") +@TableName("br_bus_alarm") +public class BusAlarm implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @ApiModelProperty(value = "设备ID") + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 报警类型 + */ + @ApiModelProperty(value = "报警类型") + @TableField("ALARM_TYPE") + private String alarmType; + + /** + * 报警状态 + */ + @ApiModelProperty(value = "报警状态") + @TableField("ALARM_STATUS") + private String alarmStatus; + + /** + * 报警值 + */ + @ApiModelProperty(value = "报警值") + @TableField("ALARM_VALUE") + private String alarmValue; + + /** + * 报警图片 + */ + @ApiModelProperty(value = "报警图片") + @TableField("ALARM_IMAGE") + private String alarmImage; + + /** + * 报警内容 + */ + @ApiModelProperty(value = "报警内容") + @TableField("ALARM_CONTENT") + private String alarmContent; + + /** + * 报警时间 + */ + @ApiModelProperty(value = "报警时间") + @TableField("ALARM_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date alarmTime; + + /** + * 消警时间 + */ + @ApiModelProperty(value = "消警时间") + @TableField("CANCEL_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + /** + * 报警位置经度 + */ + @ApiModelProperty(value = "报警位置经度") + @TableField("ALARM_LNG") + private String alarmLng; + + /** + * 报警位置纬度 + */ + @ApiModelProperty(value = "报警位置纬度") + @TableField("ALARM_LAT") + private String alarmLat; + + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmStatusName; + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmTypeName; + @ApiModelProperty("作业名称") + @TableField(exist = false) + private String workTitle; + @ApiModelProperty("所属道路") + @TableField(exist = false) + private String workRoad; + @ApiModelProperty("作业状态") + @TableField(exist = false) + private String projectState; + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + @ApiModelProperty("负责人姓名") + @TableField(exist = false) + private String workPersonName; + @ApiModelProperty("负责人联系方式") + @TableField(exist = false) + private String workPersonPhoneNumber; + + + @Override + public String toString() { + return "BusAlarm{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + ", alarmType=" + alarmType + + ", alarmValue=" + alarmValue + + ", alarmStatus=" + alarmStatus + + ", alarmImage=" + alarmImage + + ", alarmContent=" + alarmContent + + ", alarmTime=" + alarmTime + + ", cancelTime=" + cancelTime + + ", alarmLng=" + alarmLng + + ", alarmLat=" + alarmLat + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java new file mode 100644 index 0000000..a0b7543 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + *

+ * 事件表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event") +@Data +@ApiModel("BusEvent") +public class BusEvent implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("事件ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件标题 + */ + @ApiModelProperty("事件名称") + @TableField("EVENT_TITLE") + private String eventTitle; + + /** + * 上报人员 + */ + @ApiModelProperty("上报人员") + @TableField("UPLOAD_NAME") + private String uploadName; + + /** + * 联系方式 + */ + @ApiModelProperty("联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 事件描述 + */ + @ApiModelProperty("事件描述") + @TableField("EVENT_DESCRIPTION") + private String eventDescription; + + @ApiModelProperty("经度") + @TableField("LNG") + private String lng; + + @ApiModelProperty("纬度") + @TableField("LAT") + private String lat; + + /** + * 事件上传时间 + */ + @ApiModelProperty("事件上传时间") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty("事件照片") + @TableField(exist = false) + private List imageList; + + + + @Override + public String toString() { + return "BusEvent{" + + "id=" + id + + ", eventTitle=" + eventTitle + + ", uploadName=" + uploadName + + ", phoneNumber=" + phoneNumber + + ", eventDescription=" + eventDescription + + ", lng=" + lng + + ", lat=" + lat + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java new file mode 100644 index 0000000..1e75245 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 事件图片表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event_image") +@Data +@ApiModel("BusEventImage") +public class BusEventImage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件ID + */ + @TableField("EVENT_ID") + private Long eventId; + + /** + * 报警图片 + */ + @TableField("IMAGE") + @ApiModelProperty("图片url") + private String image; + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java new file mode 100644 index 0000000..df89c70 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.core.base.json.DateDeserializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Device") +@TableName("br_device") +@Data +public class Device implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "设备ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty(value = "设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + /** + * 设备类型 + */ + @ApiModelProperty(value = "设备类型") + @TableField("DEVICE_TYPE") + private String deviceType; + + /** + * 设备批次 + */ + @ApiModelProperty(value = "设备批次") + @TableField("DEVICE_BATCH") + private String deviceBatch; + + /** + * 厂家 + */ + @ApiModelProperty(value = "厂家") + @TableField("MANUFACTURER") + private String manufacturer; + + /** + * 是否供电 + */ + @ApiModelProperty(value = "是否供电") + @TableField("IS_POWER_SUPPLY") + private String isPowerSupply; + + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间",dataType = "Date") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty(value = "设备类型名称") + @TableField(exist = false) + private String deviceTypeName; + + @ApiModelProperty(value = "是否供电名称") + @TableField(exist = false) + private String isPowerSupplyName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", deviceCode=" + deviceCode + + ", deviceType=" + deviceType + + ", deviceBatch=" + deviceBatch + + ", manufacturer=" + manufacturer + + ", isPowerSupply=" + isPowerSupply + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java new file mode 100644 index 0000000..5ee7015 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java @@ -0,0 +1,99 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 设备扩展信息表(安全树) + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Data +@TableName("br_device_ext") +public class DeviceExt implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 摄像头编号 + */ + @TableField("CAMERA_CODE") + private String cameraCode; + + /** + * 摄像头IP + */ + @TableField("CAMERA_IP") + private String cameraIp; + + /** + * 摄像头端口 + */ + @TableField("CAMERA_PORT") + private String cameraPort; + + /** + * 激甲编号 + */ + @TableField("GAS_CODE") + private String gasCode; + + /** + * 激甲IP + */ + @TableField("GAS_IP") + private String gasIp; + + /** + * 激甲端口 + */ + @TableField("GAS_PORT") + private String gasPort; + + /** + * 甲烷报警阈值 + */ + @TableField("GAS_THRESHOLD") + private String gasThreshold; + + @TableField(value = "HAT_LINING_CODE") + private String hatLiningCode; + + + @Override + public String toString() { + return "DeviceExt{" + + "id=" + id + + ", deviceId=" + deviceId + + ", cameraCode=" + cameraCode + + ", cameraIp=" + cameraIp + + ", cameraPort=" + cameraPort + + ", gasCode=" + gasCode + + ", gasIp=" + gasIp + + ", gasPort=" + gasPort + + ", gasThreshold=" + gasThreshold + + ", hatLiningCode=" + hatLiningCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java new file mode 100644 index 0000000..c4f3472 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java @@ -0,0 +1,62 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Data +@ApiModel("ProjectDevice") +@TableName("br_project_device") +public class ProjectDevice implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + @ApiModelProperty("设备ID(新增编辑时传)") + private Long deviceId; + + /** + * 设备编号 + */ + @TableField(exist = false) + @ApiModelProperty("设备编号(详情中展示,新增编辑不用传)") + private String deviceCode; + + @Override + public String toString() { + return "ProjectDevice{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java new file mode 100644 index 0000000..10b23c4 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java @@ -0,0 +1,104 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("ProjectWorker") +@TableName("br_project_worker") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ProjectWorker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 人员ID + */ + @ApiModelProperty("人员ID") + @TableField("WORKER_ID") + private Long workerId; + + /** + * 安全帽编号 + */ + @ApiModelProperty("安全帽编号") + @TableField("HAT_CODE") + private String hatCode; + + /** + * 背心编号 + */ + @ApiModelProperty("背心编号") + @TableField("VAST_CODE") + private String vastCode; + + /** + * 手环编号 + */ + @ApiModelProperty("手环编号") + @TableField("BRACELET_CODE") + private String braceletCode; + + @ApiModelProperty("人员姓名(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerName; + + @ApiModelProperty("人员部门ID(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptId; + + @ApiModelProperty("人员部门名称(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptName; + + @ApiModelProperty("人员联系方式(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerPhoneNumber; + + public ProjectWorker(Long projectId, Long workerId) { + this.projectId = projectId; + this.workerId = workerId; + } + + @Override + public String toString() { + return "ProjectWorker{" + + "id=" + id + + ", projectId=" + projectId + + ", workerId=" + workerId + + ", hatCode=" + hatCode + + ", vastCode=" + vastCode + + ", braceletCode=" + braceletCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java new file mode 100644 index 0000000..fa6f41d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 作业现场表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("WorkSiteInfo") +@TableName("br_work_site_info") +@Data +public class WorkSiteInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("作业现场ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业名称 + */ + @ApiModelProperty("作业名称") + @TableField("WORK_TITLE") + private String workTitle; + + /** + * 责任人 + */ + @ApiModelProperty("责任人(人员ID)") + @TableField("WORK_PERSON") + private Long workPerson; + + /** + * 作业描述 + */ + @ApiModelProperty("作业描述") + @TableField("WORK_SITE_DESC") + private String workSiteDesc; + + /** + * 作业状态 + */ + @ApiModelProperty("作业状态") + @TableField("PROJECT_STATE") + private String projectState; + + /** + * 所属道路 + */ + @ApiModelProperty("所属道路") + @TableField("WORK_ROAD") + private String workRoad; + + @TableField("IMAGE_URL") + private String imageUrl; + + @TableField("CREATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + @TableField("UPDATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("FINISH_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + @ApiModelProperty("负责人姓名(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonName; + + @ApiModelProperty("负责人联系方式(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonPhoneNumber; + + @ApiModelProperty("负责人所属部门ID(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private Long workPersonDeptId; + + @ApiModelProperty("负责人所属部门名称(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonDeptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + + @Override + public String toString() { + return "WorkSiteInfo{" + + "id=" + id + + ", workTitle=" + workTitle + + ", workPerson=" + workPerson + + ", workSiteDesc=" + workSiteDesc + + ", projectState=" + projectState + + ", imageUrl=" + imageUrl + + ", updateTime=" + updateTime + + ", workRoad=" + workRoad + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java new file mode 100644 index 0000000..28a4daa --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java @@ -0,0 +1,147 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Worker") +@TableName("br_worker") +@Data +public class Worker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "人员ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 姓名 + */ + @ApiModelProperty(value = "姓名") + @TableField("WORKER_NAME") + private String workerName; + + /** + * 性别 + */ + @ApiModelProperty(value = "性别") + @TableField("GENDER") + private String gender; + + /** + * 所属部门 + */ + @ApiModelProperty(value = "所属部门(人员管理)") + @TableField("DEPT_ID") + private Long deptId; + + /** + * 所属单位 + */ + @ApiModelProperty(value = "所属单位(入场申请中使用)") + @TableField("OWNER_SHIP") + private String ownerShip; + + /** + * 联系方式 + */ + @ApiModelProperty(value = "联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 证件号 + */ + @ApiModelProperty(value = "证件号") + @TableField("ID_CARD_NUMBER") + private String idCardNumber; + + /** + * 入场原因 + */ + @ApiModelProperty(value = "入场原因(入场申请中使用)") + @TableField("ENTER_REASON") + private String enterReason; + + /** + * 入场人脸照片 + */ + @ApiModelProperty(value = "人脸照片(照片路径)") + @TableField("WORKER_AVATAR") + private String workerAvatar; + + /** + * 申请入场时间 + */ + @ApiModelProperty(value = "注册时间/申请入场时间") + @TableField("CREATE_TIME") + private Date createTime; + + /** + * 人员类型 + */ + @ApiModelProperty(value = "人员类型(区分人员管理和入场申请)") + @TableField("WORKER_TYPE") + private String workerType; + + @ApiModelProperty(value = "性别名称") + @TableField(exist = false) + private String genderName; + + @ApiModelProperty(value = "部门名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @ApiModelProperty(value = "是否注册(0未注册;1已注册)",allowableValues = "0,1") + @TableField(exist = false) + private String isRegister; + + @Override + public String toString() { + return "Worker{" + + "id=" + id + + ", workerName=" + workerName + + ", gender=" + gender + + ", deptId=" + deptId + + ", ownerShip=" + ownerShip + + ", phoneNumber=" + phoneNumber + + ", idCardNumber=" + idCardNumber + + ", enterReason=" + enterReason + + ", workerAvatar=" + workerAvatar + + ", createTime=" + createTime + + ", workerType=" + workerType + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java new file mode 100644 index 0000000..9801742 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警记录表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusAlarmMapper extends BaseMapper { + + Page listPage(Page page,@Param("ew") QueryWrapper queryWrapper); + + void cancelAlarm(@Param("deviceId")Long deviceId,@Param("alarmType") String alarmType); + + List alarmCount(@Param("projectId")Long projectId, @Param("alarmStatus")String alarmStatus); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java new file mode 100644 index 0000000..9590b7d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件图片表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventImageMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java new file mode 100644 index 0000000..3c85edf --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java new file mode 100644 index 0000000..4ca9212 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 设备扩展信息表(安全树) Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface DeviceExtMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java new file mode 100644 index 0000000..444c0c5 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Mapper +public interface DeviceMapper extends BaseMapper { + + Page listDetailPage(Page page,@Param("ew") QueryWrapper ew); + + List selectProjectDevice(@Param("projectId") Long projectId); + + List selectHelmetList(@Param("deviceType")String deviceType); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java new file mode 100644 index 0000000..1d0c14e --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectDeviceMapper extends BaseMapper { + List selectDetailByProjectId(@Param("projectId") Long projectId); + + List selectDeviceLocationList(@Param("projectId") Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java new file mode 100644 index 0000000..58583d1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectWorkerMapper extends BaseMapper { + + List selectDetailByProjectId(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + + List selectWorkerLocationList(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java new file mode 100644 index 0000000..a4934d2 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +/** + *

+ * 作业现场表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkSiteInfoMapper extends BaseMapper { + + Page selectListPage(Page page,@Param("ew") QueryWrapper ew); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java new file mode 100644 index 0000000..258fb12 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkerMapper extends BaseMapper { + + + Page selectListPage(Page page, @Param("ew") QueryWrapper ew); + + List selectWorkerAvatars(@Param("projectId")Long projectId); + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml new file mode 100644 index 0000000..595088a --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml @@ -0,0 +1,58 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml new file mode 100644 index 0000000..fbc3db3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml new file mode 100644 index 0000000..627d573 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java new file mode 100644 index 0000000..73d7799 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.dto; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "AlarmUpload",description = "报警上传") +@Data +public class AlarmUpload { + + @ApiModelProperty(value = "摄像头ip") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + @ApiModelProperty(value = "安全树甲烷设备ip") + private String gasIp; + @ApiModelProperty(value = "安全树甲烷设备端口") + private String gasPort; + @ApiModelProperty(value = "报警值") + private String alarmValue; + @ApiModelProperty(value = "报警时间") + private String alarmTime; + @ApiModelProperty(value = "报警类型") + private String alarmType; + @ApiModelProperty(value = "报警图片") + private String alarmImage; + @ApiModelProperty(value = "报警内容") + private String alarmContent; + + @Override + public String toString() { + return "AlarmUpload{" + + "cameraIp='" + cameraIp + '\'' + + ", cameraPort='" + cameraPort + '\'' + + ", gasIp='" + gasIp + '\'' + + ", gasPort='" + gasPort + '\'' + + ", alarmValue='" + alarmValue + '\'' + + ", alarmTime='" + alarmTime + '\'' + + ", alarmType='" + alarmType + '\'' + + ", alarmImage='" + (StrUtil.isNotEmpty(alarmImage) ? alarmImage.substring(0,50) : "null") + '\'' + + ", alarmContent='" + alarmContent + '\'' + + '}'; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java new file mode 100644 index 0000000..ea518d9 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.modular.system.entity.Device; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("DeviceDetailDTO") +@Data +public class DeviceDetailDTO extends Device { + + @ApiModelProperty(value = "摄像头编号") + private String cameraCode; + + @ApiModelProperty(value = "摄像头IP") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + + @ApiModelProperty(value = "激甲编号") + private String gasCode; + + @ApiModelProperty(value = "激甲IP") + private String gasIp; + + @ApiModelProperty(value = "激甲端口") + private String gasPort; + + @ApiModelProperty(value = "智能帽衬编号") + private String hatLiningCode; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java new file mode 100644 index 0000000..29378ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("WorkSiteDetailDTO") +public class WorkSiteDetailDTO extends WorkSiteInfo { + + @ApiModelProperty(value = "安全树列表",dataType = "ProjectDevice") + private List deviceList; + + @ApiModelProperty(value = "人员列表",dataType = "ProjectWorker") + private List workerList; + + + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java new file mode 100644 index 0000000..6fd7b24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java @@ -0,0 +1,68 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "WorkerLocationDTO",description = "人员位置列表(首页)") +@Data +public class WorkerLocationDTO { + + @ApiModelProperty("人员ID") + private Long workerId; + + @ApiModelProperty("人员姓名") + private String workerName; + + @ApiModelProperty("安全帽编号") + private String hatCode; + + @ApiModelProperty("安全帽ID") + private Long hatId; + + @ApiModelProperty("背心编号") + private String vastCode; + + @ApiModelProperty("手环编号") + private String braceletCode; + + @ApiModelProperty("位置") + private String location; + + @ApiModelProperty("时间") + private String time; + + @ApiModelProperty("经度") + private String lng; + + @ApiModelProperty("纬度") + private String lat; + + @ApiModelProperty("心率") + private String heartRate; + + @ApiModelProperty("血氧") + private String bloodOxygen; + + @ApiModelProperty("一氧化碳") + private String co; + + @ApiModelProperty("甲烷") + private String gas; + + @ApiModelProperty("硫化氢") + private String h2s; + + @ApiModelProperty("氧气") + private String o2; + + @ApiModelProperty("信号") + private String signal; + + @ApiModelProperty("电量") + private String cell; + + @ApiModelProperty("是否报警") + private boolean alarmFlag; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java new file mode 100644 index 0000000..efb4a23 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java @@ -0,0 +1,159 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 报警记录表 + *

+ * + * @author zyj + * @since 2023-05-16 + */ +@Data +@ApiModel("Alarm") +@TableName("br_bus_alarm") +public class BusAlarm implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @ApiModelProperty(value = "设备ID") + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 报警类型 + */ + @ApiModelProperty(value = "报警类型") + @TableField("ALARM_TYPE") + private String alarmType; + + /** + * 报警状态 + */ + @ApiModelProperty(value = "报警状态") + @TableField("ALARM_STATUS") + private String alarmStatus; + + /** + * 报警值 + */ + @ApiModelProperty(value = "报警值") + @TableField("ALARM_VALUE") + private String alarmValue; + + /** + * 报警图片 + */ + @ApiModelProperty(value = "报警图片") + @TableField("ALARM_IMAGE") + private String alarmImage; + + /** + * 报警内容 + */ + @ApiModelProperty(value = "报警内容") + @TableField("ALARM_CONTENT") + private String alarmContent; + + /** + * 报警时间 + */ + @ApiModelProperty(value = "报警时间") + @TableField("ALARM_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date alarmTime; + + /** + * 消警时间 + */ + @ApiModelProperty(value = "消警时间") + @TableField("CANCEL_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + /** + * 报警位置经度 + */ + @ApiModelProperty(value = "报警位置经度") + @TableField("ALARM_LNG") + private String alarmLng; + + /** + * 报警位置纬度 + */ + @ApiModelProperty(value = "报警位置纬度") + @TableField("ALARM_LAT") + private String alarmLat; + + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmStatusName; + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmTypeName; + @ApiModelProperty("作业名称") + @TableField(exist = false) + private String workTitle; + @ApiModelProperty("所属道路") + @TableField(exist = false) + private String workRoad; + @ApiModelProperty("作业状态") + @TableField(exist = false) + private String projectState; + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + @ApiModelProperty("负责人姓名") + @TableField(exist = false) + private String workPersonName; + @ApiModelProperty("负责人联系方式") + @TableField(exist = false) + private String workPersonPhoneNumber; + + + @Override + public String toString() { + return "BusAlarm{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + ", alarmType=" + alarmType + + ", alarmValue=" + alarmValue + + ", alarmStatus=" + alarmStatus + + ", alarmImage=" + alarmImage + + ", alarmContent=" + alarmContent + + ", alarmTime=" + alarmTime + + ", cancelTime=" + cancelTime + + ", alarmLng=" + alarmLng + + ", alarmLat=" + alarmLat + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java new file mode 100644 index 0000000..a0b7543 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + *

+ * 事件表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event") +@Data +@ApiModel("BusEvent") +public class BusEvent implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("事件ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件标题 + */ + @ApiModelProperty("事件名称") + @TableField("EVENT_TITLE") + private String eventTitle; + + /** + * 上报人员 + */ + @ApiModelProperty("上报人员") + @TableField("UPLOAD_NAME") + private String uploadName; + + /** + * 联系方式 + */ + @ApiModelProperty("联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 事件描述 + */ + @ApiModelProperty("事件描述") + @TableField("EVENT_DESCRIPTION") + private String eventDescription; + + @ApiModelProperty("经度") + @TableField("LNG") + private String lng; + + @ApiModelProperty("纬度") + @TableField("LAT") + private String lat; + + /** + * 事件上传时间 + */ + @ApiModelProperty("事件上传时间") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty("事件照片") + @TableField(exist = false) + private List imageList; + + + + @Override + public String toString() { + return "BusEvent{" + + "id=" + id + + ", eventTitle=" + eventTitle + + ", uploadName=" + uploadName + + ", phoneNumber=" + phoneNumber + + ", eventDescription=" + eventDescription + + ", lng=" + lng + + ", lat=" + lat + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java new file mode 100644 index 0000000..1e75245 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 事件图片表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event_image") +@Data +@ApiModel("BusEventImage") +public class BusEventImage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件ID + */ + @TableField("EVENT_ID") + private Long eventId; + + /** + * 报警图片 + */ + @TableField("IMAGE") + @ApiModelProperty("图片url") + private String image; + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java new file mode 100644 index 0000000..df89c70 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.core.base.json.DateDeserializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Device") +@TableName("br_device") +@Data +public class Device implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "设备ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty(value = "设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + /** + * 设备类型 + */ + @ApiModelProperty(value = "设备类型") + @TableField("DEVICE_TYPE") + private String deviceType; + + /** + * 设备批次 + */ + @ApiModelProperty(value = "设备批次") + @TableField("DEVICE_BATCH") + private String deviceBatch; + + /** + * 厂家 + */ + @ApiModelProperty(value = "厂家") + @TableField("MANUFACTURER") + private String manufacturer; + + /** + * 是否供电 + */ + @ApiModelProperty(value = "是否供电") + @TableField("IS_POWER_SUPPLY") + private String isPowerSupply; + + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间",dataType = "Date") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty(value = "设备类型名称") + @TableField(exist = false) + private String deviceTypeName; + + @ApiModelProperty(value = "是否供电名称") + @TableField(exist = false) + private String isPowerSupplyName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", deviceCode=" + deviceCode + + ", deviceType=" + deviceType + + ", deviceBatch=" + deviceBatch + + ", manufacturer=" + manufacturer + + ", isPowerSupply=" + isPowerSupply + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java new file mode 100644 index 0000000..5ee7015 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java @@ -0,0 +1,99 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 设备扩展信息表(安全树) + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Data +@TableName("br_device_ext") +public class DeviceExt implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 摄像头编号 + */ + @TableField("CAMERA_CODE") + private String cameraCode; + + /** + * 摄像头IP + */ + @TableField("CAMERA_IP") + private String cameraIp; + + /** + * 摄像头端口 + */ + @TableField("CAMERA_PORT") + private String cameraPort; + + /** + * 激甲编号 + */ + @TableField("GAS_CODE") + private String gasCode; + + /** + * 激甲IP + */ + @TableField("GAS_IP") + private String gasIp; + + /** + * 激甲端口 + */ + @TableField("GAS_PORT") + private String gasPort; + + /** + * 甲烷报警阈值 + */ + @TableField("GAS_THRESHOLD") + private String gasThreshold; + + @TableField(value = "HAT_LINING_CODE") + private String hatLiningCode; + + + @Override + public String toString() { + return "DeviceExt{" + + "id=" + id + + ", deviceId=" + deviceId + + ", cameraCode=" + cameraCode + + ", cameraIp=" + cameraIp + + ", cameraPort=" + cameraPort + + ", gasCode=" + gasCode + + ", gasIp=" + gasIp + + ", gasPort=" + gasPort + + ", gasThreshold=" + gasThreshold + + ", hatLiningCode=" + hatLiningCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java new file mode 100644 index 0000000..c4f3472 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java @@ -0,0 +1,62 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Data +@ApiModel("ProjectDevice") +@TableName("br_project_device") +public class ProjectDevice implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + @ApiModelProperty("设备ID(新增编辑时传)") + private Long deviceId; + + /** + * 设备编号 + */ + @TableField(exist = false) + @ApiModelProperty("设备编号(详情中展示,新增编辑不用传)") + private String deviceCode; + + @Override + public String toString() { + return "ProjectDevice{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java new file mode 100644 index 0000000..10b23c4 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java @@ -0,0 +1,104 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("ProjectWorker") +@TableName("br_project_worker") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ProjectWorker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 人员ID + */ + @ApiModelProperty("人员ID") + @TableField("WORKER_ID") + private Long workerId; + + /** + * 安全帽编号 + */ + @ApiModelProperty("安全帽编号") + @TableField("HAT_CODE") + private String hatCode; + + /** + * 背心编号 + */ + @ApiModelProperty("背心编号") + @TableField("VAST_CODE") + private String vastCode; + + /** + * 手环编号 + */ + @ApiModelProperty("手环编号") + @TableField("BRACELET_CODE") + private String braceletCode; + + @ApiModelProperty("人员姓名(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerName; + + @ApiModelProperty("人员部门ID(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptId; + + @ApiModelProperty("人员部门名称(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptName; + + @ApiModelProperty("人员联系方式(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerPhoneNumber; + + public ProjectWorker(Long projectId, Long workerId) { + this.projectId = projectId; + this.workerId = workerId; + } + + @Override + public String toString() { + return "ProjectWorker{" + + "id=" + id + + ", projectId=" + projectId + + ", workerId=" + workerId + + ", hatCode=" + hatCode + + ", vastCode=" + vastCode + + ", braceletCode=" + braceletCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java new file mode 100644 index 0000000..fa6f41d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 作业现场表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("WorkSiteInfo") +@TableName("br_work_site_info") +@Data +public class WorkSiteInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("作业现场ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业名称 + */ + @ApiModelProperty("作业名称") + @TableField("WORK_TITLE") + private String workTitle; + + /** + * 责任人 + */ + @ApiModelProperty("责任人(人员ID)") + @TableField("WORK_PERSON") + private Long workPerson; + + /** + * 作业描述 + */ + @ApiModelProperty("作业描述") + @TableField("WORK_SITE_DESC") + private String workSiteDesc; + + /** + * 作业状态 + */ + @ApiModelProperty("作业状态") + @TableField("PROJECT_STATE") + private String projectState; + + /** + * 所属道路 + */ + @ApiModelProperty("所属道路") + @TableField("WORK_ROAD") + private String workRoad; + + @TableField("IMAGE_URL") + private String imageUrl; + + @TableField("CREATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + @TableField("UPDATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("FINISH_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + @ApiModelProperty("负责人姓名(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonName; + + @ApiModelProperty("负责人联系方式(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonPhoneNumber; + + @ApiModelProperty("负责人所属部门ID(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private Long workPersonDeptId; + + @ApiModelProperty("负责人所属部门名称(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonDeptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + + @Override + public String toString() { + return "WorkSiteInfo{" + + "id=" + id + + ", workTitle=" + workTitle + + ", workPerson=" + workPerson + + ", workSiteDesc=" + workSiteDesc + + ", projectState=" + projectState + + ", imageUrl=" + imageUrl + + ", updateTime=" + updateTime + + ", workRoad=" + workRoad + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java new file mode 100644 index 0000000..28a4daa --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java @@ -0,0 +1,147 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Worker") +@TableName("br_worker") +@Data +public class Worker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "人员ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 姓名 + */ + @ApiModelProperty(value = "姓名") + @TableField("WORKER_NAME") + private String workerName; + + /** + * 性别 + */ + @ApiModelProperty(value = "性别") + @TableField("GENDER") + private String gender; + + /** + * 所属部门 + */ + @ApiModelProperty(value = "所属部门(人员管理)") + @TableField("DEPT_ID") + private Long deptId; + + /** + * 所属单位 + */ + @ApiModelProperty(value = "所属单位(入场申请中使用)") + @TableField("OWNER_SHIP") + private String ownerShip; + + /** + * 联系方式 + */ + @ApiModelProperty(value = "联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 证件号 + */ + @ApiModelProperty(value = "证件号") + @TableField("ID_CARD_NUMBER") + private String idCardNumber; + + /** + * 入场原因 + */ + @ApiModelProperty(value = "入场原因(入场申请中使用)") + @TableField("ENTER_REASON") + private String enterReason; + + /** + * 入场人脸照片 + */ + @ApiModelProperty(value = "人脸照片(照片路径)") + @TableField("WORKER_AVATAR") + private String workerAvatar; + + /** + * 申请入场时间 + */ + @ApiModelProperty(value = "注册时间/申请入场时间") + @TableField("CREATE_TIME") + private Date createTime; + + /** + * 人员类型 + */ + @ApiModelProperty(value = "人员类型(区分人员管理和入场申请)") + @TableField("WORKER_TYPE") + private String workerType; + + @ApiModelProperty(value = "性别名称") + @TableField(exist = false) + private String genderName; + + @ApiModelProperty(value = "部门名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @ApiModelProperty(value = "是否注册(0未注册;1已注册)",allowableValues = "0,1") + @TableField(exist = false) + private String isRegister; + + @Override + public String toString() { + return "Worker{" + + "id=" + id + + ", workerName=" + workerName + + ", gender=" + gender + + ", deptId=" + deptId + + ", ownerShip=" + ownerShip + + ", phoneNumber=" + phoneNumber + + ", idCardNumber=" + idCardNumber + + ", enterReason=" + enterReason + + ", workerAvatar=" + workerAvatar + + ", createTime=" + createTime + + ", workerType=" + workerType + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java new file mode 100644 index 0000000..9801742 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警记录表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusAlarmMapper extends BaseMapper { + + Page listPage(Page page,@Param("ew") QueryWrapper queryWrapper); + + void cancelAlarm(@Param("deviceId")Long deviceId,@Param("alarmType") String alarmType); + + List alarmCount(@Param("projectId")Long projectId, @Param("alarmStatus")String alarmStatus); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java new file mode 100644 index 0000000..9590b7d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件图片表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventImageMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java new file mode 100644 index 0000000..3c85edf --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java new file mode 100644 index 0000000..4ca9212 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 设备扩展信息表(安全树) Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface DeviceExtMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java new file mode 100644 index 0000000..444c0c5 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Mapper +public interface DeviceMapper extends BaseMapper { + + Page listDetailPage(Page page,@Param("ew") QueryWrapper ew); + + List selectProjectDevice(@Param("projectId") Long projectId); + + List selectHelmetList(@Param("deviceType")String deviceType); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java new file mode 100644 index 0000000..1d0c14e --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectDeviceMapper extends BaseMapper { + List selectDetailByProjectId(@Param("projectId") Long projectId); + + List selectDeviceLocationList(@Param("projectId") Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java new file mode 100644 index 0000000..58583d1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectWorkerMapper extends BaseMapper { + + List selectDetailByProjectId(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + + List selectWorkerLocationList(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java new file mode 100644 index 0000000..a4934d2 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +/** + *

+ * 作业现场表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkSiteInfoMapper extends BaseMapper { + + Page selectListPage(Page page,@Param("ew") QueryWrapper ew); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java new file mode 100644 index 0000000..258fb12 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkerMapper extends BaseMapper { + + + Page selectListPage(Page page, @Param("ew") QueryWrapper ew); + + List selectWorkerAvatars(@Param("projectId")Long projectId); + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml new file mode 100644 index 0000000..595088a --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml @@ -0,0 +1,58 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml new file mode 100644 index 0000000..fbc3db3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml new file mode 100644 index 0000000..627d573 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml new file mode 100644 index 0000000..5321d1c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java new file mode 100644 index 0000000..73d7799 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.dto; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "AlarmUpload",description = "报警上传") +@Data +public class AlarmUpload { + + @ApiModelProperty(value = "摄像头ip") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + @ApiModelProperty(value = "安全树甲烷设备ip") + private String gasIp; + @ApiModelProperty(value = "安全树甲烷设备端口") + private String gasPort; + @ApiModelProperty(value = "报警值") + private String alarmValue; + @ApiModelProperty(value = "报警时间") + private String alarmTime; + @ApiModelProperty(value = "报警类型") + private String alarmType; + @ApiModelProperty(value = "报警图片") + private String alarmImage; + @ApiModelProperty(value = "报警内容") + private String alarmContent; + + @Override + public String toString() { + return "AlarmUpload{" + + "cameraIp='" + cameraIp + '\'' + + ", cameraPort='" + cameraPort + '\'' + + ", gasIp='" + gasIp + '\'' + + ", gasPort='" + gasPort + '\'' + + ", alarmValue='" + alarmValue + '\'' + + ", alarmTime='" + alarmTime + '\'' + + ", alarmType='" + alarmType + '\'' + + ", alarmImage='" + (StrUtil.isNotEmpty(alarmImage) ? alarmImage.substring(0,50) : "null") + '\'' + + ", alarmContent='" + alarmContent + '\'' + + '}'; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java new file mode 100644 index 0000000..ea518d9 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.modular.system.entity.Device; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("DeviceDetailDTO") +@Data +public class DeviceDetailDTO extends Device { + + @ApiModelProperty(value = "摄像头编号") + private String cameraCode; + + @ApiModelProperty(value = "摄像头IP") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + + @ApiModelProperty(value = "激甲编号") + private String gasCode; + + @ApiModelProperty(value = "激甲IP") + private String gasIp; + + @ApiModelProperty(value = "激甲端口") + private String gasPort; + + @ApiModelProperty(value = "智能帽衬编号") + private String hatLiningCode; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java new file mode 100644 index 0000000..29378ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("WorkSiteDetailDTO") +public class WorkSiteDetailDTO extends WorkSiteInfo { + + @ApiModelProperty(value = "安全树列表",dataType = "ProjectDevice") + private List deviceList; + + @ApiModelProperty(value = "人员列表",dataType = "ProjectWorker") + private List workerList; + + + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java new file mode 100644 index 0000000..6fd7b24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java @@ -0,0 +1,68 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "WorkerLocationDTO",description = "人员位置列表(首页)") +@Data +public class WorkerLocationDTO { + + @ApiModelProperty("人员ID") + private Long workerId; + + @ApiModelProperty("人员姓名") + private String workerName; + + @ApiModelProperty("安全帽编号") + private String hatCode; + + @ApiModelProperty("安全帽ID") + private Long hatId; + + @ApiModelProperty("背心编号") + private String vastCode; + + @ApiModelProperty("手环编号") + private String braceletCode; + + @ApiModelProperty("位置") + private String location; + + @ApiModelProperty("时间") + private String time; + + @ApiModelProperty("经度") + private String lng; + + @ApiModelProperty("纬度") + private String lat; + + @ApiModelProperty("心率") + private String heartRate; + + @ApiModelProperty("血氧") + private String bloodOxygen; + + @ApiModelProperty("一氧化碳") + private String co; + + @ApiModelProperty("甲烷") + private String gas; + + @ApiModelProperty("硫化氢") + private String h2s; + + @ApiModelProperty("氧气") + private String o2; + + @ApiModelProperty("信号") + private String signal; + + @ApiModelProperty("电量") + private String cell; + + @ApiModelProperty("是否报警") + private boolean alarmFlag; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java new file mode 100644 index 0000000..efb4a23 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java @@ -0,0 +1,159 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 报警记录表 + *

+ * + * @author zyj + * @since 2023-05-16 + */ +@Data +@ApiModel("Alarm") +@TableName("br_bus_alarm") +public class BusAlarm implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @ApiModelProperty(value = "设备ID") + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 报警类型 + */ + @ApiModelProperty(value = "报警类型") + @TableField("ALARM_TYPE") + private String alarmType; + + /** + * 报警状态 + */ + @ApiModelProperty(value = "报警状态") + @TableField("ALARM_STATUS") + private String alarmStatus; + + /** + * 报警值 + */ + @ApiModelProperty(value = "报警值") + @TableField("ALARM_VALUE") + private String alarmValue; + + /** + * 报警图片 + */ + @ApiModelProperty(value = "报警图片") + @TableField("ALARM_IMAGE") + private String alarmImage; + + /** + * 报警内容 + */ + @ApiModelProperty(value = "报警内容") + @TableField("ALARM_CONTENT") + private String alarmContent; + + /** + * 报警时间 + */ + @ApiModelProperty(value = "报警时间") + @TableField("ALARM_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date alarmTime; + + /** + * 消警时间 + */ + @ApiModelProperty(value = "消警时间") + @TableField("CANCEL_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + /** + * 报警位置经度 + */ + @ApiModelProperty(value = "报警位置经度") + @TableField("ALARM_LNG") + private String alarmLng; + + /** + * 报警位置纬度 + */ + @ApiModelProperty(value = "报警位置纬度") + @TableField("ALARM_LAT") + private String alarmLat; + + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmStatusName; + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmTypeName; + @ApiModelProperty("作业名称") + @TableField(exist = false) + private String workTitle; + @ApiModelProperty("所属道路") + @TableField(exist = false) + private String workRoad; + @ApiModelProperty("作业状态") + @TableField(exist = false) + private String projectState; + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + @ApiModelProperty("负责人姓名") + @TableField(exist = false) + private String workPersonName; + @ApiModelProperty("负责人联系方式") + @TableField(exist = false) + private String workPersonPhoneNumber; + + + @Override + public String toString() { + return "BusAlarm{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + ", alarmType=" + alarmType + + ", alarmValue=" + alarmValue + + ", alarmStatus=" + alarmStatus + + ", alarmImage=" + alarmImage + + ", alarmContent=" + alarmContent + + ", alarmTime=" + alarmTime + + ", cancelTime=" + cancelTime + + ", alarmLng=" + alarmLng + + ", alarmLat=" + alarmLat + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java new file mode 100644 index 0000000..a0b7543 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + *

+ * 事件表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event") +@Data +@ApiModel("BusEvent") +public class BusEvent implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("事件ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件标题 + */ + @ApiModelProperty("事件名称") + @TableField("EVENT_TITLE") + private String eventTitle; + + /** + * 上报人员 + */ + @ApiModelProperty("上报人员") + @TableField("UPLOAD_NAME") + private String uploadName; + + /** + * 联系方式 + */ + @ApiModelProperty("联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 事件描述 + */ + @ApiModelProperty("事件描述") + @TableField("EVENT_DESCRIPTION") + private String eventDescription; + + @ApiModelProperty("经度") + @TableField("LNG") + private String lng; + + @ApiModelProperty("纬度") + @TableField("LAT") + private String lat; + + /** + * 事件上传时间 + */ + @ApiModelProperty("事件上传时间") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty("事件照片") + @TableField(exist = false) + private List imageList; + + + + @Override + public String toString() { + return "BusEvent{" + + "id=" + id + + ", eventTitle=" + eventTitle + + ", uploadName=" + uploadName + + ", phoneNumber=" + phoneNumber + + ", eventDescription=" + eventDescription + + ", lng=" + lng + + ", lat=" + lat + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java new file mode 100644 index 0000000..1e75245 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 事件图片表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event_image") +@Data +@ApiModel("BusEventImage") +public class BusEventImage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件ID + */ + @TableField("EVENT_ID") + private Long eventId; + + /** + * 报警图片 + */ + @TableField("IMAGE") + @ApiModelProperty("图片url") + private String image; + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java new file mode 100644 index 0000000..df89c70 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.core.base.json.DateDeserializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Device") +@TableName("br_device") +@Data +public class Device implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "设备ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty(value = "设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + /** + * 设备类型 + */ + @ApiModelProperty(value = "设备类型") + @TableField("DEVICE_TYPE") + private String deviceType; + + /** + * 设备批次 + */ + @ApiModelProperty(value = "设备批次") + @TableField("DEVICE_BATCH") + private String deviceBatch; + + /** + * 厂家 + */ + @ApiModelProperty(value = "厂家") + @TableField("MANUFACTURER") + private String manufacturer; + + /** + * 是否供电 + */ + @ApiModelProperty(value = "是否供电") + @TableField("IS_POWER_SUPPLY") + private String isPowerSupply; + + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间",dataType = "Date") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty(value = "设备类型名称") + @TableField(exist = false) + private String deviceTypeName; + + @ApiModelProperty(value = "是否供电名称") + @TableField(exist = false) + private String isPowerSupplyName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", deviceCode=" + deviceCode + + ", deviceType=" + deviceType + + ", deviceBatch=" + deviceBatch + + ", manufacturer=" + manufacturer + + ", isPowerSupply=" + isPowerSupply + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java new file mode 100644 index 0000000..5ee7015 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java @@ -0,0 +1,99 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 设备扩展信息表(安全树) + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Data +@TableName("br_device_ext") +public class DeviceExt implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 摄像头编号 + */ + @TableField("CAMERA_CODE") + private String cameraCode; + + /** + * 摄像头IP + */ + @TableField("CAMERA_IP") + private String cameraIp; + + /** + * 摄像头端口 + */ + @TableField("CAMERA_PORT") + private String cameraPort; + + /** + * 激甲编号 + */ + @TableField("GAS_CODE") + private String gasCode; + + /** + * 激甲IP + */ + @TableField("GAS_IP") + private String gasIp; + + /** + * 激甲端口 + */ + @TableField("GAS_PORT") + private String gasPort; + + /** + * 甲烷报警阈值 + */ + @TableField("GAS_THRESHOLD") + private String gasThreshold; + + @TableField(value = "HAT_LINING_CODE") + private String hatLiningCode; + + + @Override + public String toString() { + return "DeviceExt{" + + "id=" + id + + ", deviceId=" + deviceId + + ", cameraCode=" + cameraCode + + ", cameraIp=" + cameraIp + + ", cameraPort=" + cameraPort + + ", gasCode=" + gasCode + + ", gasIp=" + gasIp + + ", gasPort=" + gasPort + + ", gasThreshold=" + gasThreshold + + ", hatLiningCode=" + hatLiningCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java new file mode 100644 index 0000000..c4f3472 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java @@ -0,0 +1,62 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Data +@ApiModel("ProjectDevice") +@TableName("br_project_device") +public class ProjectDevice implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + @ApiModelProperty("设备ID(新增编辑时传)") + private Long deviceId; + + /** + * 设备编号 + */ + @TableField(exist = false) + @ApiModelProperty("设备编号(详情中展示,新增编辑不用传)") + private String deviceCode; + + @Override + public String toString() { + return "ProjectDevice{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java new file mode 100644 index 0000000..10b23c4 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java @@ -0,0 +1,104 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("ProjectWorker") +@TableName("br_project_worker") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ProjectWorker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 人员ID + */ + @ApiModelProperty("人员ID") + @TableField("WORKER_ID") + private Long workerId; + + /** + * 安全帽编号 + */ + @ApiModelProperty("安全帽编号") + @TableField("HAT_CODE") + private String hatCode; + + /** + * 背心编号 + */ + @ApiModelProperty("背心编号") + @TableField("VAST_CODE") + private String vastCode; + + /** + * 手环编号 + */ + @ApiModelProperty("手环编号") + @TableField("BRACELET_CODE") + private String braceletCode; + + @ApiModelProperty("人员姓名(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerName; + + @ApiModelProperty("人员部门ID(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptId; + + @ApiModelProperty("人员部门名称(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptName; + + @ApiModelProperty("人员联系方式(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerPhoneNumber; + + public ProjectWorker(Long projectId, Long workerId) { + this.projectId = projectId; + this.workerId = workerId; + } + + @Override + public String toString() { + return "ProjectWorker{" + + "id=" + id + + ", projectId=" + projectId + + ", workerId=" + workerId + + ", hatCode=" + hatCode + + ", vastCode=" + vastCode + + ", braceletCode=" + braceletCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java new file mode 100644 index 0000000..fa6f41d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 作业现场表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("WorkSiteInfo") +@TableName("br_work_site_info") +@Data +public class WorkSiteInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("作业现场ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业名称 + */ + @ApiModelProperty("作业名称") + @TableField("WORK_TITLE") + private String workTitle; + + /** + * 责任人 + */ + @ApiModelProperty("责任人(人员ID)") + @TableField("WORK_PERSON") + private Long workPerson; + + /** + * 作业描述 + */ + @ApiModelProperty("作业描述") + @TableField("WORK_SITE_DESC") + private String workSiteDesc; + + /** + * 作业状态 + */ + @ApiModelProperty("作业状态") + @TableField("PROJECT_STATE") + private String projectState; + + /** + * 所属道路 + */ + @ApiModelProperty("所属道路") + @TableField("WORK_ROAD") + private String workRoad; + + @TableField("IMAGE_URL") + private String imageUrl; + + @TableField("CREATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + @TableField("UPDATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("FINISH_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + @ApiModelProperty("负责人姓名(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonName; + + @ApiModelProperty("负责人联系方式(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonPhoneNumber; + + @ApiModelProperty("负责人所属部门ID(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private Long workPersonDeptId; + + @ApiModelProperty("负责人所属部门名称(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonDeptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + + @Override + public String toString() { + return "WorkSiteInfo{" + + "id=" + id + + ", workTitle=" + workTitle + + ", workPerson=" + workPerson + + ", workSiteDesc=" + workSiteDesc + + ", projectState=" + projectState + + ", imageUrl=" + imageUrl + + ", updateTime=" + updateTime + + ", workRoad=" + workRoad + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java new file mode 100644 index 0000000..28a4daa --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java @@ -0,0 +1,147 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Worker") +@TableName("br_worker") +@Data +public class Worker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "人员ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 姓名 + */ + @ApiModelProperty(value = "姓名") + @TableField("WORKER_NAME") + private String workerName; + + /** + * 性别 + */ + @ApiModelProperty(value = "性别") + @TableField("GENDER") + private String gender; + + /** + * 所属部门 + */ + @ApiModelProperty(value = "所属部门(人员管理)") + @TableField("DEPT_ID") + private Long deptId; + + /** + * 所属单位 + */ + @ApiModelProperty(value = "所属单位(入场申请中使用)") + @TableField("OWNER_SHIP") + private String ownerShip; + + /** + * 联系方式 + */ + @ApiModelProperty(value = "联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 证件号 + */ + @ApiModelProperty(value = "证件号") + @TableField("ID_CARD_NUMBER") + private String idCardNumber; + + /** + * 入场原因 + */ + @ApiModelProperty(value = "入场原因(入场申请中使用)") + @TableField("ENTER_REASON") + private String enterReason; + + /** + * 入场人脸照片 + */ + @ApiModelProperty(value = "人脸照片(照片路径)") + @TableField("WORKER_AVATAR") + private String workerAvatar; + + /** + * 申请入场时间 + */ + @ApiModelProperty(value = "注册时间/申请入场时间") + @TableField("CREATE_TIME") + private Date createTime; + + /** + * 人员类型 + */ + @ApiModelProperty(value = "人员类型(区分人员管理和入场申请)") + @TableField("WORKER_TYPE") + private String workerType; + + @ApiModelProperty(value = "性别名称") + @TableField(exist = false) + private String genderName; + + @ApiModelProperty(value = "部门名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @ApiModelProperty(value = "是否注册(0未注册;1已注册)",allowableValues = "0,1") + @TableField(exist = false) + private String isRegister; + + @Override + public String toString() { + return "Worker{" + + "id=" + id + + ", workerName=" + workerName + + ", gender=" + gender + + ", deptId=" + deptId + + ", ownerShip=" + ownerShip + + ", phoneNumber=" + phoneNumber + + ", idCardNumber=" + idCardNumber + + ", enterReason=" + enterReason + + ", workerAvatar=" + workerAvatar + + ", createTime=" + createTime + + ", workerType=" + workerType + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java new file mode 100644 index 0000000..9801742 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警记录表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusAlarmMapper extends BaseMapper { + + Page listPage(Page page,@Param("ew") QueryWrapper queryWrapper); + + void cancelAlarm(@Param("deviceId")Long deviceId,@Param("alarmType") String alarmType); + + List alarmCount(@Param("projectId")Long projectId, @Param("alarmStatus")String alarmStatus); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java new file mode 100644 index 0000000..9590b7d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件图片表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventImageMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java new file mode 100644 index 0000000..3c85edf --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java new file mode 100644 index 0000000..4ca9212 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 设备扩展信息表(安全树) Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface DeviceExtMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java new file mode 100644 index 0000000..444c0c5 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Mapper +public interface DeviceMapper extends BaseMapper { + + Page listDetailPage(Page page,@Param("ew") QueryWrapper ew); + + List selectProjectDevice(@Param("projectId") Long projectId); + + List selectHelmetList(@Param("deviceType")String deviceType); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java new file mode 100644 index 0000000..1d0c14e --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectDeviceMapper extends BaseMapper { + List selectDetailByProjectId(@Param("projectId") Long projectId); + + List selectDeviceLocationList(@Param("projectId") Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java new file mode 100644 index 0000000..58583d1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectWorkerMapper extends BaseMapper { + + List selectDetailByProjectId(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + + List selectWorkerLocationList(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java new file mode 100644 index 0000000..a4934d2 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +/** + *

+ * 作业现场表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkSiteInfoMapper extends BaseMapper { + + Page selectListPage(Page page,@Param("ew") QueryWrapper ew); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java new file mode 100644 index 0000000..258fb12 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkerMapper extends BaseMapper { + + + Page selectListPage(Page page, @Param("ew") QueryWrapper ew); + + List selectWorkerAvatars(@Param("projectId")Long projectId); + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml new file mode 100644 index 0000000..595088a --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml @@ -0,0 +1,58 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml new file mode 100644 index 0000000..fbc3db3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml new file mode 100644 index 0000000..627d573 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml new file mode 100644 index 0000000..5321d1c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml new file mode 100644 index 0000000..94262e1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml @@ -0,0 +1,97 @@ + + + + + + + + + + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java new file mode 100644 index 0000000..73d7799 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.dto; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "AlarmUpload",description = "报警上传") +@Data +public class AlarmUpload { + + @ApiModelProperty(value = "摄像头ip") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + @ApiModelProperty(value = "安全树甲烷设备ip") + private String gasIp; + @ApiModelProperty(value = "安全树甲烷设备端口") + private String gasPort; + @ApiModelProperty(value = "报警值") + private String alarmValue; + @ApiModelProperty(value = "报警时间") + private String alarmTime; + @ApiModelProperty(value = "报警类型") + private String alarmType; + @ApiModelProperty(value = "报警图片") + private String alarmImage; + @ApiModelProperty(value = "报警内容") + private String alarmContent; + + @Override + public String toString() { + return "AlarmUpload{" + + "cameraIp='" + cameraIp + '\'' + + ", cameraPort='" + cameraPort + '\'' + + ", gasIp='" + gasIp + '\'' + + ", gasPort='" + gasPort + '\'' + + ", alarmValue='" + alarmValue + '\'' + + ", alarmTime='" + alarmTime + '\'' + + ", alarmType='" + alarmType + '\'' + + ", alarmImage='" + (StrUtil.isNotEmpty(alarmImage) ? alarmImage.substring(0,50) : "null") + '\'' + + ", alarmContent='" + alarmContent + '\'' + + '}'; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java new file mode 100644 index 0000000..ea518d9 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.modular.system.entity.Device; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("DeviceDetailDTO") +@Data +public class DeviceDetailDTO extends Device { + + @ApiModelProperty(value = "摄像头编号") + private String cameraCode; + + @ApiModelProperty(value = "摄像头IP") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + + @ApiModelProperty(value = "激甲编号") + private String gasCode; + + @ApiModelProperty(value = "激甲IP") + private String gasIp; + + @ApiModelProperty(value = "激甲端口") + private String gasPort; + + @ApiModelProperty(value = "智能帽衬编号") + private String hatLiningCode; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java new file mode 100644 index 0000000..29378ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("WorkSiteDetailDTO") +public class WorkSiteDetailDTO extends WorkSiteInfo { + + @ApiModelProperty(value = "安全树列表",dataType = "ProjectDevice") + private List deviceList; + + @ApiModelProperty(value = "人员列表",dataType = "ProjectWorker") + private List workerList; + + + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java new file mode 100644 index 0000000..6fd7b24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java @@ -0,0 +1,68 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "WorkerLocationDTO",description = "人员位置列表(首页)") +@Data +public class WorkerLocationDTO { + + @ApiModelProperty("人员ID") + private Long workerId; + + @ApiModelProperty("人员姓名") + private String workerName; + + @ApiModelProperty("安全帽编号") + private String hatCode; + + @ApiModelProperty("安全帽ID") + private Long hatId; + + @ApiModelProperty("背心编号") + private String vastCode; + + @ApiModelProperty("手环编号") + private String braceletCode; + + @ApiModelProperty("位置") + private String location; + + @ApiModelProperty("时间") + private String time; + + @ApiModelProperty("经度") + private String lng; + + @ApiModelProperty("纬度") + private String lat; + + @ApiModelProperty("心率") + private String heartRate; + + @ApiModelProperty("血氧") + private String bloodOxygen; + + @ApiModelProperty("一氧化碳") + private String co; + + @ApiModelProperty("甲烷") + private String gas; + + @ApiModelProperty("硫化氢") + private String h2s; + + @ApiModelProperty("氧气") + private String o2; + + @ApiModelProperty("信号") + private String signal; + + @ApiModelProperty("电量") + private String cell; + + @ApiModelProperty("是否报警") + private boolean alarmFlag; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java new file mode 100644 index 0000000..efb4a23 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java @@ -0,0 +1,159 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 报警记录表 + *

+ * + * @author zyj + * @since 2023-05-16 + */ +@Data +@ApiModel("Alarm") +@TableName("br_bus_alarm") +public class BusAlarm implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @ApiModelProperty(value = "设备ID") + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 报警类型 + */ + @ApiModelProperty(value = "报警类型") + @TableField("ALARM_TYPE") + private String alarmType; + + /** + * 报警状态 + */ + @ApiModelProperty(value = "报警状态") + @TableField("ALARM_STATUS") + private String alarmStatus; + + /** + * 报警值 + */ + @ApiModelProperty(value = "报警值") + @TableField("ALARM_VALUE") + private String alarmValue; + + /** + * 报警图片 + */ + @ApiModelProperty(value = "报警图片") + @TableField("ALARM_IMAGE") + private String alarmImage; + + /** + * 报警内容 + */ + @ApiModelProperty(value = "报警内容") + @TableField("ALARM_CONTENT") + private String alarmContent; + + /** + * 报警时间 + */ + @ApiModelProperty(value = "报警时间") + @TableField("ALARM_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date alarmTime; + + /** + * 消警时间 + */ + @ApiModelProperty(value = "消警时间") + @TableField("CANCEL_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + /** + * 报警位置经度 + */ + @ApiModelProperty(value = "报警位置经度") + @TableField("ALARM_LNG") + private String alarmLng; + + /** + * 报警位置纬度 + */ + @ApiModelProperty(value = "报警位置纬度") + @TableField("ALARM_LAT") + private String alarmLat; + + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmStatusName; + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmTypeName; + @ApiModelProperty("作业名称") + @TableField(exist = false) + private String workTitle; + @ApiModelProperty("所属道路") + @TableField(exist = false) + private String workRoad; + @ApiModelProperty("作业状态") + @TableField(exist = false) + private String projectState; + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + @ApiModelProperty("负责人姓名") + @TableField(exist = false) + private String workPersonName; + @ApiModelProperty("负责人联系方式") + @TableField(exist = false) + private String workPersonPhoneNumber; + + + @Override + public String toString() { + return "BusAlarm{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + ", alarmType=" + alarmType + + ", alarmValue=" + alarmValue + + ", alarmStatus=" + alarmStatus + + ", alarmImage=" + alarmImage + + ", alarmContent=" + alarmContent + + ", alarmTime=" + alarmTime + + ", cancelTime=" + cancelTime + + ", alarmLng=" + alarmLng + + ", alarmLat=" + alarmLat + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java new file mode 100644 index 0000000..a0b7543 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + *

+ * 事件表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event") +@Data +@ApiModel("BusEvent") +public class BusEvent implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("事件ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件标题 + */ + @ApiModelProperty("事件名称") + @TableField("EVENT_TITLE") + private String eventTitle; + + /** + * 上报人员 + */ + @ApiModelProperty("上报人员") + @TableField("UPLOAD_NAME") + private String uploadName; + + /** + * 联系方式 + */ + @ApiModelProperty("联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 事件描述 + */ + @ApiModelProperty("事件描述") + @TableField("EVENT_DESCRIPTION") + private String eventDescription; + + @ApiModelProperty("经度") + @TableField("LNG") + private String lng; + + @ApiModelProperty("纬度") + @TableField("LAT") + private String lat; + + /** + * 事件上传时间 + */ + @ApiModelProperty("事件上传时间") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty("事件照片") + @TableField(exist = false) + private List imageList; + + + + @Override + public String toString() { + return "BusEvent{" + + "id=" + id + + ", eventTitle=" + eventTitle + + ", uploadName=" + uploadName + + ", phoneNumber=" + phoneNumber + + ", eventDescription=" + eventDescription + + ", lng=" + lng + + ", lat=" + lat + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java new file mode 100644 index 0000000..1e75245 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 事件图片表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event_image") +@Data +@ApiModel("BusEventImage") +public class BusEventImage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件ID + */ + @TableField("EVENT_ID") + private Long eventId; + + /** + * 报警图片 + */ + @TableField("IMAGE") + @ApiModelProperty("图片url") + private String image; + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java new file mode 100644 index 0000000..df89c70 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.core.base.json.DateDeserializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Device") +@TableName("br_device") +@Data +public class Device implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "设备ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty(value = "设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + /** + * 设备类型 + */ + @ApiModelProperty(value = "设备类型") + @TableField("DEVICE_TYPE") + private String deviceType; + + /** + * 设备批次 + */ + @ApiModelProperty(value = "设备批次") + @TableField("DEVICE_BATCH") + private String deviceBatch; + + /** + * 厂家 + */ + @ApiModelProperty(value = "厂家") + @TableField("MANUFACTURER") + private String manufacturer; + + /** + * 是否供电 + */ + @ApiModelProperty(value = "是否供电") + @TableField("IS_POWER_SUPPLY") + private String isPowerSupply; + + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间",dataType = "Date") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty(value = "设备类型名称") + @TableField(exist = false) + private String deviceTypeName; + + @ApiModelProperty(value = "是否供电名称") + @TableField(exist = false) + private String isPowerSupplyName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", deviceCode=" + deviceCode + + ", deviceType=" + deviceType + + ", deviceBatch=" + deviceBatch + + ", manufacturer=" + manufacturer + + ", isPowerSupply=" + isPowerSupply + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java new file mode 100644 index 0000000..5ee7015 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java @@ -0,0 +1,99 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 设备扩展信息表(安全树) + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Data +@TableName("br_device_ext") +public class DeviceExt implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 摄像头编号 + */ + @TableField("CAMERA_CODE") + private String cameraCode; + + /** + * 摄像头IP + */ + @TableField("CAMERA_IP") + private String cameraIp; + + /** + * 摄像头端口 + */ + @TableField("CAMERA_PORT") + private String cameraPort; + + /** + * 激甲编号 + */ + @TableField("GAS_CODE") + private String gasCode; + + /** + * 激甲IP + */ + @TableField("GAS_IP") + private String gasIp; + + /** + * 激甲端口 + */ + @TableField("GAS_PORT") + private String gasPort; + + /** + * 甲烷报警阈值 + */ + @TableField("GAS_THRESHOLD") + private String gasThreshold; + + @TableField(value = "HAT_LINING_CODE") + private String hatLiningCode; + + + @Override + public String toString() { + return "DeviceExt{" + + "id=" + id + + ", deviceId=" + deviceId + + ", cameraCode=" + cameraCode + + ", cameraIp=" + cameraIp + + ", cameraPort=" + cameraPort + + ", gasCode=" + gasCode + + ", gasIp=" + gasIp + + ", gasPort=" + gasPort + + ", gasThreshold=" + gasThreshold + + ", hatLiningCode=" + hatLiningCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java new file mode 100644 index 0000000..c4f3472 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java @@ -0,0 +1,62 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Data +@ApiModel("ProjectDevice") +@TableName("br_project_device") +public class ProjectDevice implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + @ApiModelProperty("设备ID(新增编辑时传)") + private Long deviceId; + + /** + * 设备编号 + */ + @TableField(exist = false) + @ApiModelProperty("设备编号(详情中展示,新增编辑不用传)") + private String deviceCode; + + @Override + public String toString() { + return "ProjectDevice{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java new file mode 100644 index 0000000..10b23c4 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java @@ -0,0 +1,104 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("ProjectWorker") +@TableName("br_project_worker") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ProjectWorker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 人员ID + */ + @ApiModelProperty("人员ID") + @TableField("WORKER_ID") + private Long workerId; + + /** + * 安全帽编号 + */ + @ApiModelProperty("安全帽编号") + @TableField("HAT_CODE") + private String hatCode; + + /** + * 背心编号 + */ + @ApiModelProperty("背心编号") + @TableField("VAST_CODE") + private String vastCode; + + /** + * 手环编号 + */ + @ApiModelProperty("手环编号") + @TableField("BRACELET_CODE") + private String braceletCode; + + @ApiModelProperty("人员姓名(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerName; + + @ApiModelProperty("人员部门ID(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptId; + + @ApiModelProperty("人员部门名称(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptName; + + @ApiModelProperty("人员联系方式(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerPhoneNumber; + + public ProjectWorker(Long projectId, Long workerId) { + this.projectId = projectId; + this.workerId = workerId; + } + + @Override + public String toString() { + return "ProjectWorker{" + + "id=" + id + + ", projectId=" + projectId + + ", workerId=" + workerId + + ", hatCode=" + hatCode + + ", vastCode=" + vastCode + + ", braceletCode=" + braceletCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java new file mode 100644 index 0000000..fa6f41d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 作业现场表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("WorkSiteInfo") +@TableName("br_work_site_info") +@Data +public class WorkSiteInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("作业现场ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业名称 + */ + @ApiModelProperty("作业名称") + @TableField("WORK_TITLE") + private String workTitle; + + /** + * 责任人 + */ + @ApiModelProperty("责任人(人员ID)") + @TableField("WORK_PERSON") + private Long workPerson; + + /** + * 作业描述 + */ + @ApiModelProperty("作业描述") + @TableField("WORK_SITE_DESC") + private String workSiteDesc; + + /** + * 作业状态 + */ + @ApiModelProperty("作业状态") + @TableField("PROJECT_STATE") + private String projectState; + + /** + * 所属道路 + */ + @ApiModelProperty("所属道路") + @TableField("WORK_ROAD") + private String workRoad; + + @TableField("IMAGE_URL") + private String imageUrl; + + @TableField("CREATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + @TableField("UPDATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("FINISH_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + @ApiModelProperty("负责人姓名(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonName; + + @ApiModelProperty("负责人联系方式(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonPhoneNumber; + + @ApiModelProperty("负责人所属部门ID(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private Long workPersonDeptId; + + @ApiModelProperty("负责人所属部门名称(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonDeptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + + @Override + public String toString() { + return "WorkSiteInfo{" + + "id=" + id + + ", workTitle=" + workTitle + + ", workPerson=" + workPerson + + ", workSiteDesc=" + workSiteDesc + + ", projectState=" + projectState + + ", imageUrl=" + imageUrl + + ", updateTime=" + updateTime + + ", workRoad=" + workRoad + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java new file mode 100644 index 0000000..28a4daa --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java @@ -0,0 +1,147 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Worker") +@TableName("br_worker") +@Data +public class Worker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "人员ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 姓名 + */ + @ApiModelProperty(value = "姓名") + @TableField("WORKER_NAME") + private String workerName; + + /** + * 性别 + */ + @ApiModelProperty(value = "性别") + @TableField("GENDER") + private String gender; + + /** + * 所属部门 + */ + @ApiModelProperty(value = "所属部门(人员管理)") + @TableField("DEPT_ID") + private Long deptId; + + /** + * 所属单位 + */ + @ApiModelProperty(value = "所属单位(入场申请中使用)") + @TableField("OWNER_SHIP") + private String ownerShip; + + /** + * 联系方式 + */ + @ApiModelProperty(value = "联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 证件号 + */ + @ApiModelProperty(value = "证件号") + @TableField("ID_CARD_NUMBER") + private String idCardNumber; + + /** + * 入场原因 + */ + @ApiModelProperty(value = "入场原因(入场申请中使用)") + @TableField("ENTER_REASON") + private String enterReason; + + /** + * 入场人脸照片 + */ + @ApiModelProperty(value = "人脸照片(照片路径)") + @TableField("WORKER_AVATAR") + private String workerAvatar; + + /** + * 申请入场时间 + */ + @ApiModelProperty(value = "注册时间/申请入场时间") + @TableField("CREATE_TIME") + private Date createTime; + + /** + * 人员类型 + */ + @ApiModelProperty(value = "人员类型(区分人员管理和入场申请)") + @TableField("WORKER_TYPE") + private String workerType; + + @ApiModelProperty(value = "性别名称") + @TableField(exist = false) + private String genderName; + + @ApiModelProperty(value = "部门名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @ApiModelProperty(value = "是否注册(0未注册;1已注册)",allowableValues = "0,1") + @TableField(exist = false) + private String isRegister; + + @Override + public String toString() { + return "Worker{" + + "id=" + id + + ", workerName=" + workerName + + ", gender=" + gender + + ", deptId=" + deptId + + ", ownerShip=" + ownerShip + + ", phoneNumber=" + phoneNumber + + ", idCardNumber=" + idCardNumber + + ", enterReason=" + enterReason + + ", workerAvatar=" + workerAvatar + + ", createTime=" + createTime + + ", workerType=" + workerType + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java new file mode 100644 index 0000000..9801742 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警记录表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusAlarmMapper extends BaseMapper { + + Page listPage(Page page,@Param("ew") QueryWrapper queryWrapper); + + void cancelAlarm(@Param("deviceId")Long deviceId,@Param("alarmType") String alarmType); + + List alarmCount(@Param("projectId")Long projectId, @Param("alarmStatus")String alarmStatus); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java new file mode 100644 index 0000000..9590b7d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件图片表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventImageMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java new file mode 100644 index 0000000..3c85edf --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java new file mode 100644 index 0000000..4ca9212 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 设备扩展信息表(安全树) Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface DeviceExtMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java new file mode 100644 index 0000000..444c0c5 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Mapper +public interface DeviceMapper extends BaseMapper { + + Page listDetailPage(Page page,@Param("ew") QueryWrapper ew); + + List selectProjectDevice(@Param("projectId") Long projectId); + + List selectHelmetList(@Param("deviceType")String deviceType); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java new file mode 100644 index 0000000..1d0c14e --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectDeviceMapper extends BaseMapper { + List selectDetailByProjectId(@Param("projectId") Long projectId); + + List selectDeviceLocationList(@Param("projectId") Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java new file mode 100644 index 0000000..58583d1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectWorkerMapper extends BaseMapper { + + List selectDetailByProjectId(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + + List selectWorkerLocationList(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java new file mode 100644 index 0000000..a4934d2 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +/** + *

+ * 作业现场表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkSiteInfoMapper extends BaseMapper { + + Page selectListPage(Page page,@Param("ew") QueryWrapper ew); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java new file mode 100644 index 0000000..258fb12 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkerMapper extends BaseMapper { + + + Page selectListPage(Page page, @Param("ew") QueryWrapper ew); + + List selectWorkerAvatars(@Param("projectId")Long projectId); + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml new file mode 100644 index 0000000..595088a --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml @@ -0,0 +1,58 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml new file mode 100644 index 0000000..fbc3db3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml new file mode 100644 index 0000000..627d573 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml new file mode 100644 index 0000000..5321d1c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml new file mode 100644 index 0000000..94262e1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml @@ -0,0 +1,97 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml new file mode 100644 index 0000000..c6d1c24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml @@ -0,0 +1,29 @@ + + + + + + + + + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java new file mode 100644 index 0000000..73d7799 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.dto; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "AlarmUpload",description = "报警上传") +@Data +public class AlarmUpload { + + @ApiModelProperty(value = "摄像头ip") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + @ApiModelProperty(value = "安全树甲烷设备ip") + private String gasIp; + @ApiModelProperty(value = "安全树甲烷设备端口") + private String gasPort; + @ApiModelProperty(value = "报警值") + private String alarmValue; + @ApiModelProperty(value = "报警时间") + private String alarmTime; + @ApiModelProperty(value = "报警类型") + private String alarmType; + @ApiModelProperty(value = "报警图片") + private String alarmImage; + @ApiModelProperty(value = "报警内容") + private String alarmContent; + + @Override + public String toString() { + return "AlarmUpload{" + + "cameraIp='" + cameraIp + '\'' + + ", cameraPort='" + cameraPort + '\'' + + ", gasIp='" + gasIp + '\'' + + ", gasPort='" + gasPort + '\'' + + ", alarmValue='" + alarmValue + '\'' + + ", alarmTime='" + alarmTime + '\'' + + ", alarmType='" + alarmType + '\'' + + ", alarmImage='" + (StrUtil.isNotEmpty(alarmImage) ? alarmImage.substring(0,50) : "null") + '\'' + + ", alarmContent='" + alarmContent + '\'' + + '}'; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java new file mode 100644 index 0000000..ea518d9 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.modular.system.entity.Device; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("DeviceDetailDTO") +@Data +public class DeviceDetailDTO extends Device { + + @ApiModelProperty(value = "摄像头编号") + private String cameraCode; + + @ApiModelProperty(value = "摄像头IP") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + + @ApiModelProperty(value = "激甲编号") + private String gasCode; + + @ApiModelProperty(value = "激甲IP") + private String gasIp; + + @ApiModelProperty(value = "激甲端口") + private String gasPort; + + @ApiModelProperty(value = "智能帽衬编号") + private String hatLiningCode; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java new file mode 100644 index 0000000..29378ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("WorkSiteDetailDTO") +public class WorkSiteDetailDTO extends WorkSiteInfo { + + @ApiModelProperty(value = "安全树列表",dataType = "ProjectDevice") + private List deviceList; + + @ApiModelProperty(value = "人员列表",dataType = "ProjectWorker") + private List workerList; + + + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java new file mode 100644 index 0000000..6fd7b24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java @@ -0,0 +1,68 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "WorkerLocationDTO",description = "人员位置列表(首页)") +@Data +public class WorkerLocationDTO { + + @ApiModelProperty("人员ID") + private Long workerId; + + @ApiModelProperty("人员姓名") + private String workerName; + + @ApiModelProperty("安全帽编号") + private String hatCode; + + @ApiModelProperty("安全帽ID") + private Long hatId; + + @ApiModelProperty("背心编号") + private String vastCode; + + @ApiModelProperty("手环编号") + private String braceletCode; + + @ApiModelProperty("位置") + private String location; + + @ApiModelProperty("时间") + private String time; + + @ApiModelProperty("经度") + private String lng; + + @ApiModelProperty("纬度") + private String lat; + + @ApiModelProperty("心率") + private String heartRate; + + @ApiModelProperty("血氧") + private String bloodOxygen; + + @ApiModelProperty("一氧化碳") + private String co; + + @ApiModelProperty("甲烷") + private String gas; + + @ApiModelProperty("硫化氢") + private String h2s; + + @ApiModelProperty("氧气") + private String o2; + + @ApiModelProperty("信号") + private String signal; + + @ApiModelProperty("电量") + private String cell; + + @ApiModelProperty("是否报警") + private boolean alarmFlag; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java new file mode 100644 index 0000000..efb4a23 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java @@ -0,0 +1,159 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 报警记录表 + *

+ * + * @author zyj + * @since 2023-05-16 + */ +@Data +@ApiModel("Alarm") +@TableName("br_bus_alarm") +public class BusAlarm implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @ApiModelProperty(value = "设备ID") + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 报警类型 + */ + @ApiModelProperty(value = "报警类型") + @TableField("ALARM_TYPE") + private String alarmType; + + /** + * 报警状态 + */ + @ApiModelProperty(value = "报警状态") + @TableField("ALARM_STATUS") + private String alarmStatus; + + /** + * 报警值 + */ + @ApiModelProperty(value = "报警值") + @TableField("ALARM_VALUE") + private String alarmValue; + + /** + * 报警图片 + */ + @ApiModelProperty(value = "报警图片") + @TableField("ALARM_IMAGE") + private String alarmImage; + + /** + * 报警内容 + */ + @ApiModelProperty(value = "报警内容") + @TableField("ALARM_CONTENT") + private String alarmContent; + + /** + * 报警时间 + */ + @ApiModelProperty(value = "报警时间") + @TableField("ALARM_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date alarmTime; + + /** + * 消警时间 + */ + @ApiModelProperty(value = "消警时间") + @TableField("CANCEL_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + /** + * 报警位置经度 + */ + @ApiModelProperty(value = "报警位置经度") + @TableField("ALARM_LNG") + private String alarmLng; + + /** + * 报警位置纬度 + */ + @ApiModelProperty(value = "报警位置纬度") + @TableField("ALARM_LAT") + private String alarmLat; + + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmStatusName; + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmTypeName; + @ApiModelProperty("作业名称") + @TableField(exist = false) + private String workTitle; + @ApiModelProperty("所属道路") + @TableField(exist = false) + private String workRoad; + @ApiModelProperty("作业状态") + @TableField(exist = false) + private String projectState; + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + @ApiModelProperty("负责人姓名") + @TableField(exist = false) + private String workPersonName; + @ApiModelProperty("负责人联系方式") + @TableField(exist = false) + private String workPersonPhoneNumber; + + + @Override + public String toString() { + return "BusAlarm{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + ", alarmType=" + alarmType + + ", alarmValue=" + alarmValue + + ", alarmStatus=" + alarmStatus + + ", alarmImage=" + alarmImage + + ", alarmContent=" + alarmContent + + ", alarmTime=" + alarmTime + + ", cancelTime=" + cancelTime + + ", alarmLng=" + alarmLng + + ", alarmLat=" + alarmLat + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java new file mode 100644 index 0000000..a0b7543 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + *

+ * 事件表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event") +@Data +@ApiModel("BusEvent") +public class BusEvent implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("事件ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件标题 + */ + @ApiModelProperty("事件名称") + @TableField("EVENT_TITLE") + private String eventTitle; + + /** + * 上报人员 + */ + @ApiModelProperty("上报人员") + @TableField("UPLOAD_NAME") + private String uploadName; + + /** + * 联系方式 + */ + @ApiModelProperty("联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 事件描述 + */ + @ApiModelProperty("事件描述") + @TableField("EVENT_DESCRIPTION") + private String eventDescription; + + @ApiModelProperty("经度") + @TableField("LNG") + private String lng; + + @ApiModelProperty("纬度") + @TableField("LAT") + private String lat; + + /** + * 事件上传时间 + */ + @ApiModelProperty("事件上传时间") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty("事件照片") + @TableField(exist = false) + private List imageList; + + + + @Override + public String toString() { + return "BusEvent{" + + "id=" + id + + ", eventTitle=" + eventTitle + + ", uploadName=" + uploadName + + ", phoneNumber=" + phoneNumber + + ", eventDescription=" + eventDescription + + ", lng=" + lng + + ", lat=" + lat + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java new file mode 100644 index 0000000..1e75245 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 事件图片表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event_image") +@Data +@ApiModel("BusEventImage") +public class BusEventImage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件ID + */ + @TableField("EVENT_ID") + private Long eventId; + + /** + * 报警图片 + */ + @TableField("IMAGE") + @ApiModelProperty("图片url") + private String image; + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java new file mode 100644 index 0000000..df89c70 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.core.base.json.DateDeserializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Device") +@TableName("br_device") +@Data +public class Device implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "设备ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty(value = "设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + /** + * 设备类型 + */ + @ApiModelProperty(value = "设备类型") + @TableField("DEVICE_TYPE") + private String deviceType; + + /** + * 设备批次 + */ + @ApiModelProperty(value = "设备批次") + @TableField("DEVICE_BATCH") + private String deviceBatch; + + /** + * 厂家 + */ + @ApiModelProperty(value = "厂家") + @TableField("MANUFACTURER") + private String manufacturer; + + /** + * 是否供电 + */ + @ApiModelProperty(value = "是否供电") + @TableField("IS_POWER_SUPPLY") + private String isPowerSupply; + + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间",dataType = "Date") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty(value = "设备类型名称") + @TableField(exist = false) + private String deviceTypeName; + + @ApiModelProperty(value = "是否供电名称") + @TableField(exist = false) + private String isPowerSupplyName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", deviceCode=" + deviceCode + + ", deviceType=" + deviceType + + ", deviceBatch=" + deviceBatch + + ", manufacturer=" + manufacturer + + ", isPowerSupply=" + isPowerSupply + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java new file mode 100644 index 0000000..5ee7015 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java @@ -0,0 +1,99 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 设备扩展信息表(安全树) + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Data +@TableName("br_device_ext") +public class DeviceExt implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 摄像头编号 + */ + @TableField("CAMERA_CODE") + private String cameraCode; + + /** + * 摄像头IP + */ + @TableField("CAMERA_IP") + private String cameraIp; + + /** + * 摄像头端口 + */ + @TableField("CAMERA_PORT") + private String cameraPort; + + /** + * 激甲编号 + */ + @TableField("GAS_CODE") + private String gasCode; + + /** + * 激甲IP + */ + @TableField("GAS_IP") + private String gasIp; + + /** + * 激甲端口 + */ + @TableField("GAS_PORT") + private String gasPort; + + /** + * 甲烷报警阈值 + */ + @TableField("GAS_THRESHOLD") + private String gasThreshold; + + @TableField(value = "HAT_LINING_CODE") + private String hatLiningCode; + + + @Override + public String toString() { + return "DeviceExt{" + + "id=" + id + + ", deviceId=" + deviceId + + ", cameraCode=" + cameraCode + + ", cameraIp=" + cameraIp + + ", cameraPort=" + cameraPort + + ", gasCode=" + gasCode + + ", gasIp=" + gasIp + + ", gasPort=" + gasPort + + ", gasThreshold=" + gasThreshold + + ", hatLiningCode=" + hatLiningCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java new file mode 100644 index 0000000..c4f3472 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java @@ -0,0 +1,62 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Data +@ApiModel("ProjectDevice") +@TableName("br_project_device") +public class ProjectDevice implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + @ApiModelProperty("设备ID(新增编辑时传)") + private Long deviceId; + + /** + * 设备编号 + */ + @TableField(exist = false) + @ApiModelProperty("设备编号(详情中展示,新增编辑不用传)") + private String deviceCode; + + @Override + public String toString() { + return "ProjectDevice{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java new file mode 100644 index 0000000..10b23c4 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java @@ -0,0 +1,104 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("ProjectWorker") +@TableName("br_project_worker") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ProjectWorker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 人员ID + */ + @ApiModelProperty("人员ID") + @TableField("WORKER_ID") + private Long workerId; + + /** + * 安全帽编号 + */ + @ApiModelProperty("安全帽编号") + @TableField("HAT_CODE") + private String hatCode; + + /** + * 背心编号 + */ + @ApiModelProperty("背心编号") + @TableField("VAST_CODE") + private String vastCode; + + /** + * 手环编号 + */ + @ApiModelProperty("手环编号") + @TableField("BRACELET_CODE") + private String braceletCode; + + @ApiModelProperty("人员姓名(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerName; + + @ApiModelProperty("人员部门ID(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptId; + + @ApiModelProperty("人员部门名称(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptName; + + @ApiModelProperty("人员联系方式(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerPhoneNumber; + + public ProjectWorker(Long projectId, Long workerId) { + this.projectId = projectId; + this.workerId = workerId; + } + + @Override + public String toString() { + return "ProjectWorker{" + + "id=" + id + + ", projectId=" + projectId + + ", workerId=" + workerId + + ", hatCode=" + hatCode + + ", vastCode=" + vastCode + + ", braceletCode=" + braceletCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java new file mode 100644 index 0000000..fa6f41d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 作业现场表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("WorkSiteInfo") +@TableName("br_work_site_info") +@Data +public class WorkSiteInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("作业现场ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业名称 + */ + @ApiModelProperty("作业名称") + @TableField("WORK_TITLE") + private String workTitle; + + /** + * 责任人 + */ + @ApiModelProperty("责任人(人员ID)") + @TableField("WORK_PERSON") + private Long workPerson; + + /** + * 作业描述 + */ + @ApiModelProperty("作业描述") + @TableField("WORK_SITE_DESC") + private String workSiteDesc; + + /** + * 作业状态 + */ + @ApiModelProperty("作业状态") + @TableField("PROJECT_STATE") + private String projectState; + + /** + * 所属道路 + */ + @ApiModelProperty("所属道路") + @TableField("WORK_ROAD") + private String workRoad; + + @TableField("IMAGE_URL") + private String imageUrl; + + @TableField("CREATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + @TableField("UPDATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("FINISH_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + @ApiModelProperty("负责人姓名(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonName; + + @ApiModelProperty("负责人联系方式(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonPhoneNumber; + + @ApiModelProperty("负责人所属部门ID(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private Long workPersonDeptId; + + @ApiModelProperty("负责人所属部门名称(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonDeptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + + @Override + public String toString() { + return "WorkSiteInfo{" + + "id=" + id + + ", workTitle=" + workTitle + + ", workPerson=" + workPerson + + ", workSiteDesc=" + workSiteDesc + + ", projectState=" + projectState + + ", imageUrl=" + imageUrl + + ", updateTime=" + updateTime + + ", workRoad=" + workRoad + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java new file mode 100644 index 0000000..28a4daa --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java @@ -0,0 +1,147 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Worker") +@TableName("br_worker") +@Data +public class Worker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "人员ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 姓名 + */ + @ApiModelProperty(value = "姓名") + @TableField("WORKER_NAME") + private String workerName; + + /** + * 性别 + */ + @ApiModelProperty(value = "性别") + @TableField("GENDER") + private String gender; + + /** + * 所属部门 + */ + @ApiModelProperty(value = "所属部门(人员管理)") + @TableField("DEPT_ID") + private Long deptId; + + /** + * 所属单位 + */ + @ApiModelProperty(value = "所属单位(入场申请中使用)") + @TableField("OWNER_SHIP") + private String ownerShip; + + /** + * 联系方式 + */ + @ApiModelProperty(value = "联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 证件号 + */ + @ApiModelProperty(value = "证件号") + @TableField("ID_CARD_NUMBER") + private String idCardNumber; + + /** + * 入场原因 + */ + @ApiModelProperty(value = "入场原因(入场申请中使用)") + @TableField("ENTER_REASON") + private String enterReason; + + /** + * 入场人脸照片 + */ + @ApiModelProperty(value = "人脸照片(照片路径)") + @TableField("WORKER_AVATAR") + private String workerAvatar; + + /** + * 申请入场时间 + */ + @ApiModelProperty(value = "注册时间/申请入场时间") + @TableField("CREATE_TIME") + private Date createTime; + + /** + * 人员类型 + */ + @ApiModelProperty(value = "人员类型(区分人员管理和入场申请)") + @TableField("WORKER_TYPE") + private String workerType; + + @ApiModelProperty(value = "性别名称") + @TableField(exist = false) + private String genderName; + + @ApiModelProperty(value = "部门名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @ApiModelProperty(value = "是否注册(0未注册;1已注册)",allowableValues = "0,1") + @TableField(exist = false) + private String isRegister; + + @Override + public String toString() { + return "Worker{" + + "id=" + id + + ", workerName=" + workerName + + ", gender=" + gender + + ", deptId=" + deptId + + ", ownerShip=" + ownerShip + + ", phoneNumber=" + phoneNumber + + ", idCardNumber=" + idCardNumber + + ", enterReason=" + enterReason + + ", workerAvatar=" + workerAvatar + + ", createTime=" + createTime + + ", workerType=" + workerType + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java new file mode 100644 index 0000000..9801742 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警记录表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusAlarmMapper extends BaseMapper { + + Page listPage(Page page,@Param("ew") QueryWrapper queryWrapper); + + void cancelAlarm(@Param("deviceId")Long deviceId,@Param("alarmType") String alarmType); + + List alarmCount(@Param("projectId")Long projectId, @Param("alarmStatus")String alarmStatus); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java new file mode 100644 index 0000000..9590b7d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件图片表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventImageMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java new file mode 100644 index 0000000..3c85edf --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java new file mode 100644 index 0000000..4ca9212 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 设备扩展信息表(安全树) Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface DeviceExtMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java new file mode 100644 index 0000000..444c0c5 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Mapper +public interface DeviceMapper extends BaseMapper { + + Page listDetailPage(Page page,@Param("ew") QueryWrapper ew); + + List selectProjectDevice(@Param("projectId") Long projectId); + + List selectHelmetList(@Param("deviceType")String deviceType); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java new file mode 100644 index 0000000..1d0c14e --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectDeviceMapper extends BaseMapper { + List selectDetailByProjectId(@Param("projectId") Long projectId); + + List selectDeviceLocationList(@Param("projectId") Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java new file mode 100644 index 0000000..58583d1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectWorkerMapper extends BaseMapper { + + List selectDetailByProjectId(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + + List selectWorkerLocationList(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java new file mode 100644 index 0000000..a4934d2 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +/** + *

+ * 作业现场表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkSiteInfoMapper extends BaseMapper { + + Page selectListPage(Page page,@Param("ew") QueryWrapper ew); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java new file mode 100644 index 0000000..258fb12 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkerMapper extends BaseMapper { + + + Page selectListPage(Page page, @Param("ew") QueryWrapper ew); + + List selectWorkerAvatars(@Param("projectId")Long projectId); + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml new file mode 100644 index 0000000..595088a --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml @@ -0,0 +1,58 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml new file mode 100644 index 0000000..fbc3db3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml new file mode 100644 index 0000000..627d573 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml new file mode 100644 index 0000000..5321d1c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml new file mode 100644 index 0000000..94262e1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml @@ -0,0 +1,97 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml new file mode 100644 index 0000000..c6d1c24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml @@ -0,0 +1,29 @@ + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml new file mode 100644 index 0000000..8d2de10 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java new file mode 100644 index 0000000..73d7799 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.dto; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "AlarmUpload",description = "报警上传") +@Data +public class AlarmUpload { + + @ApiModelProperty(value = "摄像头ip") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + @ApiModelProperty(value = "安全树甲烷设备ip") + private String gasIp; + @ApiModelProperty(value = "安全树甲烷设备端口") + private String gasPort; + @ApiModelProperty(value = "报警值") + private String alarmValue; + @ApiModelProperty(value = "报警时间") + private String alarmTime; + @ApiModelProperty(value = "报警类型") + private String alarmType; + @ApiModelProperty(value = "报警图片") + private String alarmImage; + @ApiModelProperty(value = "报警内容") + private String alarmContent; + + @Override + public String toString() { + return "AlarmUpload{" + + "cameraIp='" + cameraIp + '\'' + + ", cameraPort='" + cameraPort + '\'' + + ", gasIp='" + gasIp + '\'' + + ", gasPort='" + gasPort + '\'' + + ", alarmValue='" + alarmValue + '\'' + + ", alarmTime='" + alarmTime + '\'' + + ", alarmType='" + alarmType + '\'' + + ", alarmImage='" + (StrUtil.isNotEmpty(alarmImage) ? alarmImage.substring(0,50) : "null") + '\'' + + ", alarmContent='" + alarmContent + '\'' + + '}'; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java new file mode 100644 index 0000000..ea518d9 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.modular.system.entity.Device; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("DeviceDetailDTO") +@Data +public class DeviceDetailDTO extends Device { + + @ApiModelProperty(value = "摄像头编号") + private String cameraCode; + + @ApiModelProperty(value = "摄像头IP") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + + @ApiModelProperty(value = "激甲编号") + private String gasCode; + + @ApiModelProperty(value = "激甲IP") + private String gasIp; + + @ApiModelProperty(value = "激甲端口") + private String gasPort; + + @ApiModelProperty(value = "智能帽衬编号") + private String hatLiningCode; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java new file mode 100644 index 0000000..29378ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("WorkSiteDetailDTO") +public class WorkSiteDetailDTO extends WorkSiteInfo { + + @ApiModelProperty(value = "安全树列表",dataType = "ProjectDevice") + private List deviceList; + + @ApiModelProperty(value = "人员列表",dataType = "ProjectWorker") + private List workerList; + + + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java new file mode 100644 index 0000000..6fd7b24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java @@ -0,0 +1,68 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "WorkerLocationDTO",description = "人员位置列表(首页)") +@Data +public class WorkerLocationDTO { + + @ApiModelProperty("人员ID") + private Long workerId; + + @ApiModelProperty("人员姓名") + private String workerName; + + @ApiModelProperty("安全帽编号") + private String hatCode; + + @ApiModelProperty("安全帽ID") + private Long hatId; + + @ApiModelProperty("背心编号") + private String vastCode; + + @ApiModelProperty("手环编号") + private String braceletCode; + + @ApiModelProperty("位置") + private String location; + + @ApiModelProperty("时间") + private String time; + + @ApiModelProperty("经度") + private String lng; + + @ApiModelProperty("纬度") + private String lat; + + @ApiModelProperty("心率") + private String heartRate; + + @ApiModelProperty("血氧") + private String bloodOxygen; + + @ApiModelProperty("一氧化碳") + private String co; + + @ApiModelProperty("甲烷") + private String gas; + + @ApiModelProperty("硫化氢") + private String h2s; + + @ApiModelProperty("氧气") + private String o2; + + @ApiModelProperty("信号") + private String signal; + + @ApiModelProperty("电量") + private String cell; + + @ApiModelProperty("是否报警") + private boolean alarmFlag; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java new file mode 100644 index 0000000..efb4a23 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java @@ -0,0 +1,159 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 报警记录表 + *

+ * + * @author zyj + * @since 2023-05-16 + */ +@Data +@ApiModel("Alarm") +@TableName("br_bus_alarm") +public class BusAlarm implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @ApiModelProperty(value = "设备ID") + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 报警类型 + */ + @ApiModelProperty(value = "报警类型") + @TableField("ALARM_TYPE") + private String alarmType; + + /** + * 报警状态 + */ + @ApiModelProperty(value = "报警状态") + @TableField("ALARM_STATUS") + private String alarmStatus; + + /** + * 报警值 + */ + @ApiModelProperty(value = "报警值") + @TableField("ALARM_VALUE") + private String alarmValue; + + /** + * 报警图片 + */ + @ApiModelProperty(value = "报警图片") + @TableField("ALARM_IMAGE") + private String alarmImage; + + /** + * 报警内容 + */ + @ApiModelProperty(value = "报警内容") + @TableField("ALARM_CONTENT") + private String alarmContent; + + /** + * 报警时间 + */ + @ApiModelProperty(value = "报警时间") + @TableField("ALARM_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date alarmTime; + + /** + * 消警时间 + */ + @ApiModelProperty(value = "消警时间") + @TableField("CANCEL_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + /** + * 报警位置经度 + */ + @ApiModelProperty(value = "报警位置经度") + @TableField("ALARM_LNG") + private String alarmLng; + + /** + * 报警位置纬度 + */ + @ApiModelProperty(value = "报警位置纬度") + @TableField("ALARM_LAT") + private String alarmLat; + + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmStatusName; + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmTypeName; + @ApiModelProperty("作业名称") + @TableField(exist = false) + private String workTitle; + @ApiModelProperty("所属道路") + @TableField(exist = false) + private String workRoad; + @ApiModelProperty("作业状态") + @TableField(exist = false) + private String projectState; + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + @ApiModelProperty("负责人姓名") + @TableField(exist = false) + private String workPersonName; + @ApiModelProperty("负责人联系方式") + @TableField(exist = false) + private String workPersonPhoneNumber; + + + @Override + public String toString() { + return "BusAlarm{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + ", alarmType=" + alarmType + + ", alarmValue=" + alarmValue + + ", alarmStatus=" + alarmStatus + + ", alarmImage=" + alarmImage + + ", alarmContent=" + alarmContent + + ", alarmTime=" + alarmTime + + ", cancelTime=" + cancelTime + + ", alarmLng=" + alarmLng + + ", alarmLat=" + alarmLat + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java new file mode 100644 index 0000000..a0b7543 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + *

+ * 事件表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event") +@Data +@ApiModel("BusEvent") +public class BusEvent implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("事件ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件标题 + */ + @ApiModelProperty("事件名称") + @TableField("EVENT_TITLE") + private String eventTitle; + + /** + * 上报人员 + */ + @ApiModelProperty("上报人员") + @TableField("UPLOAD_NAME") + private String uploadName; + + /** + * 联系方式 + */ + @ApiModelProperty("联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 事件描述 + */ + @ApiModelProperty("事件描述") + @TableField("EVENT_DESCRIPTION") + private String eventDescription; + + @ApiModelProperty("经度") + @TableField("LNG") + private String lng; + + @ApiModelProperty("纬度") + @TableField("LAT") + private String lat; + + /** + * 事件上传时间 + */ + @ApiModelProperty("事件上传时间") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty("事件照片") + @TableField(exist = false) + private List imageList; + + + + @Override + public String toString() { + return "BusEvent{" + + "id=" + id + + ", eventTitle=" + eventTitle + + ", uploadName=" + uploadName + + ", phoneNumber=" + phoneNumber + + ", eventDescription=" + eventDescription + + ", lng=" + lng + + ", lat=" + lat + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java new file mode 100644 index 0000000..1e75245 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 事件图片表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event_image") +@Data +@ApiModel("BusEventImage") +public class BusEventImage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件ID + */ + @TableField("EVENT_ID") + private Long eventId; + + /** + * 报警图片 + */ + @TableField("IMAGE") + @ApiModelProperty("图片url") + private String image; + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java new file mode 100644 index 0000000..df89c70 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.core.base.json.DateDeserializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Device") +@TableName("br_device") +@Data +public class Device implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "设备ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty(value = "设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + /** + * 设备类型 + */ + @ApiModelProperty(value = "设备类型") + @TableField("DEVICE_TYPE") + private String deviceType; + + /** + * 设备批次 + */ + @ApiModelProperty(value = "设备批次") + @TableField("DEVICE_BATCH") + private String deviceBatch; + + /** + * 厂家 + */ + @ApiModelProperty(value = "厂家") + @TableField("MANUFACTURER") + private String manufacturer; + + /** + * 是否供电 + */ + @ApiModelProperty(value = "是否供电") + @TableField("IS_POWER_SUPPLY") + private String isPowerSupply; + + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间",dataType = "Date") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty(value = "设备类型名称") + @TableField(exist = false) + private String deviceTypeName; + + @ApiModelProperty(value = "是否供电名称") + @TableField(exist = false) + private String isPowerSupplyName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", deviceCode=" + deviceCode + + ", deviceType=" + deviceType + + ", deviceBatch=" + deviceBatch + + ", manufacturer=" + manufacturer + + ", isPowerSupply=" + isPowerSupply + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java new file mode 100644 index 0000000..5ee7015 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java @@ -0,0 +1,99 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 设备扩展信息表(安全树) + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Data +@TableName("br_device_ext") +public class DeviceExt implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 摄像头编号 + */ + @TableField("CAMERA_CODE") + private String cameraCode; + + /** + * 摄像头IP + */ + @TableField("CAMERA_IP") + private String cameraIp; + + /** + * 摄像头端口 + */ + @TableField("CAMERA_PORT") + private String cameraPort; + + /** + * 激甲编号 + */ + @TableField("GAS_CODE") + private String gasCode; + + /** + * 激甲IP + */ + @TableField("GAS_IP") + private String gasIp; + + /** + * 激甲端口 + */ + @TableField("GAS_PORT") + private String gasPort; + + /** + * 甲烷报警阈值 + */ + @TableField("GAS_THRESHOLD") + private String gasThreshold; + + @TableField(value = "HAT_LINING_CODE") + private String hatLiningCode; + + + @Override + public String toString() { + return "DeviceExt{" + + "id=" + id + + ", deviceId=" + deviceId + + ", cameraCode=" + cameraCode + + ", cameraIp=" + cameraIp + + ", cameraPort=" + cameraPort + + ", gasCode=" + gasCode + + ", gasIp=" + gasIp + + ", gasPort=" + gasPort + + ", gasThreshold=" + gasThreshold + + ", hatLiningCode=" + hatLiningCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java new file mode 100644 index 0000000..c4f3472 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java @@ -0,0 +1,62 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Data +@ApiModel("ProjectDevice") +@TableName("br_project_device") +public class ProjectDevice implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + @ApiModelProperty("设备ID(新增编辑时传)") + private Long deviceId; + + /** + * 设备编号 + */ + @TableField(exist = false) + @ApiModelProperty("设备编号(详情中展示,新增编辑不用传)") + private String deviceCode; + + @Override + public String toString() { + return "ProjectDevice{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java new file mode 100644 index 0000000..10b23c4 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java @@ -0,0 +1,104 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("ProjectWorker") +@TableName("br_project_worker") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ProjectWorker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 人员ID + */ + @ApiModelProperty("人员ID") + @TableField("WORKER_ID") + private Long workerId; + + /** + * 安全帽编号 + */ + @ApiModelProperty("安全帽编号") + @TableField("HAT_CODE") + private String hatCode; + + /** + * 背心编号 + */ + @ApiModelProperty("背心编号") + @TableField("VAST_CODE") + private String vastCode; + + /** + * 手环编号 + */ + @ApiModelProperty("手环编号") + @TableField("BRACELET_CODE") + private String braceletCode; + + @ApiModelProperty("人员姓名(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerName; + + @ApiModelProperty("人员部门ID(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptId; + + @ApiModelProperty("人员部门名称(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptName; + + @ApiModelProperty("人员联系方式(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerPhoneNumber; + + public ProjectWorker(Long projectId, Long workerId) { + this.projectId = projectId; + this.workerId = workerId; + } + + @Override + public String toString() { + return "ProjectWorker{" + + "id=" + id + + ", projectId=" + projectId + + ", workerId=" + workerId + + ", hatCode=" + hatCode + + ", vastCode=" + vastCode + + ", braceletCode=" + braceletCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java new file mode 100644 index 0000000..fa6f41d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 作业现场表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("WorkSiteInfo") +@TableName("br_work_site_info") +@Data +public class WorkSiteInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("作业现场ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业名称 + */ + @ApiModelProperty("作业名称") + @TableField("WORK_TITLE") + private String workTitle; + + /** + * 责任人 + */ + @ApiModelProperty("责任人(人员ID)") + @TableField("WORK_PERSON") + private Long workPerson; + + /** + * 作业描述 + */ + @ApiModelProperty("作业描述") + @TableField("WORK_SITE_DESC") + private String workSiteDesc; + + /** + * 作业状态 + */ + @ApiModelProperty("作业状态") + @TableField("PROJECT_STATE") + private String projectState; + + /** + * 所属道路 + */ + @ApiModelProperty("所属道路") + @TableField("WORK_ROAD") + private String workRoad; + + @TableField("IMAGE_URL") + private String imageUrl; + + @TableField("CREATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + @TableField("UPDATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("FINISH_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + @ApiModelProperty("负责人姓名(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonName; + + @ApiModelProperty("负责人联系方式(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonPhoneNumber; + + @ApiModelProperty("负责人所属部门ID(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private Long workPersonDeptId; + + @ApiModelProperty("负责人所属部门名称(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonDeptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + + @Override + public String toString() { + return "WorkSiteInfo{" + + "id=" + id + + ", workTitle=" + workTitle + + ", workPerson=" + workPerson + + ", workSiteDesc=" + workSiteDesc + + ", projectState=" + projectState + + ", imageUrl=" + imageUrl + + ", updateTime=" + updateTime + + ", workRoad=" + workRoad + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java new file mode 100644 index 0000000..28a4daa --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java @@ -0,0 +1,147 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Worker") +@TableName("br_worker") +@Data +public class Worker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "人员ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 姓名 + */ + @ApiModelProperty(value = "姓名") + @TableField("WORKER_NAME") + private String workerName; + + /** + * 性别 + */ + @ApiModelProperty(value = "性别") + @TableField("GENDER") + private String gender; + + /** + * 所属部门 + */ + @ApiModelProperty(value = "所属部门(人员管理)") + @TableField("DEPT_ID") + private Long deptId; + + /** + * 所属单位 + */ + @ApiModelProperty(value = "所属单位(入场申请中使用)") + @TableField("OWNER_SHIP") + private String ownerShip; + + /** + * 联系方式 + */ + @ApiModelProperty(value = "联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 证件号 + */ + @ApiModelProperty(value = "证件号") + @TableField("ID_CARD_NUMBER") + private String idCardNumber; + + /** + * 入场原因 + */ + @ApiModelProperty(value = "入场原因(入场申请中使用)") + @TableField("ENTER_REASON") + private String enterReason; + + /** + * 入场人脸照片 + */ + @ApiModelProperty(value = "人脸照片(照片路径)") + @TableField("WORKER_AVATAR") + private String workerAvatar; + + /** + * 申请入场时间 + */ + @ApiModelProperty(value = "注册时间/申请入场时间") + @TableField("CREATE_TIME") + private Date createTime; + + /** + * 人员类型 + */ + @ApiModelProperty(value = "人员类型(区分人员管理和入场申请)") + @TableField("WORKER_TYPE") + private String workerType; + + @ApiModelProperty(value = "性别名称") + @TableField(exist = false) + private String genderName; + + @ApiModelProperty(value = "部门名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @ApiModelProperty(value = "是否注册(0未注册;1已注册)",allowableValues = "0,1") + @TableField(exist = false) + private String isRegister; + + @Override + public String toString() { + return "Worker{" + + "id=" + id + + ", workerName=" + workerName + + ", gender=" + gender + + ", deptId=" + deptId + + ", ownerShip=" + ownerShip + + ", phoneNumber=" + phoneNumber + + ", idCardNumber=" + idCardNumber + + ", enterReason=" + enterReason + + ", workerAvatar=" + workerAvatar + + ", createTime=" + createTime + + ", workerType=" + workerType + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java new file mode 100644 index 0000000..9801742 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警记录表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusAlarmMapper extends BaseMapper { + + Page listPage(Page page,@Param("ew") QueryWrapper queryWrapper); + + void cancelAlarm(@Param("deviceId")Long deviceId,@Param("alarmType") String alarmType); + + List alarmCount(@Param("projectId")Long projectId, @Param("alarmStatus")String alarmStatus); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java new file mode 100644 index 0000000..9590b7d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件图片表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventImageMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java new file mode 100644 index 0000000..3c85edf --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java new file mode 100644 index 0000000..4ca9212 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 设备扩展信息表(安全树) Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface DeviceExtMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java new file mode 100644 index 0000000..444c0c5 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Mapper +public interface DeviceMapper extends BaseMapper { + + Page listDetailPage(Page page,@Param("ew") QueryWrapper ew); + + List selectProjectDevice(@Param("projectId") Long projectId); + + List selectHelmetList(@Param("deviceType")String deviceType); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java new file mode 100644 index 0000000..1d0c14e --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectDeviceMapper extends BaseMapper { + List selectDetailByProjectId(@Param("projectId") Long projectId); + + List selectDeviceLocationList(@Param("projectId") Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java new file mode 100644 index 0000000..58583d1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectWorkerMapper extends BaseMapper { + + List selectDetailByProjectId(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + + List selectWorkerLocationList(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java new file mode 100644 index 0000000..a4934d2 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +/** + *

+ * 作业现场表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkSiteInfoMapper extends BaseMapper { + + Page selectListPage(Page page,@Param("ew") QueryWrapper ew); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java new file mode 100644 index 0000000..258fb12 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkerMapper extends BaseMapper { + + + Page selectListPage(Page page, @Param("ew") QueryWrapper ew); + + List selectWorkerAvatars(@Param("projectId")Long projectId); + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml new file mode 100644 index 0000000..595088a --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml @@ -0,0 +1,58 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml new file mode 100644 index 0000000..fbc3db3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml new file mode 100644 index 0000000..627d573 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml new file mode 100644 index 0000000..5321d1c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml new file mode 100644 index 0000000..94262e1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml @@ -0,0 +1,97 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml new file mode 100644 index 0000000..c6d1c24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml @@ -0,0 +1,29 @@ + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml new file mode 100644 index 0000000..8d2de10 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml new file mode 100644 index 0000000..8f01326 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml @@ -0,0 +1,26 @@ + + + + + + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java new file mode 100644 index 0000000..73d7799 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.dto; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "AlarmUpload",description = "报警上传") +@Data +public class AlarmUpload { + + @ApiModelProperty(value = "摄像头ip") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + @ApiModelProperty(value = "安全树甲烷设备ip") + private String gasIp; + @ApiModelProperty(value = "安全树甲烷设备端口") + private String gasPort; + @ApiModelProperty(value = "报警值") + private String alarmValue; + @ApiModelProperty(value = "报警时间") + private String alarmTime; + @ApiModelProperty(value = "报警类型") + private String alarmType; + @ApiModelProperty(value = "报警图片") + private String alarmImage; + @ApiModelProperty(value = "报警内容") + private String alarmContent; + + @Override + public String toString() { + return "AlarmUpload{" + + "cameraIp='" + cameraIp + '\'' + + ", cameraPort='" + cameraPort + '\'' + + ", gasIp='" + gasIp + '\'' + + ", gasPort='" + gasPort + '\'' + + ", alarmValue='" + alarmValue + '\'' + + ", alarmTime='" + alarmTime + '\'' + + ", alarmType='" + alarmType + '\'' + + ", alarmImage='" + (StrUtil.isNotEmpty(alarmImage) ? alarmImage.substring(0,50) : "null") + '\'' + + ", alarmContent='" + alarmContent + '\'' + + '}'; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java new file mode 100644 index 0000000..ea518d9 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.modular.system.entity.Device; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("DeviceDetailDTO") +@Data +public class DeviceDetailDTO extends Device { + + @ApiModelProperty(value = "摄像头编号") + private String cameraCode; + + @ApiModelProperty(value = "摄像头IP") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + + @ApiModelProperty(value = "激甲编号") + private String gasCode; + + @ApiModelProperty(value = "激甲IP") + private String gasIp; + + @ApiModelProperty(value = "激甲端口") + private String gasPort; + + @ApiModelProperty(value = "智能帽衬编号") + private String hatLiningCode; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java new file mode 100644 index 0000000..29378ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("WorkSiteDetailDTO") +public class WorkSiteDetailDTO extends WorkSiteInfo { + + @ApiModelProperty(value = "安全树列表",dataType = "ProjectDevice") + private List deviceList; + + @ApiModelProperty(value = "人员列表",dataType = "ProjectWorker") + private List workerList; + + + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java new file mode 100644 index 0000000..6fd7b24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java @@ -0,0 +1,68 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "WorkerLocationDTO",description = "人员位置列表(首页)") +@Data +public class WorkerLocationDTO { + + @ApiModelProperty("人员ID") + private Long workerId; + + @ApiModelProperty("人员姓名") + private String workerName; + + @ApiModelProperty("安全帽编号") + private String hatCode; + + @ApiModelProperty("安全帽ID") + private Long hatId; + + @ApiModelProperty("背心编号") + private String vastCode; + + @ApiModelProperty("手环编号") + private String braceletCode; + + @ApiModelProperty("位置") + private String location; + + @ApiModelProperty("时间") + private String time; + + @ApiModelProperty("经度") + private String lng; + + @ApiModelProperty("纬度") + private String lat; + + @ApiModelProperty("心率") + private String heartRate; + + @ApiModelProperty("血氧") + private String bloodOxygen; + + @ApiModelProperty("一氧化碳") + private String co; + + @ApiModelProperty("甲烷") + private String gas; + + @ApiModelProperty("硫化氢") + private String h2s; + + @ApiModelProperty("氧气") + private String o2; + + @ApiModelProperty("信号") + private String signal; + + @ApiModelProperty("电量") + private String cell; + + @ApiModelProperty("是否报警") + private boolean alarmFlag; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java new file mode 100644 index 0000000..efb4a23 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java @@ -0,0 +1,159 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 报警记录表 + *

+ * + * @author zyj + * @since 2023-05-16 + */ +@Data +@ApiModel("Alarm") +@TableName("br_bus_alarm") +public class BusAlarm implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @ApiModelProperty(value = "设备ID") + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 报警类型 + */ + @ApiModelProperty(value = "报警类型") + @TableField("ALARM_TYPE") + private String alarmType; + + /** + * 报警状态 + */ + @ApiModelProperty(value = "报警状态") + @TableField("ALARM_STATUS") + private String alarmStatus; + + /** + * 报警值 + */ + @ApiModelProperty(value = "报警值") + @TableField("ALARM_VALUE") + private String alarmValue; + + /** + * 报警图片 + */ + @ApiModelProperty(value = "报警图片") + @TableField("ALARM_IMAGE") + private String alarmImage; + + /** + * 报警内容 + */ + @ApiModelProperty(value = "报警内容") + @TableField("ALARM_CONTENT") + private String alarmContent; + + /** + * 报警时间 + */ + @ApiModelProperty(value = "报警时间") + @TableField("ALARM_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date alarmTime; + + /** + * 消警时间 + */ + @ApiModelProperty(value = "消警时间") + @TableField("CANCEL_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + /** + * 报警位置经度 + */ + @ApiModelProperty(value = "报警位置经度") + @TableField("ALARM_LNG") + private String alarmLng; + + /** + * 报警位置纬度 + */ + @ApiModelProperty(value = "报警位置纬度") + @TableField("ALARM_LAT") + private String alarmLat; + + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmStatusName; + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmTypeName; + @ApiModelProperty("作业名称") + @TableField(exist = false) + private String workTitle; + @ApiModelProperty("所属道路") + @TableField(exist = false) + private String workRoad; + @ApiModelProperty("作业状态") + @TableField(exist = false) + private String projectState; + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + @ApiModelProperty("负责人姓名") + @TableField(exist = false) + private String workPersonName; + @ApiModelProperty("负责人联系方式") + @TableField(exist = false) + private String workPersonPhoneNumber; + + + @Override + public String toString() { + return "BusAlarm{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + ", alarmType=" + alarmType + + ", alarmValue=" + alarmValue + + ", alarmStatus=" + alarmStatus + + ", alarmImage=" + alarmImage + + ", alarmContent=" + alarmContent + + ", alarmTime=" + alarmTime + + ", cancelTime=" + cancelTime + + ", alarmLng=" + alarmLng + + ", alarmLat=" + alarmLat + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java new file mode 100644 index 0000000..a0b7543 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + *

+ * 事件表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event") +@Data +@ApiModel("BusEvent") +public class BusEvent implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("事件ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件标题 + */ + @ApiModelProperty("事件名称") + @TableField("EVENT_TITLE") + private String eventTitle; + + /** + * 上报人员 + */ + @ApiModelProperty("上报人员") + @TableField("UPLOAD_NAME") + private String uploadName; + + /** + * 联系方式 + */ + @ApiModelProperty("联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 事件描述 + */ + @ApiModelProperty("事件描述") + @TableField("EVENT_DESCRIPTION") + private String eventDescription; + + @ApiModelProperty("经度") + @TableField("LNG") + private String lng; + + @ApiModelProperty("纬度") + @TableField("LAT") + private String lat; + + /** + * 事件上传时间 + */ + @ApiModelProperty("事件上传时间") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty("事件照片") + @TableField(exist = false) + private List imageList; + + + + @Override + public String toString() { + return "BusEvent{" + + "id=" + id + + ", eventTitle=" + eventTitle + + ", uploadName=" + uploadName + + ", phoneNumber=" + phoneNumber + + ", eventDescription=" + eventDescription + + ", lng=" + lng + + ", lat=" + lat + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java new file mode 100644 index 0000000..1e75245 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 事件图片表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event_image") +@Data +@ApiModel("BusEventImage") +public class BusEventImage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件ID + */ + @TableField("EVENT_ID") + private Long eventId; + + /** + * 报警图片 + */ + @TableField("IMAGE") + @ApiModelProperty("图片url") + private String image; + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java new file mode 100644 index 0000000..df89c70 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.core.base.json.DateDeserializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Device") +@TableName("br_device") +@Data +public class Device implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "设备ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty(value = "设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + /** + * 设备类型 + */ + @ApiModelProperty(value = "设备类型") + @TableField("DEVICE_TYPE") + private String deviceType; + + /** + * 设备批次 + */ + @ApiModelProperty(value = "设备批次") + @TableField("DEVICE_BATCH") + private String deviceBatch; + + /** + * 厂家 + */ + @ApiModelProperty(value = "厂家") + @TableField("MANUFACTURER") + private String manufacturer; + + /** + * 是否供电 + */ + @ApiModelProperty(value = "是否供电") + @TableField("IS_POWER_SUPPLY") + private String isPowerSupply; + + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间",dataType = "Date") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty(value = "设备类型名称") + @TableField(exist = false) + private String deviceTypeName; + + @ApiModelProperty(value = "是否供电名称") + @TableField(exist = false) + private String isPowerSupplyName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", deviceCode=" + deviceCode + + ", deviceType=" + deviceType + + ", deviceBatch=" + deviceBatch + + ", manufacturer=" + manufacturer + + ", isPowerSupply=" + isPowerSupply + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java new file mode 100644 index 0000000..5ee7015 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java @@ -0,0 +1,99 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 设备扩展信息表(安全树) + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Data +@TableName("br_device_ext") +public class DeviceExt implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 摄像头编号 + */ + @TableField("CAMERA_CODE") + private String cameraCode; + + /** + * 摄像头IP + */ + @TableField("CAMERA_IP") + private String cameraIp; + + /** + * 摄像头端口 + */ + @TableField("CAMERA_PORT") + private String cameraPort; + + /** + * 激甲编号 + */ + @TableField("GAS_CODE") + private String gasCode; + + /** + * 激甲IP + */ + @TableField("GAS_IP") + private String gasIp; + + /** + * 激甲端口 + */ + @TableField("GAS_PORT") + private String gasPort; + + /** + * 甲烷报警阈值 + */ + @TableField("GAS_THRESHOLD") + private String gasThreshold; + + @TableField(value = "HAT_LINING_CODE") + private String hatLiningCode; + + + @Override + public String toString() { + return "DeviceExt{" + + "id=" + id + + ", deviceId=" + deviceId + + ", cameraCode=" + cameraCode + + ", cameraIp=" + cameraIp + + ", cameraPort=" + cameraPort + + ", gasCode=" + gasCode + + ", gasIp=" + gasIp + + ", gasPort=" + gasPort + + ", gasThreshold=" + gasThreshold + + ", hatLiningCode=" + hatLiningCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java new file mode 100644 index 0000000..c4f3472 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java @@ -0,0 +1,62 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Data +@ApiModel("ProjectDevice") +@TableName("br_project_device") +public class ProjectDevice implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + @ApiModelProperty("设备ID(新增编辑时传)") + private Long deviceId; + + /** + * 设备编号 + */ + @TableField(exist = false) + @ApiModelProperty("设备编号(详情中展示,新增编辑不用传)") + private String deviceCode; + + @Override + public String toString() { + return "ProjectDevice{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java new file mode 100644 index 0000000..10b23c4 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java @@ -0,0 +1,104 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("ProjectWorker") +@TableName("br_project_worker") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ProjectWorker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 人员ID + */ + @ApiModelProperty("人员ID") + @TableField("WORKER_ID") + private Long workerId; + + /** + * 安全帽编号 + */ + @ApiModelProperty("安全帽编号") + @TableField("HAT_CODE") + private String hatCode; + + /** + * 背心编号 + */ + @ApiModelProperty("背心编号") + @TableField("VAST_CODE") + private String vastCode; + + /** + * 手环编号 + */ + @ApiModelProperty("手环编号") + @TableField("BRACELET_CODE") + private String braceletCode; + + @ApiModelProperty("人员姓名(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerName; + + @ApiModelProperty("人员部门ID(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptId; + + @ApiModelProperty("人员部门名称(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptName; + + @ApiModelProperty("人员联系方式(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerPhoneNumber; + + public ProjectWorker(Long projectId, Long workerId) { + this.projectId = projectId; + this.workerId = workerId; + } + + @Override + public String toString() { + return "ProjectWorker{" + + "id=" + id + + ", projectId=" + projectId + + ", workerId=" + workerId + + ", hatCode=" + hatCode + + ", vastCode=" + vastCode + + ", braceletCode=" + braceletCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java new file mode 100644 index 0000000..fa6f41d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 作业现场表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("WorkSiteInfo") +@TableName("br_work_site_info") +@Data +public class WorkSiteInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("作业现场ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业名称 + */ + @ApiModelProperty("作业名称") + @TableField("WORK_TITLE") + private String workTitle; + + /** + * 责任人 + */ + @ApiModelProperty("责任人(人员ID)") + @TableField("WORK_PERSON") + private Long workPerson; + + /** + * 作业描述 + */ + @ApiModelProperty("作业描述") + @TableField("WORK_SITE_DESC") + private String workSiteDesc; + + /** + * 作业状态 + */ + @ApiModelProperty("作业状态") + @TableField("PROJECT_STATE") + private String projectState; + + /** + * 所属道路 + */ + @ApiModelProperty("所属道路") + @TableField("WORK_ROAD") + private String workRoad; + + @TableField("IMAGE_URL") + private String imageUrl; + + @TableField("CREATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + @TableField("UPDATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("FINISH_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + @ApiModelProperty("负责人姓名(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonName; + + @ApiModelProperty("负责人联系方式(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonPhoneNumber; + + @ApiModelProperty("负责人所属部门ID(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private Long workPersonDeptId; + + @ApiModelProperty("负责人所属部门名称(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonDeptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + + @Override + public String toString() { + return "WorkSiteInfo{" + + "id=" + id + + ", workTitle=" + workTitle + + ", workPerson=" + workPerson + + ", workSiteDesc=" + workSiteDesc + + ", projectState=" + projectState + + ", imageUrl=" + imageUrl + + ", updateTime=" + updateTime + + ", workRoad=" + workRoad + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java new file mode 100644 index 0000000..28a4daa --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java @@ -0,0 +1,147 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Worker") +@TableName("br_worker") +@Data +public class Worker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "人员ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 姓名 + */ + @ApiModelProperty(value = "姓名") + @TableField("WORKER_NAME") + private String workerName; + + /** + * 性别 + */ + @ApiModelProperty(value = "性别") + @TableField("GENDER") + private String gender; + + /** + * 所属部门 + */ + @ApiModelProperty(value = "所属部门(人员管理)") + @TableField("DEPT_ID") + private Long deptId; + + /** + * 所属单位 + */ + @ApiModelProperty(value = "所属单位(入场申请中使用)") + @TableField("OWNER_SHIP") + private String ownerShip; + + /** + * 联系方式 + */ + @ApiModelProperty(value = "联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 证件号 + */ + @ApiModelProperty(value = "证件号") + @TableField("ID_CARD_NUMBER") + private String idCardNumber; + + /** + * 入场原因 + */ + @ApiModelProperty(value = "入场原因(入场申请中使用)") + @TableField("ENTER_REASON") + private String enterReason; + + /** + * 入场人脸照片 + */ + @ApiModelProperty(value = "人脸照片(照片路径)") + @TableField("WORKER_AVATAR") + private String workerAvatar; + + /** + * 申请入场时间 + */ + @ApiModelProperty(value = "注册时间/申请入场时间") + @TableField("CREATE_TIME") + private Date createTime; + + /** + * 人员类型 + */ + @ApiModelProperty(value = "人员类型(区分人员管理和入场申请)") + @TableField("WORKER_TYPE") + private String workerType; + + @ApiModelProperty(value = "性别名称") + @TableField(exist = false) + private String genderName; + + @ApiModelProperty(value = "部门名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @ApiModelProperty(value = "是否注册(0未注册;1已注册)",allowableValues = "0,1") + @TableField(exist = false) + private String isRegister; + + @Override + public String toString() { + return "Worker{" + + "id=" + id + + ", workerName=" + workerName + + ", gender=" + gender + + ", deptId=" + deptId + + ", ownerShip=" + ownerShip + + ", phoneNumber=" + phoneNumber + + ", idCardNumber=" + idCardNumber + + ", enterReason=" + enterReason + + ", workerAvatar=" + workerAvatar + + ", createTime=" + createTime + + ", workerType=" + workerType + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java new file mode 100644 index 0000000..9801742 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警记录表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusAlarmMapper extends BaseMapper { + + Page listPage(Page page,@Param("ew") QueryWrapper queryWrapper); + + void cancelAlarm(@Param("deviceId")Long deviceId,@Param("alarmType") String alarmType); + + List alarmCount(@Param("projectId")Long projectId, @Param("alarmStatus")String alarmStatus); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java new file mode 100644 index 0000000..9590b7d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件图片表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventImageMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java new file mode 100644 index 0000000..3c85edf --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java new file mode 100644 index 0000000..4ca9212 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 设备扩展信息表(安全树) Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface DeviceExtMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java new file mode 100644 index 0000000..444c0c5 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Mapper +public interface DeviceMapper extends BaseMapper { + + Page listDetailPage(Page page,@Param("ew") QueryWrapper ew); + + List selectProjectDevice(@Param("projectId") Long projectId); + + List selectHelmetList(@Param("deviceType")String deviceType); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java new file mode 100644 index 0000000..1d0c14e --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectDeviceMapper extends BaseMapper { + List selectDetailByProjectId(@Param("projectId") Long projectId); + + List selectDeviceLocationList(@Param("projectId") Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java new file mode 100644 index 0000000..58583d1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectWorkerMapper extends BaseMapper { + + List selectDetailByProjectId(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + + List selectWorkerLocationList(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java new file mode 100644 index 0000000..a4934d2 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +/** + *

+ * 作业现场表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkSiteInfoMapper extends BaseMapper { + + Page selectListPage(Page page,@Param("ew") QueryWrapper ew); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java new file mode 100644 index 0000000..258fb12 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkerMapper extends BaseMapper { + + + Page selectListPage(Page page, @Param("ew") QueryWrapper ew); + + List selectWorkerAvatars(@Param("projectId")Long projectId); + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml new file mode 100644 index 0000000..595088a --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml @@ -0,0 +1,58 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml new file mode 100644 index 0000000..fbc3db3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml new file mode 100644 index 0000000..627d573 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml new file mode 100644 index 0000000..5321d1c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml new file mode 100644 index 0000000..94262e1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml @@ -0,0 +1,97 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml new file mode 100644 index 0000000..c6d1c24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml @@ -0,0 +1,29 @@ + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml new file mode 100644 index 0000000..8d2de10 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml new file mode 100644 index 0000000..8f01326 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml @@ -0,0 +1,26 @@ + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml new file mode 100644 index 0000000..3e28b39 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml @@ -0,0 +1,56 @@ + + + + + + + + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java new file mode 100644 index 0000000..73d7799 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.dto; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "AlarmUpload",description = "报警上传") +@Data +public class AlarmUpload { + + @ApiModelProperty(value = "摄像头ip") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + @ApiModelProperty(value = "安全树甲烷设备ip") + private String gasIp; + @ApiModelProperty(value = "安全树甲烷设备端口") + private String gasPort; + @ApiModelProperty(value = "报警值") + private String alarmValue; + @ApiModelProperty(value = "报警时间") + private String alarmTime; + @ApiModelProperty(value = "报警类型") + private String alarmType; + @ApiModelProperty(value = "报警图片") + private String alarmImage; + @ApiModelProperty(value = "报警内容") + private String alarmContent; + + @Override + public String toString() { + return "AlarmUpload{" + + "cameraIp='" + cameraIp + '\'' + + ", cameraPort='" + cameraPort + '\'' + + ", gasIp='" + gasIp + '\'' + + ", gasPort='" + gasPort + '\'' + + ", alarmValue='" + alarmValue + '\'' + + ", alarmTime='" + alarmTime + '\'' + + ", alarmType='" + alarmType + '\'' + + ", alarmImage='" + (StrUtil.isNotEmpty(alarmImage) ? alarmImage.substring(0,50) : "null") + '\'' + + ", alarmContent='" + alarmContent + '\'' + + '}'; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java new file mode 100644 index 0000000..ea518d9 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.modular.system.entity.Device; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("DeviceDetailDTO") +@Data +public class DeviceDetailDTO extends Device { + + @ApiModelProperty(value = "摄像头编号") + private String cameraCode; + + @ApiModelProperty(value = "摄像头IP") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + + @ApiModelProperty(value = "激甲编号") + private String gasCode; + + @ApiModelProperty(value = "激甲IP") + private String gasIp; + + @ApiModelProperty(value = "激甲端口") + private String gasPort; + + @ApiModelProperty(value = "智能帽衬编号") + private String hatLiningCode; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java new file mode 100644 index 0000000..29378ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("WorkSiteDetailDTO") +public class WorkSiteDetailDTO extends WorkSiteInfo { + + @ApiModelProperty(value = "安全树列表",dataType = "ProjectDevice") + private List deviceList; + + @ApiModelProperty(value = "人员列表",dataType = "ProjectWorker") + private List workerList; + + + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java new file mode 100644 index 0000000..6fd7b24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java @@ -0,0 +1,68 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "WorkerLocationDTO",description = "人员位置列表(首页)") +@Data +public class WorkerLocationDTO { + + @ApiModelProperty("人员ID") + private Long workerId; + + @ApiModelProperty("人员姓名") + private String workerName; + + @ApiModelProperty("安全帽编号") + private String hatCode; + + @ApiModelProperty("安全帽ID") + private Long hatId; + + @ApiModelProperty("背心编号") + private String vastCode; + + @ApiModelProperty("手环编号") + private String braceletCode; + + @ApiModelProperty("位置") + private String location; + + @ApiModelProperty("时间") + private String time; + + @ApiModelProperty("经度") + private String lng; + + @ApiModelProperty("纬度") + private String lat; + + @ApiModelProperty("心率") + private String heartRate; + + @ApiModelProperty("血氧") + private String bloodOxygen; + + @ApiModelProperty("一氧化碳") + private String co; + + @ApiModelProperty("甲烷") + private String gas; + + @ApiModelProperty("硫化氢") + private String h2s; + + @ApiModelProperty("氧气") + private String o2; + + @ApiModelProperty("信号") + private String signal; + + @ApiModelProperty("电量") + private String cell; + + @ApiModelProperty("是否报警") + private boolean alarmFlag; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java new file mode 100644 index 0000000..efb4a23 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java @@ -0,0 +1,159 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 报警记录表 + *

+ * + * @author zyj + * @since 2023-05-16 + */ +@Data +@ApiModel("Alarm") +@TableName("br_bus_alarm") +public class BusAlarm implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @ApiModelProperty(value = "设备ID") + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 报警类型 + */ + @ApiModelProperty(value = "报警类型") + @TableField("ALARM_TYPE") + private String alarmType; + + /** + * 报警状态 + */ + @ApiModelProperty(value = "报警状态") + @TableField("ALARM_STATUS") + private String alarmStatus; + + /** + * 报警值 + */ + @ApiModelProperty(value = "报警值") + @TableField("ALARM_VALUE") + private String alarmValue; + + /** + * 报警图片 + */ + @ApiModelProperty(value = "报警图片") + @TableField("ALARM_IMAGE") + private String alarmImage; + + /** + * 报警内容 + */ + @ApiModelProperty(value = "报警内容") + @TableField("ALARM_CONTENT") + private String alarmContent; + + /** + * 报警时间 + */ + @ApiModelProperty(value = "报警时间") + @TableField("ALARM_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date alarmTime; + + /** + * 消警时间 + */ + @ApiModelProperty(value = "消警时间") + @TableField("CANCEL_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + /** + * 报警位置经度 + */ + @ApiModelProperty(value = "报警位置经度") + @TableField("ALARM_LNG") + private String alarmLng; + + /** + * 报警位置纬度 + */ + @ApiModelProperty(value = "报警位置纬度") + @TableField("ALARM_LAT") + private String alarmLat; + + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmStatusName; + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmTypeName; + @ApiModelProperty("作业名称") + @TableField(exist = false) + private String workTitle; + @ApiModelProperty("所属道路") + @TableField(exist = false) + private String workRoad; + @ApiModelProperty("作业状态") + @TableField(exist = false) + private String projectState; + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + @ApiModelProperty("负责人姓名") + @TableField(exist = false) + private String workPersonName; + @ApiModelProperty("负责人联系方式") + @TableField(exist = false) + private String workPersonPhoneNumber; + + + @Override + public String toString() { + return "BusAlarm{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + ", alarmType=" + alarmType + + ", alarmValue=" + alarmValue + + ", alarmStatus=" + alarmStatus + + ", alarmImage=" + alarmImage + + ", alarmContent=" + alarmContent + + ", alarmTime=" + alarmTime + + ", cancelTime=" + cancelTime + + ", alarmLng=" + alarmLng + + ", alarmLat=" + alarmLat + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java new file mode 100644 index 0000000..a0b7543 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + *

+ * 事件表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event") +@Data +@ApiModel("BusEvent") +public class BusEvent implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("事件ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件标题 + */ + @ApiModelProperty("事件名称") + @TableField("EVENT_TITLE") + private String eventTitle; + + /** + * 上报人员 + */ + @ApiModelProperty("上报人员") + @TableField("UPLOAD_NAME") + private String uploadName; + + /** + * 联系方式 + */ + @ApiModelProperty("联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 事件描述 + */ + @ApiModelProperty("事件描述") + @TableField("EVENT_DESCRIPTION") + private String eventDescription; + + @ApiModelProperty("经度") + @TableField("LNG") + private String lng; + + @ApiModelProperty("纬度") + @TableField("LAT") + private String lat; + + /** + * 事件上传时间 + */ + @ApiModelProperty("事件上传时间") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty("事件照片") + @TableField(exist = false) + private List imageList; + + + + @Override + public String toString() { + return "BusEvent{" + + "id=" + id + + ", eventTitle=" + eventTitle + + ", uploadName=" + uploadName + + ", phoneNumber=" + phoneNumber + + ", eventDescription=" + eventDescription + + ", lng=" + lng + + ", lat=" + lat + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java new file mode 100644 index 0000000..1e75245 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 事件图片表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event_image") +@Data +@ApiModel("BusEventImage") +public class BusEventImage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件ID + */ + @TableField("EVENT_ID") + private Long eventId; + + /** + * 报警图片 + */ + @TableField("IMAGE") + @ApiModelProperty("图片url") + private String image; + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java new file mode 100644 index 0000000..df89c70 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.core.base.json.DateDeserializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Device") +@TableName("br_device") +@Data +public class Device implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "设备ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty(value = "设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + /** + * 设备类型 + */ + @ApiModelProperty(value = "设备类型") + @TableField("DEVICE_TYPE") + private String deviceType; + + /** + * 设备批次 + */ + @ApiModelProperty(value = "设备批次") + @TableField("DEVICE_BATCH") + private String deviceBatch; + + /** + * 厂家 + */ + @ApiModelProperty(value = "厂家") + @TableField("MANUFACTURER") + private String manufacturer; + + /** + * 是否供电 + */ + @ApiModelProperty(value = "是否供电") + @TableField("IS_POWER_SUPPLY") + private String isPowerSupply; + + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间",dataType = "Date") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty(value = "设备类型名称") + @TableField(exist = false) + private String deviceTypeName; + + @ApiModelProperty(value = "是否供电名称") + @TableField(exist = false) + private String isPowerSupplyName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", deviceCode=" + deviceCode + + ", deviceType=" + deviceType + + ", deviceBatch=" + deviceBatch + + ", manufacturer=" + manufacturer + + ", isPowerSupply=" + isPowerSupply + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java new file mode 100644 index 0000000..5ee7015 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java @@ -0,0 +1,99 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 设备扩展信息表(安全树) + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Data +@TableName("br_device_ext") +public class DeviceExt implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 摄像头编号 + */ + @TableField("CAMERA_CODE") + private String cameraCode; + + /** + * 摄像头IP + */ + @TableField("CAMERA_IP") + private String cameraIp; + + /** + * 摄像头端口 + */ + @TableField("CAMERA_PORT") + private String cameraPort; + + /** + * 激甲编号 + */ + @TableField("GAS_CODE") + private String gasCode; + + /** + * 激甲IP + */ + @TableField("GAS_IP") + private String gasIp; + + /** + * 激甲端口 + */ + @TableField("GAS_PORT") + private String gasPort; + + /** + * 甲烷报警阈值 + */ + @TableField("GAS_THRESHOLD") + private String gasThreshold; + + @TableField(value = "HAT_LINING_CODE") + private String hatLiningCode; + + + @Override + public String toString() { + return "DeviceExt{" + + "id=" + id + + ", deviceId=" + deviceId + + ", cameraCode=" + cameraCode + + ", cameraIp=" + cameraIp + + ", cameraPort=" + cameraPort + + ", gasCode=" + gasCode + + ", gasIp=" + gasIp + + ", gasPort=" + gasPort + + ", gasThreshold=" + gasThreshold + + ", hatLiningCode=" + hatLiningCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java new file mode 100644 index 0000000..c4f3472 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java @@ -0,0 +1,62 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Data +@ApiModel("ProjectDevice") +@TableName("br_project_device") +public class ProjectDevice implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + @ApiModelProperty("设备ID(新增编辑时传)") + private Long deviceId; + + /** + * 设备编号 + */ + @TableField(exist = false) + @ApiModelProperty("设备编号(详情中展示,新增编辑不用传)") + private String deviceCode; + + @Override + public String toString() { + return "ProjectDevice{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java new file mode 100644 index 0000000..10b23c4 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java @@ -0,0 +1,104 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("ProjectWorker") +@TableName("br_project_worker") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ProjectWorker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 人员ID + */ + @ApiModelProperty("人员ID") + @TableField("WORKER_ID") + private Long workerId; + + /** + * 安全帽编号 + */ + @ApiModelProperty("安全帽编号") + @TableField("HAT_CODE") + private String hatCode; + + /** + * 背心编号 + */ + @ApiModelProperty("背心编号") + @TableField("VAST_CODE") + private String vastCode; + + /** + * 手环编号 + */ + @ApiModelProperty("手环编号") + @TableField("BRACELET_CODE") + private String braceletCode; + + @ApiModelProperty("人员姓名(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerName; + + @ApiModelProperty("人员部门ID(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptId; + + @ApiModelProperty("人员部门名称(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptName; + + @ApiModelProperty("人员联系方式(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerPhoneNumber; + + public ProjectWorker(Long projectId, Long workerId) { + this.projectId = projectId; + this.workerId = workerId; + } + + @Override + public String toString() { + return "ProjectWorker{" + + "id=" + id + + ", projectId=" + projectId + + ", workerId=" + workerId + + ", hatCode=" + hatCode + + ", vastCode=" + vastCode + + ", braceletCode=" + braceletCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java new file mode 100644 index 0000000..fa6f41d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 作业现场表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("WorkSiteInfo") +@TableName("br_work_site_info") +@Data +public class WorkSiteInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("作业现场ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业名称 + */ + @ApiModelProperty("作业名称") + @TableField("WORK_TITLE") + private String workTitle; + + /** + * 责任人 + */ + @ApiModelProperty("责任人(人员ID)") + @TableField("WORK_PERSON") + private Long workPerson; + + /** + * 作业描述 + */ + @ApiModelProperty("作业描述") + @TableField("WORK_SITE_DESC") + private String workSiteDesc; + + /** + * 作业状态 + */ + @ApiModelProperty("作业状态") + @TableField("PROJECT_STATE") + private String projectState; + + /** + * 所属道路 + */ + @ApiModelProperty("所属道路") + @TableField("WORK_ROAD") + private String workRoad; + + @TableField("IMAGE_URL") + private String imageUrl; + + @TableField("CREATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + @TableField("UPDATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("FINISH_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + @ApiModelProperty("负责人姓名(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonName; + + @ApiModelProperty("负责人联系方式(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonPhoneNumber; + + @ApiModelProperty("负责人所属部门ID(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private Long workPersonDeptId; + + @ApiModelProperty("负责人所属部门名称(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonDeptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + + @Override + public String toString() { + return "WorkSiteInfo{" + + "id=" + id + + ", workTitle=" + workTitle + + ", workPerson=" + workPerson + + ", workSiteDesc=" + workSiteDesc + + ", projectState=" + projectState + + ", imageUrl=" + imageUrl + + ", updateTime=" + updateTime + + ", workRoad=" + workRoad + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java new file mode 100644 index 0000000..28a4daa --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java @@ -0,0 +1,147 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Worker") +@TableName("br_worker") +@Data +public class Worker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "人员ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 姓名 + */ + @ApiModelProperty(value = "姓名") + @TableField("WORKER_NAME") + private String workerName; + + /** + * 性别 + */ + @ApiModelProperty(value = "性别") + @TableField("GENDER") + private String gender; + + /** + * 所属部门 + */ + @ApiModelProperty(value = "所属部门(人员管理)") + @TableField("DEPT_ID") + private Long deptId; + + /** + * 所属单位 + */ + @ApiModelProperty(value = "所属单位(入场申请中使用)") + @TableField("OWNER_SHIP") + private String ownerShip; + + /** + * 联系方式 + */ + @ApiModelProperty(value = "联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 证件号 + */ + @ApiModelProperty(value = "证件号") + @TableField("ID_CARD_NUMBER") + private String idCardNumber; + + /** + * 入场原因 + */ + @ApiModelProperty(value = "入场原因(入场申请中使用)") + @TableField("ENTER_REASON") + private String enterReason; + + /** + * 入场人脸照片 + */ + @ApiModelProperty(value = "人脸照片(照片路径)") + @TableField("WORKER_AVATAR") + private String workerAvatar; + + /** + * 申请入场时间 + */ + @ApiModelProperty(value = "注册时间/申请入场时间") + @TableField("CREATE_TIME") + private Date createTime; + + /** + * 人员类型 + */ + @ApiModelProperty(value = "人员类型(区分人员管理和入场申请)") + @TableField("WORKER_TYPE") + private String workerType; + + @ApiModelProperty(value = "性别名称") + @TableField(exist = false) + private String genderName; + + @ApiModelProperty(value = "部门名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @ApiModelProperty(value = "是否注册(0未注册;1已注册)",allowableValues = "0,1") + @TableField(exist = false) + private String isRegister; + + @Override + public String toString() { + return "Worker{" + + "id=" + id + + ", workerName=" + workerName + + ", gender=" + gender + + ", deptId=" + deptId + + ", ownerShip=" + ownerShip + + ", phoneNumber=" + phoneNumber + + ", idCardNumber=" + idCardNumber + + ", enterReason=" + enterReason + + ", workerAvatar=" + workerAvatar + + ", createTime=" + createTime + + ", workerType=" + workerType + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java new file mode 100644 index 0000000..9801742 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警记录表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusAlarmMapper extends BaseMapper { + + Page listPage(Page page,@Param("ew") QueryWrapper queryWrapper); + + void cancelAlarm(@Param("deviceId")Long deviceId,@Param("alarmType") String alarmType); + + List alarmCount(@Param("projectId")Long projectId, @Param("alarmStatus")String alarmStatus); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java new file mode 100644 index 0000000..9590b7d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件图片表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventImageMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java new file mode 100644 index 0000000..3c85edf --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java new file mode 100644 index 0000000..4ca9212 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 设备扩展信息表(安全树) Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface DeviceExtMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java new file mode 100644 index 0000000..444c0c5 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Mapper +public interface DeviceMapper extends BaseMapper { + + Page listDetailPage(Page page,@Param("ew") QueryWrapper ew); + + List selectProjectDevice(@Param("projectId") Long projectId); + + List selectHelmetList(@Param("deviceType")String deviceType); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java new file mode 100644 index 0000000..1d0c14e --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectDeviceMapper extends BaseMapper { + List selectDetailByProjectId(@Param("projectId") Long projectId); + + List selectDeviceLocationList(@Param("projectId") Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java new file mode 100644 index 0000000..58583d1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectWorkerMapper extends BaseMapper { + + List selectDetailByProjectId(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + + List selectWorkerLocationList(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java new file mode 100644 index 0000000..a4934d2 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +/** + *

+ * 作业现场表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkSiteInfoMapper extends BaseMapper { + + Page selectListPage(Page page,@Param("ew") QueryWrapper ew); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java new file mode 100644 index 0000000..258fb12 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkerMapper extends BaseMapper { + + + Page selectListPage(Page page, @Param("ew") QueryWrapper ew); + + List selectWorkerAvatars(@Param("projectId")Long projectId); + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml new file mode 100644 index 0000000..595088a --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml @@ -0,0 +1,58 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml new file mode 100644 index 0000000..fbc3db3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml new file mode 100644 index 0000000..627d573 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml new file mode 100644 index 0000000..5321d1c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml new file mode 100644 index 0000000..94262e1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml @@ -0,0 +1,97 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml new file mode 100644 index 0000000..c6d1c24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml @@ -0,0 +1,29 @@ + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml new file mode 100644 index 0000000..8d2de10 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml new file mode 100644 index 0000000..8f01326 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml @@ -0,0 +1,26 @@ + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml new file mode 100644 index 0000000..3e28b39 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml @@ -0,0 +1,56 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java new file mode 100644 index 0000000..f63c19c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 报警记录表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusAlarmService extends IService { + + boolean alarmUpload(AlarmUpload alarmUpload); + + Page listPage(Page page,QueryWrapper queryWrapper); + + List alarmCount(Long projectId,String alarmStatus); + +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java new file mode 100644 index 0000000..73d7799 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.dto; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "AlarmUpload",description = "报警上传") +@Data +public class AlarmUpload { + + @ApiModelProperty(value = "摄像头ip") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + @ApiModelProperty(value = "安全树甲烷设备ip") + private String gasIp; + @ApiModelProperty(value = "安全树甲烷设备端口") + private String gasPort; + @ApiModelProperty(value = "报警值") + private String alarmValue; + @ApiModelProperty(value = "报警时间") + private String alarmTime; + @ApiModelProperty(value = "报警类型") + private String alarmType; + @ApiModelProperty(value = "报警图片") + private String alarmImage; + @ApiModelProperty(value = "报警内容") + private String alarmContent; + + @Override + public String toString() { + return "AlarmUpload{" + + "cameraIp='" + cameraIp + '\'' + + ", cameraPort='" + cameraPort + '\'' + + ", gasIp='" + gasIp + '\'' + + ", gasPort='" + gasPort + '\'' + + ", alarmValue='" + alarmValue + '\'' + + ", alarmTime='" + alarmTime + '\'' + + ", alarmType='" + alarmType + '\'' + + ", alarmImage='" + (StrUtil.isNotEmpty(alarmImage) ? alarmImage.substring(0,50) : "null") + '\'' + + ", alarmContent='" + alarmContent + '\'' + + '}'; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java new file mode 100644 index 0000000..ea518d9 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.modular.system.entity.Device; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("DeviceDetailDTO") +@Data +public class DeviceDetailDTO extends Device { + + @ApiModelProperty(value = "摄像头编号") + private String cameraCode; + + @ApiModelProperty(value = "摄像头IP") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + + @ApiModelProperty(value = "激甲编号") + private String gasCode; + + @ApiModelProperty(value = "激甲IP") + private String gasIp; + + @ApiModelProperty(value = "激甲端口") + private String gasPort; + + @ApiModelProperty(value = "智能帽衬编号") + private String hatLiningCode; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java new file mode 100644 index 0000000..29378ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("WorkSiteDetailDTO") +public class WorkSiteDetailDTO extends WorkSiteInfo { + + @ApiModelProperty(value = "安全树列表",dataType = "ProjectDevice") + private List deviceList; + + @ApiModelProperty(value = "人员列表",dataType = "ProjectWorker") + private List workerList; + + + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java new file mode 100644 index 0000000..6fd7b24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java @@ -0,0 +1,68 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "WorkerLocationDTO",description = "人员位置列表(首页)") +@Data +public class WorkerLocationDTO { + + @ApiModelProperty("人员ID") + private Long workerId; + + @ApiModelProperty("人员姓名") + private String workerName; + + @ApiModelProperty("安全帽编号") + private String hatCode; + + @ApiModelProperty("安全帽ID") + private Long hatId; + + @ApiModelProperty("背心编号") + private String vastCode; + + @ApiModelProperty("手环编号") + private String braceletCode; + + @ApiModelProperty("位置") + private String location; + + @ApiModelProperty("时间") + private String time; + + @ApiModelProperty("经度") + private String lng; + + @ApiModelProperty("纬度") + private String lat; + + @ApiModelProperty("心率") + private String heartRate; + + @ApiModelProperty("血氧") + private String bloodOxygen; + + @ApiModelProperty("一氧化碳") + private String co; + + @ApiModelProperty("甲烷") + private String gas; + + @ApiModelProperty("硫化氢") + private String h2s; + + @ApiModelProperty("氧气") + private String o2; + + @ApiModelProperty("信号") + private String signal; + + @ApiModelProperty("电量") + private String cell; + + @ApiModelProperty("是否报警") + private boolean alarmFlag; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java new file mode 100644 index 0000000..efb4a23 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java @@ -0,0 +1,159 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 报警记录表 + *

+ * + * @author zyj + * @since 2023-05-16 + */ +@Data +@ApiModel("Alarm") +@TableName("br_bus_alarm") +public class BusAlarm implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @ApiModelProperty(value = "设备ID") + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 报警类型 + */ + @ApiModelProperty(value = "报警类型") + @TableField("ALARM_TYPE") + private String alarmType; + + /** + * 报警状态 + */ + @ApiModelProperty(value = "报警状态") + @TableField("ALARM_STATUS") + private String alarmStatus; + + /** + * 报警值 + */ + @ApiModelProperty(value = "报警值") + @TableField("ALARM_VALUE") + private String alarmValue; + + /** + * 报警图片 + */ + @ApiModelProperty(value = "报警图片") + @TableField("ALARM_IMAGE") + private String alarmImage; + + /** + * 报警内容 + */ + @ApiModelProperty(value = "报警内容") + @TableField("ALARM_CONTENT") + private String alarmContent; + + /** + * 报警时间 + */ + @ApiModelProperty(value = "报警时间") + @TableField("ALARM_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date alarmTime; + + /** + * 消警时间 + */ + @ApiModelProperty(value = "消警时间") + @TableField("CANCEL_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + /** + * 报警位置经度 + */ + @ApiModelProperty(value = "报警位置经度") + @TableField("ALARM_LNG") + private String alarmLng; + + /** + * 报警位置纬度 + */ + @ApiModelProperty(value = "报警位置纬度") + @TableField("ALARM_LAT") + private String alarmLat; + + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmStatusName; + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmTypeName; + @ApiModelProperty("作业名称") + @TableField(exist = false) + private String workTitle; + @ApiModelProperty("所属道路") + @TableField(exist = false) + private String workRoad; + @ApiModelProperty("作业状态") + @TableField(exist = false) + private String projectState; + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + @ApiModelProperty("负责人姓名") + @TableField(exist = false) + private String workPersonName; + @ApiModelProperty("负责人联系方式") + @TableField(exist = false) + private String workPersonPhoneNumber; + + + @Override + public String toString() { + return "BusAlarm{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + ", alarmType=" + alarmType + + ", alarmValue=" + alarmValue + + ", alarmStatus=" + alarmStatus + + ", alarmImage=" + alarmImage + + ", alarmContent=" + alarmContent + + ", alarmTime=" + alarmTime + + ", cancelTime=" + cancelTime + + ", alarmLng=" + alarmLng + + ", alarmLat=" + alarmLat + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java new file mode 100644 index 0000000..a0b7543 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + *

+ * 事件表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event") +@Data +@ApiModel("BusEvent") +public class BusEvent implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("事件ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件标题 + */ + @ApiModelProperty("事件名称") + @TableField("EVENT_TITLE") + private String eventTitle; + + /** + * 上报人员 + */ + @ApiModelProperty("上报人员") + @TableField("UPLOAD_NAME") + private String uploadName; + + /** + * 联系方式 + */ + @ApiModelProperty("联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 事件描述 + */ + @ApiModelProperty("事件描述") + @TableField("EVENT_DESCRIPTION") + private String eventDescription; + + @ApiModelProperty("经度") + @TableField("LNG") + private String lng; + + @ApiModelProperty("纬度") + @TableField("LAT") + private String lat; + + /** + * 事件上传时间 + */ + @ApiModelProperty("事件上传时间") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty("事件照片") + @TableField(exist = false) + private List imageList; + + + + @Override + public String toString() { + return "BusEvent{" + + "id=" + id + + ", eventTitle=" + eventTitle + + ", uploadName=" + uploadName + + ", phoneNumber=" + phoneNumber + + ", eventDescription=" + eventDescription + + ", lng=" + lng + + ", lat=" + lat + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java new file mode 100644 index 0000000..1e75245 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 事件图片表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event_image") +@Data +@ApiModel("BusEventImage") +public class BusEventImage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件ID + */ + @TableField("EVENT_ID") + private Long eventId; + + /** + * 报警图片 + */ + @TableField("IMAGE") + @ApiModelProperty("图片url") + private String image; + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java new file mode 100644 index 0000000..df89c70 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.core.base.json.DateDeserializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Device") +@TableName("br_device") +@Data +public class Device implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "设备ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty(value = "设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + /** + * 设备类型 + */ + @ApiModelProperty(value = "设备类型") + @TableField("DEVICE_TYPE") + private String deviceType; + + /** + * 设备批次 + */ + @ApiModelProperty(value = "设备批次") + @TableField("DEVICE_BATCH") + private String deviceBatch; + + /** + * 厂家 + */ + @ApiModelProperty(value = "厂家") + @TableField("MANUFACTURER") + private String manufacturer; + + /** + * 是否供电 + */ + @ApiModelProperty(value = "是否供电") + @TableField("IS_POWER_SUPPLY") + private String isPowerSupply; + + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间",dataType = "Date") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty(value = "设备类型名称") + @TableField(exist = false) + private String deviceTypeName; + + @ApiModelProperty(value = "是否供电名称") + @TableField(exist = false) + private String isPowerSupplyName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", deviceCode=" + deviceCode + + ", deviceType=" + deviceType + + ", deviceBatch=" + deviceBatch + + ", manufacturer=" + manufacturer + + ", isPowerSupply=" + isPowerSupply + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java new file mode 100644 index 0000000..5ee7015 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java @@ -0,0 +1,99 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 设备扩展信息表(安全树) + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Data +@TableName("br_device_ext") +public class DeviceExt implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 摄像头编号 + */ + @TableField("CAMERA_CODE") + private String cameraCode; + + /** + * 摄像头IP + */ + @TableField("CAMERA_IP") + private String cameraIp; + + /** + * 摄像头端口 + */ + @TableField("CAMERA_PORT") + private String cameraPort; + + /** + * 激甲编号 + */ + @TableField("GAS_CODE") + private String gasCode; + + /** + * 激甲IP + */ + @TableField("GAS_IP") + private String gasIp; + + /** + * 激甲端口 + */ + @TableField("GAS_PORT") + private String gasPort; + + /** + * 甲烷报警阈值 + */ + @TableField("GAS_THRESHOLD") + private String gasThreshold; + + @TableField(value = "HAT_LINING_CODE") + private String hatLiningCode; + + + @Override + public String toString() { + return "DeviceExt{" + + "id=" + id + + ", deviceId=" + deviceId + + ", cameraCode=" + cameraCode + + ", cameraIp=" + cameraIp + + ", cameraPort=" + cameraPort + + ", gasCode=" + gasCode + + ", gasIp=" + gasIp + + ", gasPort=" + gasPort + + ", gasThreshold=" + gasThreshold + + ", hatLiningCode=" + hatLiningCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java new file mode 100644 index 0000000..c4f3472 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java @@ -0,0 +1,62 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Data +@ApiModel("ProjectDevice") +@TableName("br_project_device") +public class ProjectDevice implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + @ApiModelProperty("设备ID(新增编辑时传)") + private Long deviceId; + + /** + * 设备编号 + */ + @TableField(exist = false) + @ApiModelProperty("设备编号(详情中展示,新增编辑不用传)") + private String deviceCode; + + @Override + public String toString() { + return "ProjectDevice{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java new file mode 100644 index 0000000..10b23c4 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java @@ -0,0 +1,104 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("ProjectWorker") +@TableName("br_project_worker") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ProjectWorker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 人员ID + */ + @ApiModelProperty("人员ID") + @TableField("WORKER_ID") + private Long workerId; + + /** + * 安全帽编号 + */ + @ApiModelProperty("安全帽编号") + @TableField("HAT_CODE") + private String hatCode; + + /** + * 背心编号 + */ + @ApiModelProperty("背心编号") + @TableField("VAST_CODE") + private String vastCode; + + /** + * 手环编号 + */ + @ApiModelProperty("手环编号") + @TableField("BRACELET_CODE") + private String braceletCode; + + @ApiModelProperty("人员姓名(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerName; + + @ApiModelProperty("人员部门ID(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptId; + + @ApiModelProperty("人员部门名称(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptName; + + @ApiModelProperty("人员联系方式(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerPhoneNumber; + + public ProjectWorker(Long projectId, Long workerId) { + this.projectId = projectId; + this.workerId = workerId; + } + + @Override + public String toString() { + return "ProjectWorker{" + + "id=" + id + + ", projectId=" + projectId + + ", workerId=" + workerId + + ", hatCode=" + hatCode + + ", vastCode=" + vastCode + + ", braceletCode=" + braceletCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java new file mode 100644 index 0000000..fa6f41d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 作业现场表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("WorkSiteInfo") +@TableName("br_work_site_info") +@Data +public class WorkSiteInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("作业现场ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业名称 + */ + @ApiModelProperty("作业名称") + @TableField("WORK_TITLE") + private String workTitle; + + /** + * 责任人 + */ + @ApiModelProperty("责任人(人员ID)") + @TableField("WORK_PERSON") + private Long workPerson; + + /** + * 作业描述 + */ + @ApiModelProperty("作业描述") + @TableField("WORK_SITE_DESC") + private String workSiteDesc; + + /** + * 作业状态 + */ + @ApiModelProperty("作业状态") + @TableField("PROJECT_STATE") + private String projectState; + + /** + * 所属道路 + */ + @ApiModelProperty("所属道路") + @TableField("WORK_ROAD") + private String workRoad; + + @TableField("IMAGE_URL") + private String imageUrl; + + @TableField("CREATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + @TableField("UPDATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("FINISH_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + @ApiModelProperty("负责人姓名(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonName; + + @ApiModelProperty("负责人联系方式(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonPhoneNumber; + + @ApiModelProperty("负责人所属部门ID(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private Long workPersonDeptId; + + @ApiModelProperty("负责人所属部门名称(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonDeptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + + @Override + public String toString() { + return "WorkSiteInfo{" + + "id=" + id + + ", workTitle=" + workTitle + + ", workPerson=" + workPerson + + ", workSiteDesc=" + workSiteDesc + + ", projectState=" + projectState + + ", imageUrl=" + imageUrl + + ", updateTime=" + updateTime + + ", workRoad=" + workRoad + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java new file mode 100644 index 0000000..28a4daa --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java @@ -0,0 +1,147 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Worker") +@TableName("br_worker") +@Data +public class Worker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "人员ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 姓名 + */ + @ApiModelProperty(value = "姓名") + @TableField("WORKER_NAME") + private String workerName; + + /** + * 性别 + */ + @ApiModelProperty(value = "性别") + @TableField("GENDER") + private String gender; + + /** + * 所属部门 + */ + @ApiModelProperty(value = "所属部门(人员管理)") + @TableField("DEPT_ID") + private Long deptId; + + /** + * 所属单位 + */ + @ApiModelProperty(value = "所属单位(入场申请中使用)") + @TableField("OWNER_SHIP") + private String ownerShip; + + /** + * 联系方式 + */ + @ApiModelProperty(value = "联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 证件号 + */ + @ApiModelProperty(value = "证件号") + @TableField("ID_CARD_NUMBER") + private String idCardNumber; + + /** + * 入场原因 + */ + @ApiModelProperty(value = "入场原因(入场申请中使用)") + @TableField("ENTER_REASON") + private String enterReason; + + /** + * 入场人脸照片 + */ + @ApiModelProperty(value = "人脸照片(照片路径)") + @TableField("WORKER_AVATAR") + private String workerAvatar; + + /** + * 申请入场时间 + */ + @ApiModelProperty(value = "注册时间/申请入场时间") + @TableField("CREATE_TIME") + private Date createTime; + + /** + * 人员类型 + */ + @ApiModelProperty(value = "人员类型(区分人员管理和入场申请)") + @TableField("WORKER_TYPE") + private String workerType; + + @ApiModelProperty(value = "性别名称") + @TableField(exist = false) + private String genderName; + + @ApiModelProperty(value = "部门名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @ApiModelProperty(value = "是否注册(0未注册;1已注册)",allowableValues = "0,1") + @TableField(exist = false) + private String isRegister; + + @Override + public String toString() { + return "Worker{" + + "id=" + id + + ", workerName=" + workerName + + ", gender=" + gender + + ", deptId=" + deptId + + ", ownerShip=" + ownerShip + + ", phoneNumber=" + phoneNumber + + ", idCardNumber=" + idCardNumber + + ", enterReason=" + enterReason + + ", workerAvatar=" + workerAvatar + + ", createTime=" + createTime + + ", workerType=" + workerType + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java new file mode 100644 index 0000000..9801742 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警记录表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusAlarmMapper extends BaseMapper { + + Page listPage(Page page,@Param("ew") QueryWrapper queryWrapper); + + void cancelAlarm(@Param("deviceId")Long deviceId,@Param("alarmType") String alarmType); + + List alarmCount(@Param("projectId")Long projectId, @Param("alarmStatus")String alarmStatus); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java new file mode 100644 index 0000000..9590b7d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件图片表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventImageMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java new file mode 100644 index 0000000..3c85edf --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java new file mode 100644 index 0000000..4ca9212 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 设备扩展信息表(安全树) Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface DeviceExtMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java new file mode 100644 index 0000000..444c0c5 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Mapper +public interface DeviceMapper extends BaseMapper { + + Page listDetailPage(Page page,@Param("ew") QueryWrapper ew); + + List selectProjectDevice(@Param("projectId") Long projectId); + + List selectHelmetList(@Param("deviceType")String deviceType); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java new file mode 100644 index 0000000..1d0c14e --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectDeviceMapper extends BaseMapper { + List selectDetailByProjectId(@Param("projectId") Long projectId); + + List selectDeviceLocationList(@Param("projectId") Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java new file mode 100644 index 0000000..58583d1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectWorkerMapper extends BaseMapper { + + List selectDetailByProjectId(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + + List selectWorkerLocationList(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java new file mode 100644 index 0000000..a4934d2 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +/** + *

+ * 作业现场表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkSiteInfoMapper extends BaseMapper { + + Page selectListPage(Page page,@Param("ew") QueryWrapper ew); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java new file mode 100644 index 0000000..258fb12 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkerMapper extends BaseMapper { + + + Page selectListPage(Page page, @Param("ew") QueryWrapper ew); + + List selectWorkerAvatars(@Param("projectId")Long projectId); + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml new file mode 100644 index 0000000..595088a --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml @@ -0,0 +1,58 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml new file mode 100644 index 0000000..fbc3db3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml new file mode 100644 index 0000000..627d573 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml new file mode 100644 index 0000000..5321d1c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml new file mode 100644 index 0000000..94262e1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml @@ -0,0 +1,97 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml new file mode 100644 index 0000000..c6d1c24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml @@ -0,0 +1,29 @@ + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml new file mode 100644 index 0000000..8d2de10 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml new file mode 100644 index 0000000..8f01326 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml @@ -0,0 +1,26 @@ + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml new file mode 100644 index 0000000..3e28b39 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml @@ -0,0 +1,56 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java new file mode 100644 index 0000000..f63c19c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 报警记录表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusAlarmService extends IService { + + boolean alarmUpload(AlarmUpload alarmUpload); + + Page listPage(Page page,QueryWrapper queryWrapper); + + List alarmCount(Long projectId,String alarmStatus); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java new file mode 100644 index 0000000..b1187ed --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 事件图片表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusEventImageService extends IService { + + boolean saveBusEventImages(Long eventId, List imageList); + +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java new file mode 100644 index 0000000..73d7799 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.dto; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "AlarmUpload",description = "报警上传") +@Data +public class AlarmUpload { + + @ApiModelProperty(value = "摄像头ip") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + @ApiModelProperty(value = "安全树甲烷设备ip") + private String gasIp; + @ApiModelProperty(value = "安全树甲烷设备端口") + private String gasPort; + @ApiModelProperty(value = "报警值") + private String alarmValue; + @ApiModelProperty(value = "报警时间") + private String alarmTime; + @ApiModelProperty(value = "报警类型") + private String alarmType; + @ApiModelProperty(value = "报警图片") + private String alarmImage; + @ApiModelProperty(value = "报警内容") + private String alarmContent; + + @Override + public String toString() { + return "AlarmUpload{" + + "cameraIp='" + cameraIp + '\'' + + ", cameraPort='" + cameraPort + '\'' + + ", gasIp='" + gasIp + '\'' + + ", gasPort='" + gasPort + '\'' + + ", alarmValue='" + alarmValue + '\'' + + ", alarmTime='" + alarmTime + '\'' + + ", alarmType='" + alarmType + '\'' + + ", alarmImage='" + (StrUtil.isNotEmpty(alarmImage) ? alarmImage.substring(0,50) : "null") + '\'' + + ", alarmContent='" + alarmContent + '\'' + + '}'; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java new file mode 100644 index 0000000..ea518d9 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.modular.system.entity.Device; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("DeviceDetailDTO") +@Data +public class DeviceDetailDTO extends Device { + + @ApiModelProperty(value = "摄像头编号") + private String cameraCode; + + @ApiModelProperty(value = "摄像头IP") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + + @ApiModelProperty(value = "激甲编号") + private String gasCode; + + @ApiModelProperty(value = "激甲IP") + private String gasIp; + + @ApiModelProperty(value = "激甲端口") + private String gasPort; + + @ApiModelProperty(value = "智能帽衬编号") + private String hatLiningCode; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java new file mode 100644 index 0000000..29378ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("WorkSiteDetailDTO") +public class WorkSiteDetailDTO extends WorkSiteInfo { + + @ApiModelProperty(value = "安全树列表",dataType = "ProjectDevice") + private List deviceList; + + @ApiModelProperty(value = "人员列表",dataType = "ProjectWorker") + private List workerList; + + + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java new file mode 100644 index 0000000..6fd7b24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java @@ -0,0 +1,68 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "WorkerLocationDTO",description = "人员位置列表(首页)") +@Data +public class WorkerLocationDTO { + + @ApiModelProperty("人员ID") + private Long workerId; + + @ApiModelProperty("人员姓名") + private String workerName; + + @ApiModelProperty("安全帽编号") + private String hatCode; + + @ApiModelProperty("安全帽ID") + private Long hatId; + + @ApiModelProperty("背心编号") + private String vastCode; + + @ApiModelProperty("手环编号") + private String braceletCode; + + @ApiModelProperty("位置") + private String location; + + @ApiModelProperty("时间") + private String time; + + @ApiModelProperty("经度") + private String lng; + + @ApiModelProperty("纬度") + private String lat; + + @ApiModelProperty("心率") + private String heartRate; + + @ApiModelProperty("血氧") + private String bloodOxygen; + + @ApiModelProperty("一氧化碳") + private String co; + + @ApiModelProperty("甲烷") + private String gas; + + @ApiModelProperty("硫化氢") + private String h2s; + + @ApiModelProperty("氧气") + private String o2; + + @ApiModelProperty("信号") + private String signal; + + @ApiModelProperty("电量") + private String cell; + + @ApiModelProperty("是否报警") + private boolean alarmFlag; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java new file mode 100644 index 0000000..efb4a23 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java @@ -0,0 +1,159 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 报警记录表 + *

+ * + * @author zyj + * @since 2023-05-16 + */ +@Data +@ApiModel("Alarm") +@TableName("br_bus_alarm") +public class BusAlarm implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @ApiModelProperty(value = "设备ID") + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 报警类型 + */ + @ApiModelProperty(value = "报警类型") + @TableField("ALARM_TYPE") + private String alarmType; + + /** + * 报警状态 + */ + @ApiModelProperty(value = "报警状态") + @TableField("ALARM_STATUS") + private String alarmStatus; + + /** + * 报警值 + */ + @ApiModelProperty(value = "报警值") + @TableField("ALARM_VALUE") + private String alarmValue; + + /** + * 报警图片 + */ + @ApiModelProperty(value = "报警图片") + @TableField("ALARM_IMAGE") + private String alarmImage; + + /** + * 报警内容 + */ + @ApiModelProperty(value = "报警内容") + @TableField("ALARM_CONTENT") + private String alarmContent; + + /** + * 报警时间 + */ + @ApiModelProperty(value = "报警时间") + @TableField("ALARM_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date alarmTime; + + /** + * 消警时间 + */ + @ApiModelProperty(value = "消警时间") + @TableField("CANCEL_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + /** + * 报警位置经度 + */ + @ApiModelProperty(value = "报警位置经度") + @TableField("ALARM_LNG") + private String alarmLng; + + /** + * 报警位置纬度 + */ + @ApiModelProperty(value = "报警位置纬度") + @TableField("ALARM_LAT") + private String alarmLat; + + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmStatusName; + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmTypeName; + @ApiModelProperty("作业名称") + @TableField(exist = false) + private String workTitle; + @ApiModelProperty("所属道路") + @TableField(exist = false) + private String workRoad; + @ApiModelProperty("作业状态") + @TableField(exist = false) + private String projectState; + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + @ApiModelProperty("负责人姓名") + @TableField(exist = false) + private String workPersonName; + @ApiModelProperty("负责人联系方式") + @TableField(exist = false) + private String workPersonPhoneNumber; + + + @Override + public String toString() { + return "BusAlarm{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + ", alarmType=" + alarmType + + ", alarmValue=" + alarmValue + + ", alarmStatus=" + alarmStatus + + ", alarmImage=" + alarmImage + + ", alarmContent=" + alarmContent + + ", alarmTime=" + alarmTime + + ", cancelTime=" + cancelTime + + ", alarmLng=" + alarmLng + + ", alarmLat=" + alarmLat + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java new file mode 100644 index 0000000..a0b7543 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + *

+ * 事件表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event") +@Data +@ApiModel("BusEvent") +public class BusEvent implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("事件ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件标题 + */ + @ApiModelProperty("事件名称") + @TableField("EVENT_TITLE") + private String eventTitle; + + /** + * 上报人员 + */ + @ApiModelProperty("上报人员") + @TableField("UPLOAD_NAME") + private String uploadName; + + /** + * 联系方式 + */ + @ApiModelProperty("联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 事件描述 + */ + @ApiModelProperty("事件描述") + @TableField("EVENT_DESCRIPTION") + private String eventDescription; + + @ApiModelProperty("经度") + @TableField("LNG") + private String lng; + + @ApiModelProperty("纬度") + @TableField("LAT") + private String lat; + + /** + * 事件上传时间 + */ + @ApiModelProperty("事件上传时间") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty("事件照片") + @TableField(exist = false) + private List imageList; + + + + @Override + public String toString() { + return "BusEvent{" + + "id=" + id + + ", eventTitle=" + eventTitle + + ", uploadName=" + uploadName + + ", phoneNumber=" + phoneNumber + + ", eventDescription=" + eventDescription + + ", lng=" + lng + + ", lat=" + lat + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java new file mode 100644 index 0000000..1e75245 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 事件图片表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event_image") +@Data +@ApiModel("BusEventImage") +public class BusEventImage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件ID + */ + @TableField("EVENT_ID") + private Long eventId; + + /** + * 报警图片 + */ + @TableField("IMAGE") + @ApiModelProperty("图片url") + private String image; + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java new file mode 100644 index 0000000..df89c70 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.core.base.json.DateDeserializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Device") +@TableName("br_device") +@Data +public class Device implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "设备ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty(value = "设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + /** + * 设备类型 + */ + @ApiModelProperty(value = "设备类型") + @TableField("DEVICE_TYPE") + private String deviceType; + + /** + * 设备批次 + */ + @ApiModelProperty(value = "设备批次") + @TableField("DEVICE_BATCH") + private String deviceBatch; + + /** + * 厂家 + */ + @ApiModelProperty(value = "厂家") + @TableField("MANUFACTURER") + private String manufacturer; + + /** + * 是否供电 + */ + @ApiModelProperty(value = "是否供电") + @TableField("IS_POWER_SUPPLY") + private String isPowerSupply; + + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间",dataType = "Date") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty(value = "设备类型名称") + @TableField(exist = false) + private String deviceTypeName; + + @ApiModelProperty(value = "是否供电名称") + @TableField(exist = false) + private String isPowerSupplyName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", deviceCode=" + deviceCode + + ", deviceType=" + deviceType + + ", deviceBatch=" + deviceBatch + + ", manufacturer=" + manufacturer + + ", isPowerSupply=" + isPowerSupply + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java new file mode 100644 index 0000000..5ee7015 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java @@ -0,0 +1,99 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 设备扩展信息表(安全树) + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Data +@TableName("br_device_ext") +public class DeviceExt implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 摄像头编号 + */ + @TableField("CAMERA_CODE") + private String cameraCode; + + /** + * 摄像头IP + */ + @TableField("CAMERA_IP") + private String cameraIp; + + /** + * 摄像头端口 + */ + @TableField("CAMERA_PORT") + private String cameraPort; + + /** + * 激甲编号 + */ + @TableField("GAS_CODE") + private String gasCode; + + /** + * 激甲IP + */ + @TableField("GAS_IP") + private String gasIp; + + /** + * 激甲端口 + */ + @TableField("GAS_PORT") + private String gasPort; + + /** + * 甲烷报警阈值 + */ + @TableField("GAS_THRESHOLD") + private String gasThreshold; + + @TableField(value = "HAT_LINING_CODE") + private String hatLiningCode; + + + @Override + public String toString() { + return "DeviceExt{" + + "id=" + id + + ", deviceId=" + deviceId + + ", cameraCode=" + cameraCode + + ", cameraIp=" + cameraIp + + ", cameraPort=" + cameraPort + + ", gasCode=" + gasCode + + ", gasIp=" + gasIp + + ", gasPort=" + gasPort + + ", gasThreshold=" + gasThreshold + + ", hatLiningCode=" + hatLiningCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java new file mode 100644 index 0000000..c4f3472 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java @@ -0,0 +1,62 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Data +@ApiModel("ProjectDevice") +@TableName("br_project_device") +public class ProjectDevice implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + @ApiModelProperty("设备ID(新增编辑时传)") + private Long deviceId; + + /** + * 设备编号 + */ + @TableField(exist = false) + @ApiModelProperty("设备编号(详情中展示,新增编辑不用传)") + private String deviceCode; + + @Override + public String toString() { + return "ProjectDevice{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java new file mode 100644 index 0000000..10b23c4 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java @@ -0,0 +1,104 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("ProjectWorker") +@TableName("br_project_worker") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ProjectWorker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 人员ID + */ + @ApiModelProperty("人员ID") + @TableField("WORKER_ID") + private Long workerId; + + /** + * 安全帽编号 + */ + @ApiModelProperty("安全帽编号") + @TableField("HAT_CODE") + private String hatCode; + + /** + * 背心编号 + */ + @ApiModelProperty("背心编号") + @TableField("VAST_CODE") + private String vastCode; + + /** + * 手环编号 + */ + @ApiModelProperty("手环编号") + @TableField("BRACELET_CODE") + private String braceletCode; + + @ApiModelProperty("人员姓名(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerName; + + @ApiModelProperty("人员部门ID(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptId; + + @ApiModelProperty("人员部门名称(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptName; + + @ApiModelProperty("人员联系方式(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerPhoneNumber; + + public ProjectWorker(Long projectId, Long workerId) { + this.projectId = projectId; + this.workerId = workerId; + } + + @Override + public String toString() { + return "ProjectWorker{" + + "id=" + id + + ", projectId=" + projectId + + ", workerId=" + workerId + + ", hatCode=" + hatCode + + ", vastCode=" + vastCode + + ", braceletCode=" + braceletCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java new file mode 100644 index 0000000..fa6f41d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 作业现场表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("WorkSiteInfo") +@TableName("br_work_site_info") +@Data +public class WorkSiteInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("作业现场ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业名称 + */ + @ApiModelProperty("作业名称") + @TableField("WORK_TITLE") + private String workTitle; + + /** + * 责任人 + */ + @ApiModelProperty("责任人(人员ID)") + @TableField("WORK_PERSON") + private Long workPerson; + + /** + * 作业描述 + */ + @ApiModelProperty("作业描述") + @TableField("WORK_SITE_DESC") + private String workSiteDesc; + + /** + * 作业状态 + */ + @ApiModelProperty("作业状态") + @TableField("PROJECT_STATE") + private String projectState; + + /** + * 所属道路 + */ + @ApiModelProperty("所属道路") + @TableField("WORK_ROAD") + private String workRoad; + + @TableField("IMAGE_URL") + private String imageUrl; + + @TableField("CREATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + @TableField("UPDATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("FINISH_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + @ApiModelProperty("负责人姓名(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonName; + + @ApiModelProperty("负责人联系方式(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonPhoneNumber; + + @ApiModelProperty("负责人所属部门ID(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private Long workPersonDeptId; + + @ApiModelProperty("负责人所属部门名称(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonDeptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + + @Override + public String toString() { + return "WorkSiteInfo{" + + "id=" + id + + ", workTitle=" + workTitle + + ", workPerson=" + workPerson + + ", workSiteDesc=" + workSiteDesc + + ", projectState=" + projectState + + ", imageUrl=" + imageUrl + + ", updateTime=" + updateTime + + ", workRoad=" + workRoad + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java new file mode 100644 index 0000000..28a4daa --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java @@ -0,0 +1,147 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Worker") +@TableName("br_worker") +@Data +public class Worker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "人员ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 姓名 + */ + @ApiModelProperty(value = "姓名") + @TableField("WORKER_NAME") + private String workerName; + + /** + * 性别 + */ + @ApiModelProperty(value = "性别") + @TableField("GENDER") + private String gender; + + /** + * 所属部门 + */ + @ApiModelProperty(value = "所属部门(人员管理)") + @TableField("DEPT_ID") + private Long deptId; + + /** + * 所属单位 + */ + @ApiModelProperty(value = "所属单位(入场申请中使用)") + @TableField("OWNER_SHIP") + private String ownerShip; + + /** + * 联系方式 + */ + @ApiModelProperty(value = "联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 证件号 + */ + @ApiModelProperty(value = "证件号") + @TableField("ID_CARD_NUMBER") + private String idCardNumber; + + /** + * 入场原因 + */ + @ApiModelProperty(value = "入场原因(入场申请中使用)") + @TableField("ENTER_REASON") + private String enterReason; + + /** + * 入场人脸照片 + */ + @ApiModelProperty(value = "人脸照片(照片路径)") + @TableField("WORKER_AVATAR") + private String workerAvatar; + + /** + * 申请入场时间 + */ + @ApiModelProperty(value = "注册时间/申请入场时间") + @TableField("CREATE_TIME") + private Date createTime; + + /** + * 人员类型 + */ + @ApiModelProperty(value = "人员类型(区分人员管理和入场申请)") + @TableField("WORKER_TYPE") + private String workerType; + + @ApiModelProperty(value = "性别名称") + @TableField(exist = false) + private String genderName; + + @ApiModelProperty(value = "部门名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @ApiModelProperty(value = "是否注册(0未注册;1已注册)",allowableValues = "0,1") + @TableField(exist = false) + private String isRegister; + + @Override + public String toString() { + return "Worker{" + + "id=" + id + + ", workerName=" + workerName + + ", gender=" + gender + + ", deptId=" + deptId + + ", ownerShip=" + ownerShip + + ", phoneNumber=" + phoneNumber + + ", idCardNumber=" + idCardNumber + + ", enterReason=" + enterReason + + ", workerAvatar=" + workerAvatar + + ", createTime=" + createTime + + ", workerType=" + workerType + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java new file mode 100644 index 0000000..9801742 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警记录表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusAlarmMapper extends BaseMapper { + + Page listPage(Page page,@Param("ew") QueryWrapper queryWrapper); + + void cancelAlarm(@Param("deviceId")Long deviceId,@Param("alarmType") String alarmType); + + List alarmCount(@Param("projectId")Long projectId, @Param("alarmStatus")String alarmStatus); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java new file mode 100644 index 0000000..9590b7d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件图片表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventImageMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java new file mode 100644 index 0000000..3c85edf --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java new file mode 100644 index 0000000..4ca9212 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 设备扩展信息表(安全树) Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface DeviceExtMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java new file mode 100644 index 0000000..444c0c5 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Mapper +public interface DeviceMapper extends BaseMapper { + + Page listDetailPage(Page page,@Param("ew") QueryWrapper ew); + + List selectProjectDevice(@Param("projectId") Long projectId); + + List selectHelmetList(@Param("deviceType")String deviceType); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java new file mode 100644 index 0000000..1d0c14e --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectDeviceMapper extends BaseMapper { + List selectDetailByProjectId(@Param("projectId") Long projectId); + + List selectDeviceLocationList(@Param("projectId") Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java new file mode 100644 index 0000000..58583d1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectWorkerMapper extends BaseMapper { + + List selectDetailByProjectId(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + + List selectWorkerLocationList(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java new file mode 100644 index 0000000..a4934d2 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +/** + *

+ * 作业现场表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkSiteInfoMapper extends BaseMapper { + + Page selectListPage(Page page,@Param("ew") QueryWrapper ew); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java new file mode 100644 index 0000000..258fb12 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkerMapper extends BaseMapper { + + + Page selectListPage(Page page, @Param("ew") QueryWrapper ew); + + List selectWorkerAvatars(@Param("projectId")Long projectId); + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml new file mode 100644 index 0000000..595088a --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml @@ -0,0 +1,58 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml new file mode 100644 index 0000000..fbc3db3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml new file mode 100644 index 0000000..627d573 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml new file mode 100644 index 0000000..5321d1c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml new file mode 100644 index 0000000..94262e1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml @@ -0,0 +1,97 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml new file mode 100644 index 0000000..c6d1c24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml @@ -0,0 +1,29 @@ + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml new file mode 100644 index 0000000..8d2de10 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml new file mode 100644 index 0000000..8f01326 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml @@ -0,0 +1,26 @@ + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml new file mode 100644 index 0000000..3e28b39 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml @@ -0,0 +1,56 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java new file mode 100644 index 0000000..f63c19c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 报警记录表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusAlarmService extends IService { + + boolean alarmUpload(AlarmUpload alarmUpload); + + Page listPage(Page page,QueryWrapper queryWrapper); + + List alarmCount(Long projectId,String alarmStatus); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java new file mode 100644 index 0000000..b1187ed --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 事件图片表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusEventImageService extends IService { + + boolean saveBusEventImages(Long eventId, List imageList); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java new file mode 100644 index 0000000..85c48d0 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 事件表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusEventService extends IService { + + boolean saveBusEvent(BusEvent busEvent); +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java new file mode 100644 index 0000000..73d7799 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.dto; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "AlarmUpload",description = "报警上传") +@Data +public class AlarmUpload { + + @ApiModelProperty(value = "摄像头ip") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + @ApiModelProperty(value = "安全树甲烷设备ip") + private String gasIp; + @ApiModelProperty(value = "安全树甲烷设备端口") + private String gasPort; + @ApiModelProperty(value = "报警值") + private String alarmValue; + @ApiModelProperty(value = "报警时间") + private String alarmTime; + @ApiModelProperty(value = "报警类型") + private String alarmType; + @ApiModelProperty(value = "报警图片") + private String alarmImage; + @ApiModelProperty(value = "报警内容") + private String alarmContent; + + @Override + public String toString() { + return "AlarmUpload{" + + "cameraIp='" + cameraIp + '\'' + + ", cameraPort='" + cameraPort + '\'' + + ", gasIp='" + gasIp + '\'' + + ", gasPort='" + gasPort + '\'' + + ", alarmValue='" + alarmValue + '\'' + + ", alarmTime='" + alarmTime + '\'' + + ", alarmType='" + alarmType + '\'' + + ", alarmImage='" + (StrUtil.isNotEmpty(alarmImage) ? alarmImage.substring(0,50) : "null") + '\'' + + ", alarmContent='" + alarmContent + '\'' + + '}'; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java new file mode 100644 index 0000000..ea518d9 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.modular.system.entity.Device; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("DeviceDetailDTO") +@Data +public class DeviceDetailDTO extends Device { + + @ApiModelProperty(value = "摄像头编号") + private String cameraCode; + + @ApiModelProperty(value = "摄像头IP") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + + @ApiModelProperty(value = "激甲编号") + private String gasCode; + + @ApiModelProperty(value = "激甲IP") + private String gasIp; + + @ApiModelProperty(value = "激甲端口") + private String gasPort; + + @ApiModelProperty(value = "智能帽衬编号") + private String hatLiningCode; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java new file mode 100644 index 0000000..29378ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("WorkSiteDetailDTO") +public class WorkSiteDetailDTO extends WorkSiteInfo { + + @ApiModelProperty(value = "安全树列表",dataType = "ProjectDevice") + private List deviceList; + + @ApiModelProperty(value = "人员列表",dataType = "ProjectWorker") + private List workerList; + + + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java new file mode 100644 index 0000000..6fd7b24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java @@ -0,0 +1,68 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "WorkerLocationDTO",description = "人员位置列表(首页)") +@Data +public class WorkerLocationDTO { + + @ApiModelProperty("人员ID") + private Long workerId; + + @ApiModelProperty("人员姓名") + private String workerName; + + @ApiModelProperty("安全帽编号") + private String hatCode; + + @ApiModelProperty("安全帽ID") + private Long hatId; + + @ApiModelProperty("背心编号") + private String vastCode; + + @ApiModelProperty("手环编号") + private String braceletCode; + + @ApiModelProperty("位置") + private String location; + + @ApiModelProperty("时间") + private String time; + + @ApiModelProperty("经度") + private String lng; + + @ApiModelProperty("纬度") + private String lat; + + @ApiModelProperty("心率") + private String heartRate; + + @ApiModelProperty("血氧") + private String bloodOxygen; + + @ApiModelProperty("一氧化碳") + private String co; + + @ApiModelProperty("甲烷") + private String gas; + + @ApiModelProperty("硫化氢") + private String h2s; + + @ApiModelProperty("氧气") + private String o2; + + @ApiModelProperty("信号") + private String signal; + + @ApiModelProperty("电量") + private String cell; + + @ApiModelProperty("是否报警") + private boolean alarmFlag; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java new file mode 100644 index 0000000..efb4a23 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java @@ -0,0 +1,159 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 报警记录表 + *

+ * + * @author zyj + * @since 2023-05-16 + */ +@Data +@ApiModel("Alarm") +@TableName("br_bus_alarm") +public class BusAlarm implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @ApiModelProperty(value = "设备ID") + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 报警类型 + */ + @ApiModelProperty(value = "报警类型") + @TableField("ALARM_TYPE") + private String alarmType; + + /** + * 报警状态 + */ + @ApiModelProperty(value = "报警状态") + @TableField("ALARM_STATUS") + private String alarmStatus; + + /** + * 报警值 + */ + @ApiModelProperty(value = "报警值") + @TableField("ALARM_VALUE") + private String alarmValue; + + /** + * 报警图片 + */ + @ApiModelProperty(value = "报警图片") + @TableField("ALARM_IMAGE") + private String alarmImage; + + /** + * 报警内容 + */ + @ApiModelProperty(value = "报警内容") + @TableField("ALARM_CONTENT") + private String alarmContent; + + /** + * 报警时间 + */ + @ApiModelProperty(value = "报警时间") + @TableField("ALARM_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date alarmTime; + + /** + * 消警时间 + */ + @ApiModelProperty(value = "消警时间") + @TableField("CANCEL_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + /** + * 报警位置经度 + */ + @ApiModelProperty(value = "报警位置经度") + @TableField("ALARM_LNG") + private String alarmLng; + + /** + * 报警位置纬度 + */ + @ApiModelProperty(value = "报警位置纬度") + @TableField("ALARM_LAT") + private String alarmLat; + + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmStatusName; + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmTypeName; + @ApiModelProperty("作业名称") + @TableField(exist = false) + private String workTitle; + @ApiModelProperty("所属道路") + @TableField(exist = false) + private String workRoad; + @ApiModelProperty("作业状态") + @TableField(exist = false) + private String projectState; + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + @ApiModelProperty("负责人姓名") + @TableField(exist = false) + private String workPersonName; + @ApiModelProperty("负责人联系方式") + @TableField(exist = false) + private String workPersonPhoneNumber; + + + @Override + public String toString() { + return "BusAlarm{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + ", alarmType=" + alarmType + + ", alarmValue=" + alarmValue + + ", alarmStatus=" + alarmStatus + + ", alarmImage=" + alarmImage + + ", alarmContent=" + alarmContent + + ", alarmTime=" + alarmTime + + ", cancelTime=" + cancelTime + + ", alarmLng=" + alarmLng + + ", alarmLat=" + alarmLat + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java new file mode 100644 index 0000000..a0b7543 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + *

+ * 事件表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event") +@Data +@ApiModel("BusEvent") +public class BusEvent implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("事件ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件标题 + */ + @ApiModelProperty("事件名称") + @TableField("EVENT_TITLE") + private String eventTitle; + + /** + * 上报人员 + */ + @ApiModelProperty("上报人员") + @TableField("UPLOAD_NAME") + private String uploadName; + + /** + * 联系方式 + */ + @ApiModelProperty("联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 事件描述 + */ + @ApiModelProperty("事件描述") + @TableField("EVENT_DESCRIPTION") + private String eventDescription; + + @ApiModelProperty("经度") + @TableField("LNG") + private String lng; + + @ApiModelProperty("纬度") + @TableField("LAT") + private String lat; + + /** + * 事件上传时间 + */ + @ApiModelProperty("事件上传时间") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty("事件照片") + @TableField(exist = false) + private List imageList; + + + + @Override + public String toString() { + return "BusEvent{" + + "id=" + id + + ", eventTitle=" + eventTitle + + ", uploadName=" + uploadName + + ", phoneNumber=" + phoneNumber + + ", eventDescription=" + eventDescription + + ", lng=" + lng + + ", lat=" + lat + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java new file mode 100644 index 0000000..1e75245 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 事件图片表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event_image") +@Data +@ApiModel("BusEventImage") +public class BusEventImage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件ID + */ + @TableField("EVENT_ID") + private Long eventId; + + /** + * 报警图片 + */ + @TableField("IMAGE") + @ApiModelProperty("图片url") + private String image; + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java new file mode 100644 index 0000000..df89c70 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.core.base.json.DateDeserializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Device") +@TableName("br_device") +@Data +public class Device implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "设备ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty(value = "设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + /** + * 设备类型 + */ + @ApiModelProperty(value = "设备类型") + @TableField("DEVICE_TYPE") + private String deviceType; + + /** + * 设备批次 + */ + @ApiModelProperty(value = "设备批次") + @TableField("DEVICE_BATCH") + private String deviceBatch; + + /** + * 厂家 + */ + @ApiModelProperty(value = "厂家") + @TableField("MANUFACTURER") + private String manufacturer; + + /** + * 是否供电 + */ + @ApiModelProperty(value = "是否供电") + @TableField("IS_POWER_SUPPLY") + private String isPowerSupply; + + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间",dataType = "Date") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty(value = "设备类型名称") + @TableField(exist = false) + private String deviceTypeName; + + @ApiModelProperty(value = "是否供电名称") + @TableField(exist = false) + private String isPowerSupplyName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", deviceCode=" + deviceCode + + ", deviceType=" + deviceType + + ", deviceBatch=" + deviceBatch + + ", manufacturer=" + manufacturer + + ", isPowerSupply=" + isPowerSupply + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java new file mode 100644 index 0000000..5ee7015 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java @@ -0,0 +1,99 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 设备扩展信息表(安全树) + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Data +@TableName("br_device_ext") +public class DeviceExt implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 摄像头编号 + */ + @TableField("CAMERA_CODE") + private String cameraCode; + + /** + * 摄像头IP + */ + @TableField("CAMERA_IP") + private String cameraIp; + + /** + * 摄像头端口 + */ + @TableField("CAMERA_PORT") + private String cameraPort; + + /** + * 激甲编号 + */ + @TableField("GAS_CODE") + private String gasCode; + + /** + * 激甲IP + */ + @TableField("GAS_IP") + private String gasIp; + + /** + * 激甲端口 + */ + @TableField("GAS_PORT") + private String gasPort; + + /** + * 甲烷报警阈值 + */ + @TableField("GAS_THRESHOLD") + private String gasThreshold; + + @TableField(value = "HAT_LINING_CODE") + private String hatLiningCode; + + + @Override + public String toString() { + return "DeviceExt{" + + "id=" + id + + ", deviceId=" + deviceId + + ", cameraCode=" + cameraCode + + ", cameraIp=" + cameraIp + + ", cameraPort=" + cameraPort + + ", gasCode=" + gasCode + + ", gasIp=" + gasIp + + ", gasPort=" + gasPort + + ", gasThreshold=" + gasThreshold + + ", hatLiningCode=" + hatLiningCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java new file mode 100644 index 0000000..c4f3472 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java @@ -0,0 +1,62 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Data +@ApiModel("ProjectDevice") +@TableName("br_project_device") +public class ProjectDevice implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + @ApiModelProperty("设备ID(新增编辑时传)") + private Long deviceId; + + /** + * 设备编号 + */ + @TableField(exist = false) + @ApiModelProperty("设备编号(详情中展示,新增编辑不用传)") + private String deviceCode; + + @Override + public String toString() { + return "ProjectDevice{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java new file mode 100644 index 0000000..10b23c4 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java @@ -0,0 +1,104 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("ProjectWorker") +@TableName("br_project_worker") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ProjectWorker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 人员ID + */ + @ApiModelProperty("人员ID") + @TableField("WORKER_ID") + private Long workerId; + + /** + * 安全帽编号 + */ + @ApiModelProperty("安全帽编号") + @TableField("HAT_CODE") + private String hatCode; + + /** + * 背心编号 + */ + @ApiModelProperty("背心编号") + @TableField("VAST_CODE") + private String vastCode; + + /** + * 手环编号 + */ + @ApiModelProperty("手环编号") + @TableField("BRACELET_CODE") + private String braceletCode; + + @ApiModelProperty("人员姓名(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerName; + + @ApiModelProperty("人员部门ID(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptId; + + @ApiModelProperty("人员部门名称(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptName; + + @ApiModelProperty("人员联系方式(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerPhoneNumber; + + public ProjectWorker(Long projectId, Long workerId) { + this.projectId = projectId; + this.workerId = workerId; + } + + @Override + public String toString() { + return "ProjectWorker{" + + "id=" + id + + ", projectId=" + projectId + + ", workerId=" + workerId + + ", hatCode=" + hatCode + + ", vastCode=" + vastCode + + ", braceletCode=" + braceletCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java new file mode 100644 index 0000000..fa6f41d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 作业现场表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("WorkSiteInfo") +@TableName("br_work_site_info") +@Data +public class WorkSiteInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("作业现场ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业名称 + */ + @ApiModelProperty("作业名称") + @TableField("WORK_TITLE") + private String workTitle; + + /** + * 责任人 + */ + @ApiModelProperty("责任人(人员ID)") + @TableField("WORK_PERSON") + private Long workPerson; + + /** + * 作业描述 + */ + @ApiModelProperty("作业描述") + @TableField("WORK_SITE_DESC") + private String workSiteDesc; + + /** + * 作业状态 + */ + @ApiModelProperty("作业状态") + @TableField("PROJECT_STATE") + private String projectState; + + /** + * 所属道路 + */ + @ApiModelProperty("所属道路") + @TableField("WORK_ROAD") + private String workRoad; + + @TableField("IMAGE_URL") + private String imageUrl; + + @TableField("CREATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + @TableField("UPDATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("FINISH_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + @ApiModelProperty("负责人姓名(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonName; + + @ApiModelProperty("负责人联系方式(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonPhoneNumber; + + @ApiModelProperty("负责人所属部门ID(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private Long workPersonDeptId; + + @ApiModelProperty("负责人所属部门名称(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonDeptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + + @Override + public String toString() { + return "WorkSiteInfo{" + + "id=" + id + + ", workTitle=" + workTitle + + ", workPerson=" + workPerson + + ", workSiteDesc=" + workSiteDesc + + ", projectState=" + projectState + + ", imageUrl=" + imageUrl + + ", updateTime=" + updateTime + + ", workRoad=" + workRoad + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java new file mode 100644 index 0000000..28a4daa --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java @@ -0,0 +1,147 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Worker") +@TableName("br_worker") +@Data +public class Worker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "人员ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 姓名 + */ + @ApiModelProperty(value = "姓名") + @TableField("WORKER_NAME") + private String workerName; + + /** + * 性别 + */ + @ApiModelProperty(value = "性别") + @TableField("GENDER") + private String gender; + + /** + * 所属部门 + */ + @ApiModelProperty(value = "所属部门(人员管理)") + @TableField("DEPT_ID") + private Long deptId; + + /** + * 所属单位 + */ + @ApiModelProperty(value = "所属单位(入场申请中使用)") + @TableField("OWNER_SHIP") + private String ownerShip; + + /** + * 联系方式 + */ + @ApiModelProperty(value = "联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 证件号 + */ + @ApiModelProperty(value = "证件号") + @TableField("ID_CARD_NUMBER") + private String idCardNumber; + + /** + * 入场原因 + */ + @ApiModelProperty(value = "入场原因(入场申请中使用)") + @TableField("ENTER_REASON") + private String enterReason; + + /** + * 入场人脸照片 + */ + @ApiModelProperty(value = "人脸照片(照片路径)") + @TableField("WORKER_AVATAR") + private String workerAvatar; + + /** + * 申请入场时间 + */ + @ApiModelProperty(value = "注册时间/申请入场时间") + @TableField("CREATE_TIME") + private Date createTime; + + /** + * 人员类型 + */ + @ApiModelProperty(value = "人员类型(区分人员管理和入场申请)") + @TableField("WORKER_TYPE") + private String workerType; + + @ApiModelProperty(value = "性别名称") + @TableField(exist = false) + private String genderName; + + @ApiModelProperty(value = "部门名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @ApiModelProperty(value = "是否注册(0未注册;1已注册)",allowableValues = "0,1") + @TableField(exist = false) + private String isRegister; + + @Override + public String toString() { + return "Worker{" + + "id=" + id + + ", workerName=" + workerName + + ", gender=" + gender + + ", deptId=" + deptId + + ", ownerShip=" + ownerShip + + ", phoneNumber=" + phoneNumber + + ", idCardNumber=" + idCardNumber + + ", enterReason=" + enterReason + + ", workerAvatar=" + workerAvatar + + ", createTime=" + createTime + + ", workerType=" + workerType + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java new file mode 100644 index 0000000..9801742 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警记录表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusAlarmMapper extends BaseMapper { + + Page listPage(Page page,@Param("ew") QueryWrapper queryWrapper); + + void cancelAlarm(@Param("deviceId")Long deviceId,@Param("alarmType") String alarmType); + + List alarmCount(@Param("projectId")Long projectId, @Param("alarmStatus")String alarmStatus); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java new file mode 100644 index 0000000..9590b7d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件图片表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventImageMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java new file mode 100644 index 0000000..3c85edf --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java new file mode 100644 index 0000000..4ca9212 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 设备扩展信息表(安全树) Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface DeviceExtMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java new file mode 100644 index 0000000..444c0c5 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Mapper +public interface DeviceMapper extends BaseMapper { + + Page listDetailPage(Page page,@Param("ew") QueryWrapper ew); + + List selectProjectDevice(@Param("projectId") Long projectId); + + List selectHelmetList(@Param("deviceType")String deviceType); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java new file mode 100644 index 0000000..1d0c14e --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectDeviceMapper extends BaseMapper { + List selectDetailByProjectId(@Param("projectId") Long projectId); + + List selectDeviceLocationList(@Param("projectId") Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java new file mode 100644 index 0000000..58583d1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectWorkerMapper extends BaseMapper { + + List selectDetailByProjectId(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + + List selectWorkerLocationList(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java new file mode 100644 index 0000000..a4934d2 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +/** + *

+ * 作业现场表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkSiteInfoMapper extends BaseMapper { + + Page selectListPage(Page page,@Param("ew") QueryWrapper ew); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java new file mode 100644 index 0000000..258fb12 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkerMapper extends BaseMapper { + + + Page selectListPage(Page page, @Param("ew") QueryWrapper ew); + + List selectWorkerAvatars(@Param("projectId")Long projectId); + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml new file mode 100644 index 0000000..595088a --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml @@ -0,0 +1,58 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml new file mode 100644 index 0000000..fbc3db3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml new file mode 100644 index 0000000..627d573 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml new file mode 100644 index 0000000..5321d1c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml new file mode 100644 index 0000000..94262e1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml @@ -0,0 +1,97 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml new file mode 100644 index 0000000..c6d1c24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml @@ -0,0 +1,29 @@ + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml new file mode 100644 index 0000000..8d2de10 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml new file mode 100644 index 0000000..8f01326 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml @@ -0,0 +1,26 @@ + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml new file mode 100644 index 0000000..3e28b39 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml @@ -0,0 +1,56 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java new file mode 100644 index 0000000..f63c19c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 报警记录表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusAlarmService extends IService { + + boolean alarmUpload(AlarmUpload alarmUpload); + + Page listPage(Page page,QueryWrapper queryWrapper); + + List alarmCount(Long projectId,String alarmStatus); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java new file mode 100644 index 0000000..b1187ed --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 事件图片表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusEventImageService extends IService { + + boolean saveBusEventImages(Long eventId, List imageList); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java new file mode 100644 index 0000000..85c48d0 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 事件表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusEventService extends IService { + + boolean saveBusEvent(BusEvent busEvent); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java new file mode 100644 index 0000000..6fc5361 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 设备扩展信息表(安全树) 服务类 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface IDeviceExtService extends IService { + + boolean saveDeviceExt(DeviceDetailDTO deviceDetailDTO); + + boolean updateDeviceExt(DeviceDetailDTO deviceDetailDTO); + + boolean removeByDeviceIds(List deviceIds); + + boolean setGasThreshold(String gasIp,String gasPort,String threshold); + + String getGasThreshold(String gasIp,String gasPort); + + Long selectByGasIpPort(String gasIp,String gasPort); + + Long selectByCameraIpPort(String cameraIp,String cameraPort); + +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java new file mode 100644 index 0000000..73d7799 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.dto; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "AlarmUpload",description = "报警上传") +@Data +public class AlarmUpload { + + @ApiModelProperty(value = "摄像头ip") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + @ApiModelProperty(value = "安全树甲烷设备ip") + private String gasIp; + @ApiModelProperty(value = "安全树甲烷设备端口") + private String gasPort; + @ApiModelProperty(value = "报警值") + private String alarmValue; + @ApiModelProperty(value = "报警时间") + private String alarmTime; + @ApiModelProperty(value = "报警类型") + private String alarmType; + @ApiModelProperty(value = "报警图片") + private String alarmImage; + @ApiModelProperty(value = "报警内容") + private String alarmContent; + + @Override + public String toString() { + return "AlarmUpload{" + + "cameraIp='" + cameraIp + '\'' + + ", cameraPort='" + cameraPort + '\'' + + ", gasIp='" + gasIp + '\'' + + ", gasPort='" + gasPort + '\'' + + ", alarmValue='" + alarmValue + '\'' + + ", alarmTime='" + alarmTime + '\'' + + ", alarmType='" + alarmType + '\'' + + ", alarmImage='" + (StrUtil.isNotEmpty(alarmImage) ? alarmImage.substring(0,50) : "null") + '\'' + + ", alarmContent='" + alarmContent + '\'' + + '}'; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java new file mode 100644 index 0000000..ea518d9 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.modular.system.entity.Device; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("DeviceDetailDTO") +@Data +public class DeviceDetailDTO extends Device { + + @ApiModelProperty(value = "摄像头编号") + private String cameraCode; + + @ApiModelProperty(value = "摄像头IP") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + + @ApiModelProperty(value = "激甲编号") + private String gasCode; + + @ApiModelProperty(value = "激甲IP") + private String gasIp; + + @ApiModelProperty(value = "激甲端口") + private String gasPort; + + @ApiModelProperty(value = "智能帽衬编号") + private String hatLiningCode; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java new file mode 100644 index 0000000..29378ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("WorkSiteDetailDTO") +public class WorkSiteDetailDTO extends WorkSiteInfo { + + @ApiModelProperty(value = "安全树列表",dataType = "ProjectDevice") + private List deviceList; + + @ApiModelProperty(value = "人员列表",dataType = "ProjectWorker") + private List workerList; + + + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java new file mode 100644 index 0000000..6fd7b24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java @@ -0,0 +1,68 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "WorkerLocationDTO",description = "人员位置列表(首页)") +@Data +public class WorkerLocationDTO { + + @ApiModelProperty("人员ID") + private Long workerId; + + @ApiModelProperty("人员姓名") + private String workerName; + + @ApiModelProperty("安全帽编号") + private String hatCode; + + @ApiModelProperty("安全帽ID") + private Long hatId; + + @ApiModelProperty("背心编号") + private String vastCode; + + @ApiModelProperty("手环编号") + private String braceletCode; + + @ApiModelProperty("位置") + private String location; + + @ApiModelProperty("时间") + private String time; + + @ApiModelProperty("经度") + private String lng; + + @ApiModelProperty("纬度") + private String lat; + + @ApiModelProperty("心率") + private String heartRate; + + @ApiModelProperty("血氧") + private String bloodOxygen; + + @ApiModelProperty("一氧化碳") + private String co; + + @ApiModelProperty("甲烷") + private String gas; + + @ApiModelProperty("硫化氢") + private String h2s; + + @ApiModelProperty("氧气") + private String o2; + + @ApiModelProperty("信号") + private String signal; + + @ApiModelProperty("电量") + private String cell; + + @ApiModelProperty("是否报警") + private boolean alarmFlag; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java new file mode 100644 index 0000000..efb4a23 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java @@ -0,0 +1,159 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 报警记录表 + *

+ * + * @author zyj + * @since 2023-05-16 + */ +@Data +@ApiModel("Alarm") +@TableName("br_bus_alarm") +public class BusAlarm implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @ApiModelProperty(value = "设备ID") + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 报警类型 + */ + @ApiModelProperty(value = "报警类型") + @TableField("ALARM_TYPE") + private String alarmType; + + /** + * 报警状态 + */ + @ApiModelProperty(value = "报警状态") + @TableField("ALARM_STATUS") + private String alarmStatus; + + /** + * 报警值 + */ + @ApiModelProperty(value = "报警值") + @TableField("ALARM_VALUE") + private String alarmValue; + + /** + * 报警图片 + */ + @ApiModelProperty(value = "报警图片") + @TableField("ALARM_IMAGE") + private String alarmImage; + + /** + * 报警内容 + */ + @ApiModelProperty(value = "报警内容") + @TableField("ALARM_CONTENT") + private String alarmContent; + + /** + * 报警时间 + */ + @ApiModelProperty(value = "报警时间") + @TableField("ALARM_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date alarmTime; + + /** + * 消警时间 + */ + @ApiModelProperty(value = "消警时间") + @TableField("CANCEL_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + /** + * 报警位置经度 + */ + @ApiModelProperty(value = "报警位置经度") + @TableField("ALARM_LNG") + private String alarmLng; + + /** + * 报警位置纬度 + */ + @ApiModelProperty(value = "报警位置纬度") + @TableField("ALARM_LAT") + private String alarmLat; + + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmStatusName; + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmTypeName; + @ApiModelProperty("作业名称") + @TableField(exist = false) + private String workTitle; + @ApiModelProperty("所属道路") + @TableField(exist = false) + private String workRoad; + @ApiModelProperty("作业状态") + @TableField(exist = false) + private String projectState; + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + @ApiModelProperty("负责人姓名") + @TableField(exist = false) + private String workPersonName; + @ApiModelProperty("负责人联系方式") + @TableField(exist = false) + private String workPersonPhoneNumber; + + + @Override + public String toString() { + return "BusAlarm{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + ", alarmType=" + alarmType + + ", alarmValue=" + alarmValue + + ", alarmStatus=" + alarmStatus + + ", alarmImage=" + alarmImage + + ", alarmContent=" + alarmContent + + ", alarmTime=" + alarmTime + + ", cancelTime=" + cancelTime + + ", alarmLng=" + alarmLng + + ", alarmLat=" + alarmLat + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java new file mode 100644 index 0000000..a0b7543 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + *

+ * 事件表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event") +@Data +@ApiModel("BusEvent") +public class BusEvent implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("事件ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件标题 + */ + @ApiModelProperty("事件名称") + @TableField("EVENT_TITLE") + private String eventTitle; + + /** + * 上报人员 + */ + @ApiModelProperty("上报人员") + @TableField("UPLOAD_NAME") + private String uploadName; + + /** + * 联系方式 + */ + @ApiModelProperty("联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 事件描述 + */ + @ApiModelProperty("事件描述") + @TableField("EVENT_DESCRIPTION") + private String eventDescription; + + @ApiModelProperty("经度") + @TableField("LNG") + private String lng; + + @ApiModelProperty("纬度") + @TableField("LAT") + private String lat; + + /** + * 事件上传时间 + */ + @ApiModelProperty("事件上传时间") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty("事件照片") + @TableField(exist = false) + private List imageList; + + + + @Override + public String toString() { + return "BusEvent{" + + "id=" + id + + ", eventTitle=" + eventTitle + + ", uploadName=" + uploadName + + ", phoneNumber=" + phoneNumber + + ", eventDescription=" + eventDescription + + ", lng=" + lng + + ", lat=" + lat + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java new file mode 100644 index 0000000..1e75245 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 事件图片表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event_image") +@Data +@ApiModel("BusEventImage") +public class BusEventImage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件ID + */ + @TableField("EVENT_ID") + private Long eventId; + + /** + * 报警图片 + */ + @TableField("IMAGE") + @ApiModelProperty("图片url") + private String image; + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java new file mode 100644 index 0000000..df89c70 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.core.base.json.DateDeserializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Device") +@TableName("br_device") +@Data +public class Device implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "设备ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty(value = "设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + /** + * 设备类型 + */ + @ApiModelProperty(value = "设备类型") + @TableField("DEVICE_TYPE") + private String deviceType; + + /** + * 设备批次 + */ + @ApiModelProperty(value = "设备批次") + @TableField("DEVICE_BATCH") + private String deviceBatch; + + /** + * 厂家 + */ + @ApiModelProperty(value = "厂家") + @TableField("MANUFACTURER") + private String manufacturer; + + /** + * 是否供电 + */ + @ApiModelProperty(value = "是否供电") + @TableField("IS_POWER_SUPPLY") + private String isPowerSupply; + + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间",dataType = "Date") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty(value = "设备类型名称") + @TableField(exist = false) + private String deviceTypeName; + + @ApiModelProperty(value = "是否供电名称") + @TableField(exist = false) + private String isPowerSupplyName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", deviceCode=" + deviceCode + + ", deviceType=" + deviceType + + ", deviceBatch=" + deviceBatch + + ", manufacturer=" + manufacturer + + ", isPowerSupply=" + isPowerSupply + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java new file mode 100644 index 0000000..5ee7015 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java @@ -0,0 +1,99 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 设备扩展信息表(安全树) + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Data +@TableName("br_device_ext") +public class DeviceExt implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 摄像头编号 + */ + @TableField("CAMERA_CODE") + private String cameraCode; + + /** + * 摄像头IP + */ + @TableField("CAMERA_IP") + private String cameraIp; + + /** + * 摄像头端口 + */ + @TableField("CAMERA_PORT") + private String cameraPort; + + /** + * 激甲编号 + */ + @TableField("GAS_CODE") + private String gasCode; + + /** + * 激甲IP + */ + @TableField("GAS_IP") + private String gasIp; + + /** + * 激甲端口 + */ + @TableField("GAS_PORT") + private String gasPort; + + /** + * 甲烷报警阈值 + */ + @TableField("GAS_THRESHOLD") + private String gasThreshold; + + @TableField(value = "HAT_LINING_CODE") + private String hatLiningCode; + + + @Override + public String toString() { + return "DeviceExt{" + + "id=" + id + + ", deviceId=" + deviceId + + ", cameraCode=" + cameraCode + + ", cameraIp=" + cameraIp + + ", cameraPort=" + cameraPort + + ", gasCode=" + gasCode + + ", gasIp=" + gasIp + + ", gasPort=" + gasPort + + ", gasThreshold=" + gasThreshold + + ", hatLiningCode=" + hatLiningCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java new file mode 100644 index 0000000..c4f3472 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java @@ -0,0 +1,62 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Data +@ApiModel("ProjectDevice") +@TableName("br_project_device") +public class ProjectDevice implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + @ApiModelProperty("设备ID(新增编辑时传)") + private Long deviceId; + + /** + * 设备编号 + */ + @TableField(exist = false) + @ApiModelProperty("设备编号(详情中展示,新增编辑不用传)") + private String deviceCode; + + @Override + public String toString() { + return "ProjectDevice{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java new file mode 100644 index 0000000..10b23c4 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java @@ -0,0 +1,104 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("ProjectWorker") +@TableName("br_project_worker") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ProjectWorker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 人员ID + */ + @ApiModelProperty("人员ID") + @TableField("WORKER_ID") + private Long workerId; + + /** + * 安全帽编号 + */ + @ApiModelProperty("安全帽编号") + @TableField("HAT_CODE") + private String hatCode; + + /** + * 背心编号 + */ + @ApiModelProperty("背心编号") + @TableField("VAST_CODE") + private String vastCode; + + /** + * 手环编号 + */ + @ApiModelProperty("手环编号") + @TableField("BRACELET_CODE") + private String braceletCode; + + @ApiModelProperty("人员姓名(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerName; + + @ApiModelProperty("人员部门ID(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptId; + + @ApiModelProperty("人员部门名称(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptName; + + @ApiModelProperty("人员联系方式(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerPhoneNumber; + + public ProjectWorker(Long projectId, Long workerId) { + this.projectId = projectId; + this.workerId = workerId; + } + + @Override + public String toString() { + return "ProjectWorker{" + + "id=" + id + + ", projectId=" + projectId + + ", workerId=" + workerId + + ", hatCode=" + hatCode + + ", vastCode=" + vastCode + + ", braceletCode=" + braceletCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java new file mode 100644 index 0000000..fa6f41d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 作业现场表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("WorkSiteInfo") +@TableName("br_work_site_info") +@Data +public class WorkSiteInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("作业现场ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业名称 + */ + @ApiModelProperty("作业名称") + @TableField("WORK_TITLE") + private String workTitle; + + /** + * 责任人 + */ + @ApiModelProperty("责任人(人员ID)") + @TableField("WORK_PERSON") + private Long workPerson; + + /** + * 作业描述 + */ + @ApiModelProperty("作业描述") + @TableField("WORK_SITE_DESC") + private String workSiteDesc; + + /** + * 作业状态 + */ + @ApiModelProperty("作业状态") + @TableField("PROJECT_STATE") + private String projectState; + + /** + * 所属道路 + */ + @ApiModelProperty("所属道路") + @TableField("WORK_ROAD") + private String workRoad; + + @TableField("IMAGE_URL") + private String imageUrl; + + @TableField("CREATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + @TableField("UPDATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("FINISH_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + @ApiModelProperty("负责人姓名(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonName; + + @ApiModelProperty("负责人联系方式(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonPhoneNumber; + + @ApiModelProperty("负责人所属部门ID(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private Long workPersonDeptId; + + @ApiModelProperty("负责人所属部门名称(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonDeptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + + @Override + public String toString() { + return "WorkSiteInfo{" + + "id=" + id + + ", workTitle=" + workTitle + + ", workPerson=" + workPerson + + ", workSiteDesc=" + workSiteDesc + + ", projectState=" + projectState + + ", imageUrl=" + imageUrl + + ", updateTime=" + updateTime + + ", workRoad=" + workRoad + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java new file mode 100644 index 0000000..28a4daa --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java @@ -0,0 +1,147 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Worker") +@TableName("br_worker") +@Data +public class Worker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "人员ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 姓名 + */ + @ApiModelProperty(value = "姓名") + @TableField("WORKER_NAME") + private String workerName; + + /** + * 性别 + */ + @ApiModelProperty(value = "性别") + @TableField("GENDER") + private String gender; + + /** + * 所属部门 + */ + @ApiModelProperty(value = "所属部门(人员管理)") + @TableField("DEPT_ID") + private Long deptId; + + /** + * 所属单位 + */ + @ApiModelProperty(value = "所属单位(入场申请中使用)") + @TableField("OWNER_SHIP") + private String ownerShip; + + /** + * 联系方式 + */ + @ApiModelProperty(value = "联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 证件号 + */ + @ApiModelProperty(value = "证件号") + @TableField("ID_CARD_NUMBER") + private String idCardNumber; + + /** + * 入场原因 + */ + @ApiModelProperty(value = "入场原因(入场申请中使用)") + @TableField("ENTER_REASON") + private String enterReason; + + /** + * 入场人脸照片 + */ + @ApiModelProperty(value = "人脸照片(照片路径)") + @TableField("WORKER_AVATAR") + private String workerAvatar; + + /** + * 申请入场时间 + */ + @ApiModelProperty(value = "注册时间/申请入场时间") + @TableField("CREATE_TIME") + private Date createTime; + + /** + * 人员类型 + */ + @ApiModelProperty(value = "人员类型(区分人员管理和入场申请)") + @TableField("WORKER_TYPE") + private String workerType; + + @ApiModelProperty(value = "性别名称") + @TableField(exist = false) + private String genderName; + + @ApiModelProperty(value = "部门名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @ApiModelProperty(value = "是否注册(0未注册;1已注册)",allowableValues = "0,1") + @TableField(exist = false) + private String isRegister; + + @Override + public String toString() { + return "Worker{" + + "id=" + id + + ", workerName=" + workerName + + ", gender=" + gender + + ", deptId=" + deptId + + ", ownerShip=" + ownerShip + + ", phoneNumber=" + phoneNumber + + ", idCardNumber=" + idCardNumber + + ", enterReason=" + enterReason + + ", workerAvatar=" + workerAvatar + + ", createTime=" + createTime + + ", workerType=" + workerType + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java new file mode 100644 index 0000000..9801742 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警记录表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusAlarmMapper extends BaseMapper { + + Page listPage(Page page,@Param("ew") QueryWrapper queryWrapper); + + void cancelAlarm(@Param("deviceId")Long deviceId,@Param("alarmType") String alarmType); + + List alarmCount(@Param("projectId")Long projectId, @Param("alarmStatus")String alarmStatus); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java new file mode 100644 index 0000000..9590b7d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件图片表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventImageMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java new file mode 100644 index 0000000..3c85edf --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java new file mode 100644 index 0000000..4ca9212 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 设备扩展信息表(安全树) Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface DeviceExtMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java new file mode 100644 index 0000000..444c0c5 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Mapper +public interface DeviceMapper extends BaseMapper { + + Page listDetailPage(Page page,@Param("ew") QueryWrapper ew); + + List selectProjectDevice(@Param("projectId") Long projectId); + + List selectHelmetList(@Param("deviceType")String deviceType); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java new file mode 100644 index 0000000..1d0c14e --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectDeviceMapper extends BaseMapper { + List selectDetailByProjectId(@Param("projectId") Long projectId); + + List selectDeviceLocationList(@Param("projectId") Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java new file mode 100644 index 0000000..58583d1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectWorkerMapper extends BaseMapper { + + List selectDetailByProjectId(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + + List selectWorkerLocationList(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java new file mode 100644 index 0000000..a4934d2 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +/** + *

+ * 作业现场表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkSiteInfoMapper extends BaseMapper { + + Page selectListPage(Page page,@Param("ew") QueryWrapper ew); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java new file mode 100644 index 0000000..258fb12 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkerMapper extends BaseMapper { + + + Page selectListPage(Page page, @Param("ew") QueryWrapper ew); + + List selectWorkerAvatars(@Param("projectId")Long projectId); + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml new file mode 100644 index 0000000..595088a --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml @@ -0,0 +1,58 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml new file mode 100644 index 0000000..fbc3db3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml new file mode 100644 index 0000000..627d573 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml new file mode 100644 index 0000000..5321d1c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml new file mode 100644 index 0000000..94262e1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml @@ -0,0 +1,97 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml new file mode 100644 index 0000000..c6d1c24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml @@ -0,0 +1,29 @@ + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml new file mode 100644 index 0000000..8d2de10 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml new file mode 100644 index 0000000..8f01326 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml @@ -0,0 +1,26 @@ + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml new file mode 100644 index 0000000..3e28b39 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml @@ -0,0 +1,56 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java new file mode 100644 index 0000000..f63c19c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 报警记录表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusAlarmService extends IService { + + boolean alarmUpload(AlarmUpload alarmUpload); + + Page listPage(Page page,QueryWrapper queryWrapper); + + List alarmCount(Long projectId,String alarmStatus); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java new file mode 100644 index 0000000..b1187ed --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 事件图片表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusEventImageService extends IService { + + boolean saveBusEventImages(Long eventId, List imageList); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java new file mode 100644 index 0000000..85c48d0 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 事件表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusEventService extends IService { + + boolean saveBusEvent(BusEvent busEvent); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java new file mode 100644 index 0000000..6fc5361 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 设备扩展信息表(安全树) 服务类 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface IDeviceExtService extends IService { + + boolean saveDeviceExt(DeviceDetailDTO deviceDetailDTO); + + boolean updateDeviceExt(DeviceDetailDTO deviceDetailDTO); + + boolean removeByDeviceIds(List deviceIds); + + boolean setGasThreshold(String gasIp,String gasPort,String threshold); + + String getGasThreshold(String gasIp,String gasPort); + + Long selectByGasIpPort(String gasIp,String gasPort); + + Long selectByCameraIpPort(String cameraIp,String cameraPort); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java new file mode 100644 index 0000000..9e62756 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java @@ -0,0 +1,32 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IDeviceService extends IService { + + boolean saveDevice(DeviceDetailDTO deviceDetailDTO); + + boolean updateDevice(DeviceDetailDTO deviceDetailDTO); + + boolean deleteDevices(List deviceIds); + + Page listPage(Page page, QueryWrapper queryWrapper, String status,Long projectId); + + List selectProjectDevice(Long projectId); + +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java new file mode 100644 index 0000000..73d7799 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.dto; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "AlarmUpload",description = "报警上传") +@Data +public class AlarmUpload { + + @ApiModelProperty(value = "摄像头ip") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + @ApiModelProperty(value = "安全树甲烷设备ip") + private String gasIp; + @ApiModelProperty(value = "安全树甲烷设备端口") + private String gasPort; + @ApiModelProperty(value = "报警值") + private String alarmValue; + @ApiModelProperty(value = "报警时间") + private String alarmTime; + @ApiModelProperty(value = "报警类型") + private String alarmType; + @ApiModelProperty(value = "报警图片") + private String alarmImage; + @ApiModelProperty(value = "报警内容") + private String alarmContent; + + @Override + public String toString() { + return "AlarmUpload{" + + "cameraIp='" + cameraIp + '\'' + + ", cameraPort='" + cameraPort + '\'' + + ", gasIp='" + gasIp + '\'' + + ", gasPort='" + gasPort + '\'' + + ", alarmValue='" + alarmValue + '\'' + + ", alarmTime='" + alarmTime + '\'' + + ", alarmType='" + alarmType + '\'' + + ", alarmImage='" + (StrUtil.isNotEmpty(alarmImage) ? alarmImage.substring(0,50) : "null") + '\'' + + ", alarmContent='" + alarmContent + '\'' + + '}'; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java new file mode 100644 index 0000000..ea518d9 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.modular.system.entity.Device; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("DeviceDetailDTO") +@Data +public class DeviceDetailDTO extends Device { + + @ApiModelProperty(value = "摄像头编号") + private String cameraCode; + + @ApiModelProperty(value = "摄像头IP") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + + @ApiModelProperty(value = "激甲编号") + private String gasCode; + + @ApiModelProperty(value = "激甲IP") + private String gasIp; + + @ApiModelProperty(value = "激甲端口") + private String gasPort; + + @ApiModelProperty(value = "智能帽衬编号") + private String hatLiningCode; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java new file mode 100644 index 0000000..29378ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("WorkSiteDetailDTO") +public class WorkSiteDetailDTO extends WorkSiteInfo { + + @ApiModelProperty(value = "安全树列表",dataType = "ProjectDevice") + private List deviceList; + + @ApiModelProperty(value = "人员列表",dataType = "ProjectWorker") + private List workerList; + + + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java new file mode 100644 index 0000000..6fd7b24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java @@ -0,0 +1,68 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "WorkerLocationDTO",description = "人员位置列表(首页)") +@Data +public class WorkerLocationDTO { + + @ApiModelProperty("人员ID") + private Long workerId; + + @ApiModelProperty("人员姓名") + private String workerName; + + @ApiModelProperty("安全帽编号") + private String hatCode; + + @ApiModelProperty("安全帽ID") + private Long hatId; + + @ApiModelProperty("背心编号") + private String vastCode; + + @ApiModelProperty("手环编号") + private String braceletCode; + + @ApiModelProperty("位置") + private String location; + + @ApiModelProperty("时间") + private String time; + + @ApiModelProperty("经度") + private String lng; + + @ApiModelProperty("纬度") + private String lat; + + @ApiModelProperty("心率") + private String heartRate; + + @ApiModelProperty("血氧") + private String bloodOxygen; + + @ApiModelProperty("一氧化碳") + private String co; + + @ApiModelProperty("甲烷") + private String gas; + + @ApiModelProperty("硫化氢") + private String h2s; + + @ApiModelProperty("氧气") + private String o2; + + @ApiModelProperty("信号") + private String signal; + + @ApiModelProperty("电量") + private String cell; + + @ApiModelProperty("是否报警") + private boolean alarmFlag; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java new file mode 100644 index 0000000..efb4a23 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java @@ -0,0 +1,159 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 报警记录表 + *

+ * + * @author zyj + * @since 2023-05-16 + */ +@Data +@ApiModel("Alarm") +@TableName("br_bus_alarm") +public class BusAlarm implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @ApiModelProperty(value = "设备ID") + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 报警类型 + */ + @ApiModelProperty(value = "报警类型") + @TableField("ALARM_TYPE") + private String alarmType; + + /** + * 报警状态 + */ + @ApiModelProperty(value = "报警状态") + @TableField("ALARM_STATUS") + private String alarmStatus; + + /** + * 报警值 + */ + @ApiModelProperty(value = "报警值") + @TableField("ALARM_VALUE") + private String alarmValue; + + /** + * 报警图片 + */ + @ApiModelProperty(value = "报警图片") + @TableField("ALARM_IMAGE") + private String alarmImage; + + /** + * 报警内容 + */ + @ApiModelProperty(value = "报警内容") + @TableField("ALARM_CONTENT") + private String alarmContent; + + /** + * 报警时间 + */ + @ApiModelProperty(value = "报警时间") + @TableField("ALARM_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date alarmTime; + + /** + * 消警时间 + */ + @ApiModelProperty(value = "消警时间") + @TableField("CANCEL_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + /** + * 报警位置经度 + */ + @ApiModelProperty(value = "报警位置经度") + @TableField("ALARM_LNG") + private String alarmLng; + + /** + * 报警位置纬度 + */ + @ApiModelProperty(value = "报警位置纬度") + @TableField("ALARM_LAT") + private String alarmLat; + + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmStatusName; + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmTypeName; + @ApiModelProperty("作业名称") + @TableField(exist = false) + private String workTitle; + @ApiModelProperty("所属道路") + @TableField(exist = false) + private String workRoad; + @ApiModelProperty("作业状态") + @TableField(exist = false) + private String projectState; + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + @ApiModelProperty("负责人姓名") + @TableField(exist = false) + private String workPersonName; + @ApiModelProperty("负责人联系方式") + @TableField(exist = false) + private String workPersonPhoneNumber; + + + @Override + public String toString() { + return "BusAlarm{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + ", alarmType=" + alarmType + + ", alarmValue=" + alarmValue + + ", alarmStatus=" + alarmStatus + + ", alarmImage=" + alarmImage + + ", alarmContent=" + alarmContent + + ", alarmTime=" + alarmTime + + ", cancelTime=" + cancelTime + + ", alarmLng=" + alarmLng + + ", alarmLat=" + alarmLat + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java new file mode 100644 index 0000000..a0b7543 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + *

+ * 事件表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event") +@Data +@ApiModel("BusEvent") +public class BusEvent implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("事件ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件标题 + */ + @ApiModelProperty("事件名称") + @TableField("EVENT_TITLE") + private String eventTitle; + + /** + * 上报人员 + */ + @ApiModelProperty("上报人员") + @TableField("UPLOAD_NAME") + private String uploadName; + + /** + * 联系方式 + */ + @ApiModelProperty("联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 事件描述 + */ + @ApiModelProperty("事件描述") + @TableField("EVENT_DESCRIPTION") + private String eventDescription; + + @ApiModelProperty("经度") + @TableField("LNG") + private String lng; + + @ApiModelProperty("纬度") + @TableField("LAT") + private String lat; + + /** + * 事件上传时间 + */ + @ApiModelProperty("事件上传时间") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty("事件照片") + @TableField(exist = false) + private List imageList; + + + + @Override + public String toString() { + return "BusEvent{" + + "id=" + id + + ", eventTitle=" + eventTitle + + ", uploadName=" + uploadName + + ", phoneNumber=" + phoneNumber + + ", eventDescription=" + eventDescription + + ", lng=" + lng + + ", lat=" + lat + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java new file mode 100644 index 0000000..1e75245 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 事件图片表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event_image") +@Data +@ApiModel("BusEventImage") +public class BusEventImage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件ID + */ + @TableField("EVENT_ID") + private Long eventId; + + /** + * 报警图片 + */ + @TableField("IMAGE") + @ApiModelProperty("图片url") + private String image; + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java new file mode 100644 index 0000000..df89c70 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.core.base.json.DateDeserializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Device") +@TableName("br_device") +@Data +public class Device implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "设备ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty(value = "设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + /** + * 设备类型 + */ + @ApiModelProperty(value = "设备类型") + @TableField("DEVICE_TYPE") + private String deviceType; + + /** + * 设备批次 + */ + @ApiModelProperty(value = "设备批次") + @TableField("DEVICE_BATCH") + private String deviceBatch; + + /** + * 厂家 + */ + @ApiModelProperty(value = "厂家") + @TableField("MANUFACTURER") + private String manufacturer; + + /** + * 是否供电 + */ + @ApiModelProperty(value = "是否供电") + @TableField("IS_POWER_SUPPLY") + private String isPowerSupply; + + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间",dataType = "Date") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty(value = "设备类型名称") + @TableField(exist = false) + private String deviceTypeName; + + @ApiModelProperty(value = "是否供电名称") + @TableField(exist = false) + private String isPowerSupplyName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", deviceCode=" + deviceCode + + ", deviceType=" + deviceType + + ", deviceBatch=" + deviceBatch + + ", manufacturer=" + manufacturer + + ", isPowerSupply=" + isPowerSupply + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java new file mode 100644 index 0000000..5ee7015 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java @@ -0,0 +1,99 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 设备扩展信息表(安全树) + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Data +@TableName("br_device_ext") +public class DeviceExt implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 摄像头编号 + */ + @TableField("CAMERA_CODE") + private String cameraCode; + + /** + * 摄像头IP + */ + @TableField("CAMERA_IP") + private String cameraIp; + + /** + * 摄像头端口 + */ + @TableField("CAMERA_PORT") + private String cameraPort; + + /** + * 激甲编号 + */ + @TableField("GAS_CODE") + private String gasCode; + + /** + * 激甲IP + */ + @TableField("GAS_IP") + private String gasIp; + + /** + * 激甲端口 + */ + @TableField("GAS_PORT") + private String gasPort; + + /** + * 甲烷报警阈值 + */ + @TableField("GAS_THRESHOLD") + private String gasThreshold; + + @TableField(value = "HAT_LINING_CODE") + private String hatLiningCode; + + + @Override + public String toString() { + return "DeviceExt{" + + "id=" + id + + ", deviceId=" + deviceId + + ", cameraCode=" + cameraCode + + ", cameraIp=" + cameraIp + + ", cameraPort=" + cameraPort + + ", gasCode=" + gasCode + + ", gasIp=" + gasIp + + ", gasPort=" + gasPort + + ", gasThreshold=" + gasThreshold + + ", hatLiningCode=" + hatLiningCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java new file mode 100644 index 0000000..c4f3472 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java @@ -0,0 +1,62 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Data +@ApiModel("ProjectDevice") +@TableName("br_project_device") +public class ProjectDevice implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + @ApiModelProperty("设备ID(新增编辑时传)") + private Long deviceId; + + /** + * 设备编号 + */ + @TableField(exist = false) + @ApiModelProperty("设备编号(详情中展示,新增编辑不用传)") + private String deviceCode; + + @Override + public String toString() { + return "ProjectDevice{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java new file mode 100644 index 0000000..10b23c4 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java @@ -0,0 +1,104 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("ProjectWorker") +@TableName("br_project_worker") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ProjectWorker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 人员ID + */ + @ApiModelProperty("人员ID") + @TableField("WORKER_ID") + private Long workerId; + + /** + * 安全帽编号 + */ + @ApiModelProperty("安全帽编号") + @TableField("HAT_CODE") + private String hatCode; + + /** + * 背心编号 + */ + @ApiModelProperty("背心编号") + @TableField("VAST_CODE") + private String vastCode; + + /** + * 手环编号 + */ + @ApiModelProperty("手环编号") + @TableField("BRACELET_CODE") + private String braceletCode; + + @ApiModelProperty("人员姓名(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerName; + + @ApiModelProperty("人员部门ID(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptId; + + @ApiModelProperty("人员部门名称(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptName; + + @ApiModelProperty("人员联系方式(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerPhoneNumber; + + public ProjectWorker(Long projectId, Long workerId) { + this.projectId = projectId; + this.workerId = workerId; + } + + @Override + public String toString() { + return "ProjectWorker{" + + "id=" + id + + ", projectId=" + projectId + + ", workerId=" + workerId + + ", hatCode=" + hatCode + + ", vastCode=" + vastCode + + ", braceletCode=" + braceletCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java new file mode 100644 index 0000000..fa6f41d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 作业现场表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("WorkSiteInfo") +@TableName("br_work_site_info") +@Data +public class WorkSiteInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("作业现场ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业名称 + */ + @ApiModelProperty("作业名称") + @TableField("WORK_TITLE") + private String workTitle; + + /** + * 责任人 + */ + @ApiModelProperty("责任人(人员ID)") + @TableField("WORK_PERSON") + private Long workPerson; + + /** + * 作业描述 + */ + @ApiModelProperty("作业描述") + @TableField("WORK_SITE_DESC") + private String workSiteDesc; + + /** + * 作业状态 + */ + @ApiModelProperty("作业状态") + @TableField("PROJECT_STATE") + private String projectState; + + /** + * 所属道路 + */ + @ApiModelProperty("所属道路") + @TableField("WORK_ROAD") + private String workRoad; + + @TableField("IMAGE_URL") + private String imageUrl; + + @TableField("CREATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + @TableField("UPDATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("FINISH_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + @ApiModelProperty("负责人姓名(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonName; + + @ApiModelProperty("负责人联系方式(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonPhoneNumber; + + @ApiModelProperty("负责人所属部门ID(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private Long workPersonDeptId; + + @ApiModelProperty("负责人所属部门名称(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonDeptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + + @Override + public String toString() { + return "WorkSiteInfo{" + + "id=" + id + + ", workTitle=" + workTitle + + ", workPerson=" + workPerson + + ", workSiteDesc=" + workSiteDesc + + ", projectState=" + projectState + + ", imageUrl=" + imageUrl + + ", updateTime=" + updateTime + + ", workRoad=" + workRoad + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java new file mode 100644 index 0000000..28a4daa --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java @@ -0,0 +1,147 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Worker") +@TableName("br_worker") +@Data +public class Worker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "人员ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 姓名 + */ + @ApiModelProperty(value = "姓名") + @TableField("WORKER_NAME") + private String workerName; + + /** + * 性别 + */ + @ApiModelProperty(value = "性别") + @TableField("GENDER") + private String gender; + + /** + * 所属部门 + */ + @ApiModelProperty(value = "所属部门(人员管理)") + @TableField("DEPT_ID") + private Long deptId; + + /** + * 所属单位 + */ + @ApiModelProperty(value = "所属单位(入场申请中使用)") + @TableField("OWNER_SHIP") + private String ownerShip; + + /** + * 联系方式 + */ + @ApiModelProperty(value = "联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 证件号 + */ + @ApiModelProperty(value = "证件号") + @TableField("ID_CARD_NUMBER") + private String idCardNumber; + + /** + * 入场原因 + */ + @ApiModelProperty(value = "入场原因(入场申请中使用)") + @TableField("ENTER_REASON") + private String enterReason; + + /** + * 入场人脸照片 + */ + @ApiModelProperty(value = "人脸照片(照片路径)") + @TableField("WORKER_AVATAR") + private String workerAvatar; + + /** + * 申请入场时间 + */ + @ApiModelProperty(value = "注册时间/申请入场时间") + @TableField("CREATE_TIME") + private Date createTime; + + /** + * 人员类型 + */ + @ApiModelProperty(value = "人员类型(区分人员管理和入场申请)") + @TableField("WORKER_TYPE") + private String workerType; + + @ApiModelProperty(value = "性别名称") + @TableField(exist = false) + private String genderName; + + @ApiModelProperty(value = "部门名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @ApiModelProperty(value = "是否注册(0未注册;1已注册)",allowableValues = "0,1") + @TableField(exist = false) + private String isRegister; + + @Override + public String toString() { + return "Worker{" + + "id=" + id + + ", workerName=" + workerName + + ", gender=" + gender + + ", deptId=" + deptId + + ", ownerShip=" + ownerShip + + ", phoneNumber=" + phoneNumber + + ", idCardNumber=" + idCardNumber + + ", enterReason=" + enterReason + + ", workerAvatar=" + workerAvatar + + ", createTime=" + createTime + + ", workerType=" + workerType + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java new file mode 100644 index 0000000..9801742 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警记录表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusAlarmMapper extends BaseMapper { + + Page listPage(Page page,@Param("ew") QueryWrapper queryWrapper); + + void cancelAlarm(@Param("deviceId")Long deviceId,@Param("alarmType") String alarmType); + + List alarmCount(@Param("projectId")Long projectId, @Param("alarmStatus")String alarmStatus); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java new file mode 100644 index 0000000..9590b7d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件图片表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventImageMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java new file mode 100644 index 0000000..3c85edf --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java new file mode 100644 index 0000000..4ca9212 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 设备扩展信息表(安全树) Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface DeviceExtMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java new file mode 100644 index 0000000..444c0c5 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Mapper +public interface DeviceMapper extends BaseMapper { + + Page listDetailPage(Page page,@Param("ew") QueryWrapper ew); + + List selectProjectDevice(@Param("projectId") Long projectId); + + List selectHelmetList(@Param("deviceType")String deviceType); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java new file mode 100644 index 0000000..1d0c14e --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectDeviceMapper extends BaseMapper { + List selectDetailByProjectId(@Param("projectId") Long projectId); + + List selectDeviceLocationList(@Param("projectId") Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java new file mode 100644 index 0000000..58583d1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectWorkerMapper extends BaseMapper { + + List selectDetailByProjectId(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + + List selectWorkerLocationList(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java new file mode 100644 index 0000000..a4934d2 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +/** + *

+ * 作业现场表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkSiteInfoMapper extends BaseMapper { + + Page selectListPage(Page page,@Param("ew") QueryWrapper ew); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java new file mode 100644 index 0000000..258fb12 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkerMapper extends BaseMapper { + + + Page selectListPage(Page page, @Param("ew") QueryWrapper ew); + + List selectWorkerAvatars(@Param("projectId")Long projectId); + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml new file mode 100644 index 0000000..595088a --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml @@ -0,0 +1,58 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml new file mode 100644 index 0000000..fbc3db3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml new file mode 100644 index 0000000..627d573 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml new file mode 100644 index 0000000..5321d1c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml new file mode 100644 index 0000000..94262e1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml @@ -0,0 +1,97 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml new file mode 100644 index 0000000..c6d1c24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml @@ -0,0 +1,29 @@ + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml new file mode 100644 index 0000000..8d2de10 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml new file mode 100644 index 0000000..8f01326 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml @@ -0,0 +1,26 @@ + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml new file mode 100644 index 0000000..3e28b39 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml @@ -0,0 +1,56 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java new file mode 100644 index 0000000..f63c19c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 报警记录表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusAlarmService extends IService { + + boolean alarmUpload(AlarmUpload alarmUpload); + + Page listPage(Page page,QueryWrapper queryWrapper); + + List alarmCount(Long projectId,String alarmStatus); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java new file mode 100644 index 0000000..b1187ed --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 事件图片表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusEventImageService extends IService { + + boolean saveBusEventImages(Long eventId, List imageList); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java new file mode 100644 index 0000000..85c48d0 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 事件表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusEventService extends IService { + + boolean saveBusEvent(BusEvent busEvent); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java new file mode 100644 index 0000000..6fc5361 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 设备扩展信息表(安全树) 服务类 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface IDeviceExtService extends IService { + + boolean saveDeviceExt(DeviceDetailDTO deviceDetailDTO); + + boolean updateDeviceExt(DeviceDetailDTO deviceDetailDTO); + + boolean removeByDeviceIds(List deviceIds); + + boolean setGasThreshold(String gasIp,String gasPort,String threshold); + + String getGasThreshold(String gasIp,String gasPort); + + Long selectByGasIpPort(String gasIp,String gasPort); + + Long selectByCameraIpPort(String cameraIp,String cameraPort); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java new file mode 100644 index 0000000..9e62756 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java @@ -0,0 +1,32 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IDeviceService extends IService { + + boolean saveDevice(DeviceDetailDTO deviceDetailDTO); + + boolean updateDevice(DeviceDetailDTO deviceDetailDTO); + + boolean deleteDevices(List deviceIds); + + Page listPage(Page page, QueryWrapper queryWrapper, String status,Long projectId); + + List selectProjectDevice(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java new file mode 100644 index 0000000..8599411 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IProjectDeviceService extends IService { + + boolean saveProjectDeviceList(Long projectId, List projectDeviceList); + + boolean updateProjectDeviceList(Long projectId, List projectDeviceList); + + boolean deleteByProjectId(Long projectId); + + boolean deleteByProjectIds(List projectIds); + + List selectDetailByProjectId(Long projectId); + + Long selectProjectIdByDevice(Long deviceId); + + List selectDeviceLocationList(Long projectId); + +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java new file mode 100644 index 0000000..73d7799 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.dto; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "AlarmUpload",description = "报警上传") +@Data +public class AlarmUpload { + + @ApiModelProperty(value = "摄像头ip") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + @ApiModelProperty(value = "安全树甲烷设备ip") + private String gasIp; + @ApiModelProperty(value = "安全树甲烷设备端口") + private String gasPort; + @ApiModelProperty(value = "报警值") + private String alarmValue; + @ApiModelProperty(value = "报警时间") + private String alarmTime; + @ApiModelProperty(value = "报警类型") + private String alarmType; + @ApiModelProperty(value = "报警图片") + private String alarmImage; + @ApiModelProperty(value = "报警内容") + private String alarmContent; + + @Override + public String toString() { + return "AlarmUpload{" + + "cameraIp='" + cameraIp + '\'' + + ", cameraPort='" + cameraPort + '\'' + + ", gasIp='" + gasIp + '\'' + + ", gasPort='" + gasPort + '\'' + + ", alarmValue='" + alarmValue + '\'' + + ", alarmTime='" + alarmTime + '\'' + + ", alarmType='" + alarmType + '\'' + + ", alarmImage='" + (StrUtil.isNotEmpty(alarmImage) ? alarmImage.substring(0,50) : "null") + '\'' + + ", alarmContent='" + alarmContent + '\'' + + '}'; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java new file mode 100644 index 0000000..ea518d9 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.modular.system.entity.Device; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("DeviceDetailDTO") +@Data +public class DeviceDetailDTO extends Device { + + @ApiModelProperty(value = "摄像头编号") + private String cameraCode; + + @ApiModelProperty(value = "摄像头IP") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + + @ApiModelProperty(value = "激甲编号") + private String gasCode; + + @ApiModelProperty(value = "激甲IP") + private String gasIp; + + @ApiModelProperty(value = "激甲端口") + private String gasPort; + + @ApiModelProperty(value = "智能帽衬编号") + private String hatLiningCode; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java new file mode 100644 index 0000000..29378ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("WorkSiteDetailDTO") +public class WorkSiteDetailDTO extends WorkSiteInfo { + + @ApiModelProperty(value = "安全树列表",dataType = "ProjectDevice") + private List deviceList; + + @ApiModelProperty(value = "人员列表",dataType = "ProjectWorker") + private List workerList; + + + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java new file mode 100644 index 0000000..6fd7b24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java @@ -0,0 +1,68 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "WorkerLocationDTO",description = "人员位置列表(首页)") +@Data +public class WorkerLocationDTO { + + @ApiModelProperty("人员ID") + private Long workerId; + + @ApiModelProperty("人员姓名") + private String workerName; + + @ApiModelProperty("安全帽编号") + private String hatCode; + + @ApiModelProperty("安全帽ID") + private Long hatId; + + @ApiModelProperty("背心编号") + private String vastCode; + + @ApiModelProperty("手环编号") + private String braceletCode; + + @ApiModelProperty("位置") + private String location; + + @ApiModelProperty("时间") + private String time; + + @ApiModelProperty("经度") + private String lng; + + @ApiModelProperty("纬度") + private String lat; + + @ApiModelProperty("心率") + private String heartRate; + + @ApiModelProperty("血氧") + private String bloodOxygen; + + @ApiModelProperty("一氧化碳") + private String co; + + @ApiModelProperty("甲烷") + private String gas; + + @ApiModelProperty("硫化氢") + private String h2s; + + @ApiModelProperty("氧气") + private String o2; + + @ApiModelProperty("信号") + private String signal; + + @ApiModelProperty("电量") + private String cell; + + @ApiModelProperty("是否报警") + private boolean alarmFlag; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java new file mode 100644 index 0000000..efb4a23 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java @@ -0,0 +1,159 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 报警记录表 + *

+ * + * @author zyj + * @since 2023-05-16 + */ +@Data +@ApiModel("Alarm") +@TableName("br_bus_alarm") +public class BusAlarm implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @ApiModelProperty(value = "设备ID") + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 报警类型 + */ + @ApiModelProperty(value = "报警类型") + @TableField("ALARM_TYPE") + private String alarmType; + + /** + * 报警状态 + */ + @ApiModelProperty(value = "报警状态") + @TableField("ALARM_STATUS") + private String alarmStatus; + + /** + * 报警值 + */ + @ApiModelProperty(value = "报警值") + @TableField("ALARM_VALUE") + private String alarmValue; + + /** + * 报警图片 + */ + @ApiModelProperty(value = "报警图片") + @TableField("ALARM_IMAGE") + private String alarmImage; + + /** + * 报警内容 + */ + @ApiModelProperty(value = "报警内容") + @TableField("ALARM_CONTENT") + private String alarmContent; + + /** + * 报警时间 + */ + @ApiModelProperty(value = "报警时间") + @TableField("ALARM_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date alarmTime; + + /** + * 消警时间 + */ + @ApiModelProperty(value = "消警时间") + @TableField("CANCEL_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + /** + * 报警位置经度 + */ + @ApiModelProperty(value = "报警位置经度") + @TableField("ALARM_LNG") + private String alarmLng; + + /** + * 报警位置纬度 + */ + @ApiModelProperty(value = "报警位置纬度") + @TableField("ALARM_LAT") + private String alarmLat; + + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmStatusName; + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmTypeName; + @ApiModelProperty("作业名称") + @TableField(exist = false) + private String workTitle; + @ApiModelProperty("所属道路") + @TableField(exist = false) + private String workRoad; + @ApiModelProperty("作业状态") + @TableField(exist = false) + private String projectState; + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + @ApiModelProperty("负责人姓名") + @TableField(exist = false) + private String workPersonName; + @ApiModelProperty("负责人联系方式") + @TableField(exist = false) + private String workPersonPhoneNumber; + + + @Override + public String toString() { + return "BusAlarm{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + ", alarmType=" + alarmType + + ", alarmValue=" + alarmValue + + ", alarmStatus=" + alarmStatus + + ", alarmImage=" + alarmImage + + ", alarmContent=" + alarmContent + + ", alarmTime=" + alarmTime + + ", cancelTime=" + cancelTime + + ", alarmLng=" + alarmLng + + ", alarmLat=" + alarmLat + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java new file mode 100644 index 0000000..a0b7543 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + *

+ * 事件表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event") +@Data +@ApiModel("BusEvent") +public class BusEvent implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("事件ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件标题 + */ + @ApiModelProperty("事件名称") + @TableField("EVENT_TITLE") + private String eventTitle; + + /** + * 上报人员 + */ + @ApiModelProperty("上报人员") + @TableField("UPLOAD_NAME") + private String uploadName; + + /** + * 联系方式 + */ + @ApiModelProperty("联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 事件描述 + */ + @ApiModelProperty("事件描述") + @TableField("EVENT_DESCRIPTION") + private String eventDescription; + + @ApiModelProperty("经度") + @TableField("LNG") + private String lng; + + @ApiModelProperty("纬度") + @TableField("LAT") + private String lat; + + /** + * 事件上传时间 + */ + @ApiModelProperty("事件上传时间") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty("事件照片") + @TableField(exist = false) + private List imageList; + + + + @Override + public String toString() { + return "BusEvent{" + + "id=" + id + + ", eventTitle=" + eventTitle + + ", uploadName=" + uploadName + + ", phoneNumber=" + phoneNumber + + ", eventDescription=" + eventDescription + + ", lng=" + lng + + ", lat=" + lat + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java new file mode 100644 index 0000000..1e75245 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 事件图片表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event_image") +@Data +@ApiModel("BusEventImage") +public class BusEventImage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件ID + */ + @TableField("EVENT_ID") + private Long eventId; + + /** + * 报警图片 + */ + @TableField("IMAGE") + @ApiModelProperty("图片url") + private String image; + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java new file mode 100644 index 0000000..df89c70 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.core.base.json.DateDeserializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Device") +@TableName("br_device") +@Data +public class Device implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "设备ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty(value = "设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + /** + * 设备类型 + */ + @ApiModelProperty(value = "设备类型") + @TableField("DEVICE_TYPE") + private String deviceType; + + /** + * 设备批次 + */ + @ApiModelProperty(value = "设备批次") + @TableField("DEVICE_BATCH") + private String deviceBatch; + + /** + * 厂家 + */ + @ApiModelProperty(value = "厂家") + @TableField("MANUFACTURER") + private String manufacturer; + + /** + * 是否供电 + */ + @ApiModelProperty(value = "是否供电") + @TableField("IS_POWER_SUPPLY") + private String isPowerSupply; + + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间",dataType = "Date") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty(value = "设备类型名称") + @TableField(exist = false) + private String deviceTypeName; + + @ApiModelProperty(value = "是否供电名称") + @TableField(exist = false) + private String isPowerSupplyName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", deviceCode=" + deviceCode + + ", deviceType=" + deviceType + + ", deviceBatch=" + deviceBatch + + ", manufacturer=" + manufacturer + + ", isPowerSupply=" + isPowerSupply + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java new file mode 100644 index 0000000..5ee7015 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java @@ -0,0 +1,99 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 设备扩展信息表(安全树) + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Data +@TableName("br_device_ext") +public class DeviceExt implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 摄像头编号 + */ + @TableField("CAMERA_CODE") + private String cameraCode; + + /** + * 摄像头IP + */ + @TableField("CAMERA_IP") + private String cameraIp; + + /** + * 摄像头端口 + */ + @TableField("CAMERA_PORT") + private String cameraPort; + + /** + * 激甲编号 + */ + @TableField("GAS_CODE") + private String gasCode; + + /** + * 激甲IP + */ + @TableField("GAS_IP") + private String gasIp; + + /** + * 激甲端口 + */ + @TableField("GAS_PORT") + private String gasPort; + + /** + * 甲烷报警阈值 + */ + @TableField("GAS_THRESHOLD") + private String gasThreshold; + + @TableField(value = "HAT_LINING_CODE") + private String hatLiningCode; + + + @Override + public String toString() { + return "DeviceExt{" + + "id=" + id + + ", deviceId=" + deviceId + + ", cameraCode=" + cameraCode + + ", cameraIp=" + cameraIp + + ", cameraPort=" + cameraPort + + ", gasCode=" + gasCode + + ", gasIp=" + gasIp + + ", gasPort=" + gasPort + + ", gasThreshold=" + gasThreshold + + ", hatLiningCode=" + hatLiningCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java new file mode 100644 index 0000000..c4f3472 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java @@ -0,0 +1,62 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Data +@ApiModel("ProjectDevice") +@TableName("br_project_device") +public class ProjectDevice implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + @ApiModelProperty("设备ID(新增编辑时传)") + private Long deviceId; + + /** + * 设备编号 + */ + @TableField(exist = false) + @ApiModelProperty("设备编号(详情中展示,新增编辑不用传)") + private String deviceCode; + + @Override + public String toString() { + return "ProjectDevice{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java new file mode 100644 index 0000000..10b23c4 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java @@ -0,0 +1,104 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("ProjectWorker") +@TableName("br_project_worker") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ProjectWorker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 人员ID + */ + @ApiModelProperty("人员ID") + @TableField("WORKER_ID") + private Long workerId; + + /** + * 安全帽编号 + */ + @ApiModelProperty("安全帽编号") + @TableField("HAT_CODE") + private String hatCode; + + /** + * 背心编号 + */ + @ApiModelProperty("背心编号") + @TableField("VAST_CODE") + private String vastCode; + + /** + * 手环编号 + */ + @ApiModelProperty("手环编号") + @TableField("BRACELET_CODE") + private String braceletCode; + + @ApiModelProperty("人员姓名(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerName; + + @ApiModelProperty("人员部门ID(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptId; + + @ApiModelProperty("人员部门名称(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptName; + + @ApiModelProperty("人员联系方式(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerPhoneNumber; + + public ProjectWorker(Long projectId, Long workerId) { + this.projectId = projectId; + this.workerId = workerId; + } + + @Override + public String toString() { + return "ProjectWorker{" + + "id=" + id + + ", projectId=" + projectId + + ", workerId=" + workerId + + ", hatCode=" + hatCode + + ", vastCode=" + vastCode + + ", braceletCode=" + braceletCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java new file mode 100644 index 0000000..fa6f41d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 作业现场表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("WorkSiteInfo") +@TableName("br_work_site_info") +@Data +public class WorkSiteInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("作业现场ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业名称 + */ + @ApiModelProperty("作业名称") + @TableField("WORK_TITLE") + private String workTitle; + + /** + * 责任人 + */ + @ApiModelProperty("责任人(人员ID)") + @TableField("WORK_PERSON") + private Long workPerson; + + /** + * 作业描述 + */ + @ApiModelProperty("作业描述") + @TableField("WORK_SITE_DESC") + private String workSiteDesc; + + /** + * 作业状态 + */ + @ApiModelProperty("作业状态") + @TableField("PROJECT_STATE") + private String projectState; + + /** + * 所属道路 + */ + @ApiModelProperty("所属道路") + @TableField("WORK_ROAD") + private String workRoad; + + @TableField("IMAGE_URL") + private String imageUrl; + + @TableField("CREATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + @TableField("UPDATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("FINISH_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + @ApiModelProperty("负责人姓名(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonName; + + @ApiModelProperty("负责人联系方式(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonPhoneNumber; + + @ApiModelProperty("负责人所属部门ID(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private Long workPersonDeptId; + + @ApiModelProperty("负责人所属部门名称(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonDeptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + + @Override + public String toString() { + return "WorkSiteInfo{" + + "id=" + id + + ", workTitle=" + workTitle + + ", workPerson=" + workPerson + + ", workSiteDesc=" + workSiteDesc + + ", projectState=" + projectState + + ", imageUrl=" + imageUrl + + ", updateTime=" + updateTime + + ", workRoad=" + workRoad + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java new file mode 100644 index 0000000..28a4daa --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java @@ -0,0 +1,147 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Worker") +@TableName("br_worker") +@Data +public class Worker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "人员ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 姓名 + */ + @ApiModelProperty(value = "姓名") + @TableField("WORKER_NAME") + private String workerName; + + /** + * 性别 + */ + @ApiModelProperty(value = "性别") + @TableField("GENDER") + private String gender; + + /** + * 所属部门 + */ + @ApiModelProperty(value = "所属部门(人员管理)") + @TableField("DEPT_ID") + private Long deptId; + + /** + * 所属单位 + */ + @ApiModelProperty(value = "所属单位(入场申请中使用)") + @TableField("OWNER_SHIP") + private String ownerShip; + + /** + * 联系方式 + */ + @ApiModelProperty(value = "联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 证件号 + */ + @ApiModelProperty(value = "证件号") + @TableField("ID_CARD_NUMBER") + private String idCardNumber; + + /** + * 入场原因 + */ + @ApiModelProperty(value = "入场原因(入场申请中使用)") + @TableField("ENTER_REASON") + private String enterReason; + + /** + * 入场人脸照片 + */ + @ApiModelProperty(value = "人脸照片(照片路径)") + @TableField("WORKER_AVATAR") + private String workerAvatar; + + /** + * 申请入场时间 + */ + @ApiModelProperty(value = "注册时间/申请入场时间") + @TableField("CREATE_TIME") + private Date createTime; + + /** + * 人员类型 + */ + @ApiModelProperty(value = "人员类型(区分人员管理和入场申请)") + @TableField("WORKER_TYPE") + private String workerType; + + @ApiModelProperty(value = "性别名称") + @TableField(exist = false) + private String genderName; + + @ApiModelProperty(value = "部门名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @ApiModelProperty(value = "是否注册(0未注册;1已注册)",allowableValues = "0,1") + @TableField(exist = false) + private String isRegister; + + @Override + public String toString() { + return "Worker{" + + "id=" + id + + ", workerName=" + workerName + + ", gender=" + gender + + ", deptId=" + deptId + + ", ownerShip=" + ownerShip + + ", phoneNumber=" + phoneNumber + + ", idCardNumber=" + idCardNumber + + ", enterReason=" + enterReason + + ", workerAvatar=" + workerAvatar + + ", createTime=" + createTime + + ", workerType=" + workerType + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java new file mode 100644 index 0000000..9801742 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警记录表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusAlarmMapper extends BaseMapper { + + Page listPage(Page page,@Param("ew") QueryWrapper queryWrapper); + + void cancelAlarm(@Param("deviceId")Long deviceId,@Param("alarmType") String alarmType); + + List alarmCount(@Param("projectId")Long projectId, @Param("alarmStatus")String alarmStatus); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java new file mode 100644 index 0000000..9590b7d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件图片表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventImageMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java new file mode 100644 index 0000000..3c85edf --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java new file mode 100644 index 0000000..4ca9212 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 设备扩展信息表(安全树) Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface DeviceExtMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java new file mode 100644 index 0000000..444c0c5 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Mapper +public interface DeviceMapper extends BaseMapper { + + Page listDetailPage(Page page,@Param("ew") QueryWrapper ew); + + List selectProjectDevice(@Param("projectId") Long projectId); + + List selectHelmetList(@Param("deviceType")String deviceType); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java new file mode 100644 index 0000000..1d0c14e --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectDeviceMapper extends BaseMapper { + List selectDetailByProjectId(@Param("projectId") Long projectId); + + List selectDeviceLocationList(@Param("projectId") Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java new file mode 100644 index 0000000..58583d1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectWorkerMapper extends BaseMapper { + + List selectDetailByProjectId(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + + List selectWorkerLocationList(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java new file mode 100644 index 0000000..a4934d2 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +/** + *

+ * 作业现场表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkSiteInfoMapper extends BaseMapper { + + Page selectListPage(Page page,@Param("ew") QueryWrapper ew); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java new file mode 100644 index 0000000..258fb12 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkerMapper extends BaseMapper { + + + Page selectListPage(Page page, @Param("ew") QueryWrapper ew); + + List selectWorkerAvatars(@Param("projectId")Long projectId); + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml new file mode 100644 index 0000000..595088a --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml @@ -0,0 +1,58 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml new file mode 100644 index 0000000..fbc3db3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml new file mode 100644 index 0000000..627d573 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml new file mode 100644 index 0000000..5321d1c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml new file mode 100644 index 0000000..94262e1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml @@ -0,0 +1,97 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml new file mode 100644 index 0000000..c6d1c24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml @@ -0,0 +1,29 @@ + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml new file mode 100644 index 0000000..8d2de10 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml new file mode 100644 index 0000000..8f01326 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml @@ -0,0 +1,26 @@ + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml new file mode 100644 index 0000000..3e28b39 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml @@ -0,0 +1,56 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java new file mode 100644 index 0000000..f63c19c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 报警记录表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusAlarmService extends IService { + + boolean alarmUpload(AlarmUpload alarmUpload); + + Page listPage(Page page,QueryWrapper queryWrapper); + + List alarmCount(Long projectId,String alarmStatus); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java new file mode 100644 index 0000000..b1187ed --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 事件图片表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusEventImageService extends IService { + + boolean saveBusEventImages(Long eventId, List imageList); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java new file mode 100644 index 0000000..85c48d0 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 事件表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusEventService extends IService { + + boolean saveBusEvent(BusEvent busEvent); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java new file mode 100644 index 0000000..6fc5361 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 设备扩展信息表(安全树) 服务类 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface IDeviceExtService extends IService { + + boolean saveDeviceExt(DeviceDetailDTO deviceDetailDTO); + + boolean updateDeviceExt(DeviceDetailDTO deviceDetailDTO); + + boolean removeByDeviceIds(List deviceIds); + + boolean setGasThreshold(String gasIp,String gasPort,String threshold); + + String getGasThreshold(String gasIp,String gasPort); + + Long selectByGasIpPort(String gasIp,String gasPort); + + Long selectByCameraIpPort(String cameraIp,String cameraPort); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java new file mode 100644 index 0000000..9e62756 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java @@ -0,0 +1,32 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IDeviceService extends IService { + + boolean saveDevice(DeviceDetailDTO deviceDetailDTO); + + boolean updateDevice(DeviceDetailDTO deviceDetailDTO); + + boolean deleteDevices(List deviceIds); + + Page listPage(Page page, QueryWrapper queryWrapper, String status,Long projectId); + + List selectProjectDevice(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java new file mode 100644 index 0000000..8599411 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IProjectDeviceService extends IService { + + boolean saveProjectDeviceList(Long projectId, List projectDeviceList); + + boolean updateProjectDeviceList(Long projectId, List projectDeviceList); + + boolean deleteByProjectId(Long projectId); + + boolean deleteByProjectIds(List projectIds); + + List selectDetailByProjectId(Long projectId); + + Long selectProjectIdByDevice(Long deviceId); + + List selectDeviceLocationList(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java new file mode 100644 index 0000000..e921bc3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IProjectWorkerService extends IService { + + boolean saveProjectWorkerList(Long projectId, List projectWorkerList); + + boolean updateProjectWorkerList(Long projectId, List projectWorkerList); + + boolean deleteByProjectId(Long projectId); + + boolean deleteByProjectIds(List projectIds); + + List selectDetailByProjectId(Long projectId,String workerType); + + List selectWorkerLocationDTO(Long projectId); +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java new file mode 100644 index 0000000..73d7799 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.dto; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "AlarmUpload",description = "报警上传") +@Data +public class AlarmUpload { + + @ApiModelProperty(value = "摄像头ip") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + @ApiModelProperty(value = "安全树甲烷设备ip") + private String gasIp; + @ApiModelProperty(value = "安全树甲烷设备端口") + private String gasPort; + @ApiModelProperty(value = "报警值") + private String alarmValue; + @ApiModelProperty(value = "报警时间") + private String alarmTime; + @ApiModelProperty(value = "报警类型") + private String alarmType; + @ApiModelProperty(value = "报警图片") + private String alarmImage; + @ApiModelProperty(value = "报警内容") + private String alarmContent; + + @Override + public String toString() { + return "AlarmUpload{" + + "cameraIp='" + cameraIp + '\'' + + ", cameraPort='" + cameraPort + '\'' + + ", gasIp='" + gasIp + '\'' + + ", gasPort='" + gasPort + '\'' + + ", alarmValue='" + alarmValue + '\'' + + ", alarmTime='" + alarmTime + '\'' + + ", alarmType='" + alarmType + '\'' + + ", alarmImage='" + (StrUtil.isNotEmpty(alarmImage) ? alarmImage.substring(0,50) : "null") + '\'' + + ", alarmContent='" + alarmContent + '\'' + + '}'; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java new file mode 100644 index 0000000..ea518d9 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.modular.system.entity.Device; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("DeviceDetailDTO") +@Data +public class DeviceDetailDTO extends Device { + + @ApiModelProperty(value = "摄像头编号") + private String cameraCode; + + @ApiModelProperty(value = "摄像头IP") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + + @ApiModelProperty(value = "激甲编号") + private String gasCode; + + @ApiModelProperty(value = "激甲IP") + private String gasIp; + + @ApiModelProperty(value = "激甲端口") + private String gasPort; + + @ApiModelProperty(value = "智能帽衬编号") + private String hatLiningCode; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java new file mode 100644 index 0000000..29378ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("WorkSiteDetailDTO") +public class WorkSiteDetailDTO extends WorkSiteInfo { + + @ApiModelProperty(value = "安全树列表",dataType = "ProjectDevice") + private List deviceList; + + @ApiModelProperty(value = "人员列表",dataType = "ProjectWorker") + private List workerList; + + + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java new file mode 100644 index 0000000..6fd7b24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java @@ -0,0 +1,68 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "WorkerLocationDTO",description = "人员位置列表(首页)") +@Data +public class WorkerLocationDTO { + + @ApiModelProperty("人员ID") + private Long workerId; + + @ApiModelProperty("人员姓名") + private String workerName; + + @ApiModelProperty("安全帽编号") + private String hatCode; + + @ApiModelProperty("安全帽ID") + private Long hatId; + + @ApiModelProperty("背心编号") + private String vastCode; + + @ApiModelProperty("手环编号") + private String braceletCode; + + @ApiModelProperty("位置") + private String location; + + @ApiModelProperty("时间") + private String time; + + @ApiModelProperty("经度") + private String lng; + + @ApiModelProperty("纬度") + private String lat; + + @ApiModelProperty("心率") + private String heartRate; + + @ApiModelProperty("血氧") + private String bloodOxygen; + + @ApiModelProperty("一氧化碳") + private String co; + + @ApiModelProperty("甲烷") + private String gas; + + @ApiModelProperty("硫化氢") + private String h2s; + + @ApiModelProperty("氧气") + private String o2; + + @ApiModelProperty("信号") + private String signal; + + @ApiModelProperty("电量") + private String cell; + + @ApiModelProperty("是否报警") + private boolean alarmFlag; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java new file mode 100644 index 0000000..efb4a23 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java @@ -0,0 +1,159 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 报警记录表 + *

+ * + * @author zyj + * @since 2023-05-16 + */ +@Data +@ApiModel("Alarm") +@TableName("br_bus_alarm") +public class BusAlarm implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @ApiModelProperty(value = "设备ID") + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 报警类型 + */ + @ApiModelProperty(value = "报警类型") + @TableField("ALARM_TYPE") + private String alarmType; + + /** + * 报警状态 + */ + @ApiModelProperty(value = "报警状态") + @TableField("ALARM_STATUS") + private String alarmStatus; + + /** + * 报警值 + */ + @ApiModelProperty(value = "报警值") + @TableField("ALARM_VALUE") + private String alarmValue; + + /** + * 报警图片 + */ + @ApiModelProperty(value = "报警图片") + @TableField("ALARM_IMAGE") + private String alarmImage; + + /** + * 报警内容 + */ + @ApiModelProperty(value = "报警内容") + @TableField("ALARM_CONTENT") + private String alarmContent; + + /** + * 报警时间 + */ + @ApiModelProperty(value = "报警时间") + @TableField("ALARM_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date alarmTime; + + /** + * 消警时间 + */ + @ApiModelProperty(value = "消警时间") + @TableField("CANCEL_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + /** + * 报警位置经度 + */ + @ApiModelProperty(value = "报警位置经度") + @TableField("ALARM_LNG") + private String alarmLng; + + /** + * 报警位置纬度 + */ + @ApiModelProperty(value = "报警位置纬度") + @TableField("ALARM_LAT") + private String alarmLat; + + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmStatusName; + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmTypeName; + @ApiModelProperty("作业名称") + @TableField(exist = false) + private String workTitle; + @ApiModelProperty("所属道路") + @TableField(exist = false) + private String workRoad; + @ApiModelProperty("作业状态") + @TableField(exist = false) + private String projectState; + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + @ApiModelProperty("负责人姓名") + @TableField(exist = false) + private String workPersonName; + @ApiModelProperty("负责人联系方式") + @TableField(exist = false) + private String workPersonPhoneNumber; + + + @Override + public String toString() { + return "BusAlarm{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + ", alarmType=" + alarmType + + ", alarmValue=" + alarmValue + + ", alarmStatus=" + alarmStatus + + ", alarmImage=" + alarmImage + + ", alarmContent=" + alarmContent + + ", alarmTime=" + alarmTime + + ", cancelTime=" + cancelTime + + ", alarmLng=" + alarmLng + + ", alarmLat=" + alarmLat + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java new file mode 100644 index 0000000..a0b7543 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + *

+ * 事件表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event") +@Data +@ApiModel("BusEvent") +public class BusEvent implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("事件ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件标题 + */ + @ApiModelProperty("事件名称") + @TableField("EVENT_TITLE") + private String eventTitle; + + /** + * 上报人员 + */ + @ApiModelProperty("上报人员") + @TableField("UPLOAD_NAME") + private String uploadName; + + /** + * 联系方式 + */ + @ApiModelProperty("联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 事件描述 + */ + @ApiModelProperty("事件描述") + @TableField("EVENT_DESCRIPTION") + private String eventDescription; + + @ApiModelProperty("经度") + @TableField("LNG") + private String lng; + + @ApiModelProperty("纬度") + @TableField("LAT") + private String lat; + + /** + * 事件上传时间 + */ + @ApiModelProperty("事件上传时间") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty("事件照片") + @TableField(exist = false) + private List imageList; + + + + @Override + public String toString() { + return "BusEvent{" + + "id=" + id + + ", eventTitle=" + eventTitle + + ", uploadName=" + uploadName + + ", phoneNumber=" + phoneNumber + + ", eventDescription=" + eventDescription + + ", lng=" + lng + + ", lat=" + lat + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java new file mode 100644 index 0000000..1e75245 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 事件图片表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event_image") +@Data +@ApiModel("BusEventImage") +public class BusEventImage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件ID + */ + @TableField("EVENT_ID") + private Long eventId; + + /** + * 报警图片 + */ + @TableField("IMAGE") + @ApiModelProperty("图片url") + private String image; + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java new file mode 100644 index 0000000..df89c70 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.core.base.json.DateDeserializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Device") +@TableName("br_device") +@Data +public class Device implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "设备ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty(value = "设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + /** + * 设备类型 + */ + @ApiModelProperty(value = "设备类型") + @TableField("DEVICE_TYPE") + private String deviceType; + + /** + * 设备批次 + */ + @ApiModelProperty(value = "设备批次") + @TableField("DEVICE_BATCH") + private String deviceBatch; + + /** + * 厂家 + */ + @ApiModelProperty(value = "厂家") + @TableField("MANUFACTURER") + private String manufacturer; + + /** + * 是否供电 + */ + @ApiModelProperty(value = "是否供电") + @TableField("IS_POWER_SUPPLY") + private String isPowerSupply; + + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间",dataType = "Date") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty(value = "设备类型名称") + @TableField(exist = false) + private String deviceTypeName; + + @ApiModelProperty(value = "是否供电名称") + @TableField(exist = false) + private String isPowerSupplyName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", deviceCode=" + deviceCode + + ", deviceType=" + deviceType + + ", deviceBatch=" + deviceBatch + + ", manufacturer=" + manufacturer + + ", isPowerSupply=" + isPowerSupply + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java new file mode 100644 index 0000000..5ee7015 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java @@ -0,0 +1,99 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 设备扩展信息表(安全树) + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Data +@TableName("br_device_ext") +public class DeviceExt implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 摄像头编号 + */ + @TableField("CAMERA_CODE") + private String cameraCode; + + /** + * 摄像头IP + */ + @TableField("CAMERA_IP") + private String cameraIp; + + /** + * 摄像头端口 + */ + @TableField("CAMERA_PORT") + private String cameraPort; + + /** + * 激甲编号 + */ + @TableField("GAS_CODE") + private String gasCode; + + /** + * 激甲IP + */ + @TableField("GAS_IP") + private String gasIp; + + /** + * 激甲端口 + */ + @TableField("GAS_PORT") + private String gasPort; + + /** + * 甲烷报警阈值 + */ + @TableField("GAS_THRESHOLD") + private String gasThreshold; + + @TableField(value = "HAT_LINING_CODE") + private String hatLiningCode; + + + @Override + public String toString() { + return "DeviceExt{" + + "id=" + id + + ", deviceId=" + deviceId + + ", cameraCode=" + cameraCode + + ", cameraIp=" + cameraIp + + ", cameraPort=" + cameraPort + + ", gasCode=" + gasCode + + ", gasIp=" + gasIp + + ", gasPort=" + gasPort + + ", gasThreshold=" + gasThreshold + + ", hatLiningCode=" + hatLiningCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java new file mode 100644 index 0000000..c4f3472 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java @@ -0,0 +1,62 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Data +@ApiModel("ProjectDevice") +@TableName("br_project_device") +public class ProjectDevice implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + @ApiModelProperty("设备ID(新增编辑时传)") + private Long deviceId; + + /** + * 设备编号 + */ + @TableField(exist = false) + @ApiModelProperty("设备编号(详情中展示,新增编辑不用传)") + private String deviceCode; + + @Override + public String toString() { + return "ProjectDevice{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java new file mode 100644 index 0000000..10b23c4 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java @@ -0,0 +1,104 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("ProjectWorker") +@TableName("br_project_worker") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ProjectWorker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 人员ID + */ + @ApiModelProperty("人员ID") + @TableField("WORKER_ID") + private Long workerId; + + /** + * 安全帽编号 + */ + @ApiModelProperty("安全帽编号") + @TableField("HAT_CODE") + private String hatCode; + + /** + * 背心编号 + */ + @ApiModelProperty("背心编号") + @TableField("VAST_CODE") + private String vastCode; + + /** + * 手环编号 + */ + @ApiModelProperty("手环编号") + @TableField("BRACELET_CODE") + private String braceletCode; + + @ApiModelProperty("人员姓名(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerName; + + @ApiModelProperty("人员部门ID(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptId; + + @ApiModelProperty("人员部门名称(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptName; + + @ApiModelProperty("人员联系方式(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerPhoneNumber; + + public ProjectWorker(Long projectId, Long workerId) { + this.projectId = projectId; + this.workerId = workerId; + } + + @Override + public String toString() { + return "ProjectWorker{" + + "id=" + id + + ", projectId=" + projectId + + ", workerId=" + workerId + + ", hatCode=" + hatCode + + ", vastCode=" + vastCode + + ", braceletCode=" + braceletCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java new file mode 100644 index 0000000..fa6f41d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 作业现场表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("WorkSiteInfo") +@TableName("br_work_site_info") +@Data +public class WorkSiteInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("作业现场ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业名称 + */ + @ApiModelProperty("作业名称") + @TableField("WORK_TITLE") + private String workTitle; + + /** + * 责任人 + */ + @ApiModelProperty("责任人(人员ID)") + @TableField("WORK_PERSON") + private Long workPerson; + + /** + * 作业描述 + */ + @ApiModelProperty("作业描述") + @TableField("WORK_SITE_DESC") + private String workSiteDesc; + + /** + * 作业状态 + */ + @ApiModelProperty("作业状态") + @TableField("PROJECT_STATE") + private String projectState; + + /** + * 所属道路 + */ + @ApiModelProperty("所属道路") + @TableField("WORK_ROAD") + private String workRoad; + + @TableField("IMAGE_URL") + private String imageUrl; + + @TableField("CREATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + @TableField("UPDATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("FINISH_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + @ApiModelProperty("负责人姓名(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonName; + + @ApiModelProperty("负责人联系方式(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonPhoneNumber; + + @ApiModelProperty("负责人所属部门ID(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private Long workPersonDeptId; + + @ApiModelProperty("负责人所属部门名称(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonDeptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + + @Override + public String toString() { + return "WorkSiteInfo{" + + "id=" + id + + ", workTitle=" + workTitle + + ", workPerson=" + workPerson + + ", workSiteDesc=" + workSiteDesc + + ", projectState=" + projectState + + ", imageUrl=" + imageUrl + + ", updateTime=" + updateTime + + ", workRoad=" + workRoad + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java new file mode 100644 index 0000000..28a4daa --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java @@ -0,0 +1,147 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Worker") +@TableName("br_worker") +@Data +public class Worker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "人员ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 姓名 + */ + @ApiModelProperty(value = "姓名") + @TableField("WORKER_NAME") + private String workerName; + + /** + * 性别 + */ + @ApiModelProperty(value = "性别") + @TableField("GENDER") + private String gender; + + /** + * 所属部门 + */ + @ApiModelProperty(value = "所属部门(人员管理)") + @TableField("DEPT_ID") + private Long deptId; + + /** + * 所属单位 + */ + @ApiModelProperty(value = "所属单位(入场申请中使用)") + @TableField("OWNER_SHIP") + private String ownerShip; + + /** + * 联系方式 + */ + @ApiModelProperty(value = "联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 证件号 + */ + @ApiModelProperty(value = "证件号") + @TableField("ID_CARD_NUMBER") + private String idCardNumber; + + /** + * 入场原因 + */ + @ApiModelProperty(value = "入场原因(入场申请中使用)") + @TableField("ENTER_REASON") + private String enterReason; + + /** + * 入场人脸照片 + */ + @ApiModelProperty(value = "人脸照片(照片路径)") + @TableField("WORKER_AVATAR") + private String workerAvatar; + + /** + * 申请入场时间 + */ + @ApiModelProperty(value = "注册时间/申请入场时间") + @TableField("CREATE_TIME") + private Date createTime; + + /** + * 人员类型 + */ + @ApiModelProperty(value = "人员类型(区分人员管理和入场申请)") + @TableField("WORKER_TYPE") + private String workerType; + + @ApiModelProperty(value = "性别名称") + @TableField(exist = false) + private String genderName; + + @ApiModelProperty(value = "部门名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @ApiModelProperty(value = "是否注册(0未注册;1已注册)",allowableValues = "0,1") + @TableField(exist = false) + private String isRegister; + + @Override + public String toString() { + return "Worker{" + + "id=" + id + + ", workerName=" + workerName + + ", gender=" + gender + + ", deptId=" + deptId + + ", ownerShip=" + ownerShip + + ", phoneNumber=" + phoneNumber + + ", idCardNumber=" + idCardNumber + + ", enterReason=" + enterReason + + ", workerAvatar=" + workerAvatar + + ", createTime=" + createTime + + ", workerType=" + workerType + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java new file mode 100644 index 0000000..9801742 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警记录表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusAlarmMapper extends BaseMapper { + + Page listPage(Page page,@Param("ew") QueryWrapper queryWrapper); + + void cancelAlarm(@Param("deviceId")Long deviceId,@Param("alarmType") String alarmType); + + List alarmCount(@Param("projectId")Long projectId, @Param("alarmStatus")String alarmStatus); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java new file mode 100644 index 0000000..9590b7d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件图片表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventImageMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java new file mode 100644 index 0000000..3c85edf --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java new file mode 100644 index 0000000..4ca9212 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 设备扩展信息表(安全树) Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface DeviceExtMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java new file mode 100644 index 0000000..444c0c5 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Mapper +public interface DeviceMapper extends BaseMapper { + + Page listDetailPage(Page page,@Param("ew") QueryWrapper ew); + + List selectProjectDevice(@Param("projectId") Long projectId); + + List selectHelmetList(@Param("deviceType")String deviceType); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java new file mode 100644 index 0000000..1d0c14e --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectDeviceMapper extends BaseMapper { + List selectDetailByProjectId(@Param("projectId") Long projectId); + + List selectDeviceLocationList(@Param("projectId") Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java new file mode 100644 index 0000000..58583d1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectWorkerMapper extends BaseMapper { + + List selectDetailByProjectId(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + + List selectWorkerLocationList(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java new file mode 100644 index 0000000..a4934d2 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +/** + *

+ * 作业现场表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkSiteInfoMapper extends BaseMapper { + + Page selectListPage(Page page,@Param("ew") QueryWrapper ew); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java new file mode 100644 index 0000000..258fb12 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkerMapper extends BaseMapper { + + + Page selectListPage(Page page, @Param("ew") QueryWrapper ew); + + List selectWorkerAvatars(@Param("projectId")Long projectId); + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml new file mode 100644 index 0000000..595088a --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml @@ -0,0 +1,58 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml new file mode 100644 index 0000000..fbc3db3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml new file mode 100644 index 0000000..627d573 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml new file mode 100644 index 0000000..5321d1c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml new file mode 100644 index 0000000..94262e1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml @@ -0,0 +1,97 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml new file mode 100644 index 0000000..c6d1c24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml @@ -0,0 +1,29 @@ + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml new file mode 100644 index 0000000..8d2de10 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml new file mode 100644 index 0000000..8f01326 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml @@ -0,0 +1,26 @@ + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml new file mode 100644 index 0000000..3e28b39 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml @@ -0,0 +1,56 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java new file mode 100644 index 0000000..f63c19c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 报警记录表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusAlarmService extends IService { + + boolean alarmUpload(AlarmUpload alarmUpload); + + Page listPage(Page page,QueryWrapper queryWrapper); + + List alarmCount(Long projectId,String alarmStatus); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java new file mode 100644 index 0000000..b1187ed --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 事件图片表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusEventImageService extends IService { + + boolean saveBusEventImages(Long eventId, List imageList); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java new file mode 100644 index 0000000..85c48d0 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 事件表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusEventService extends IService { + + boolean saveBusEvent(BusEvent busEvent); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java new file mode 100644 index 0000000..6fc5361 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 设备扩展信息表(安全树) 服务类 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface IDeviceExtService extends IService { + + boolean saveDeviceExt(DeviceDetailDTO deviceDetailDTO); + + boolean updateDeviceExt(DeviceDetailDTO deviceDetailDTO); + + boolean removeByDeviceIds(List deviceIds); + + boolean setGasThreshold(String gasIp,String gasPort,String threshold); + + String getGasThreshold(String gasIp,String gasPort); + + Long selectByGasIpPort(String gasIp,String gasPort); + + Long selectByCameraIpPort(String cameraIp,String cameraPort); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java new file mode 100644 index 0000000..9e62756 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java @@ -0,0 +1,32 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IDeviceService extends IService { + + boolean saveDevice(DeviceDetailDTO deviceDetailDTO); + + boolean updateDevice(DeviceDetailDTO deviceDetailDTO); + + boolean deleteDevices(List deviceIds); + + Page listPage(Page page, QueryWrapper queryWrapper, String status,Long projectId); + + List selectProjectDevice(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java new file mode 100644 index 0000000..8599411 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IProjectDeviceService extends IService { + + boolean saveProjectDeviceList(Long projectId, List projectDeviceList); + + boolean updateProjectDeviceList(Long projectId, List projectDeviceList); + + boolean deleteByProjectId(Long projectId); + + boolean deleteByProjectIds(List projectIds); + + List selectDetailByProjectId(Long projectId); + + Long selectProjectIdByDevice(Long deviceId); + + List selectDeviceLocationList(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java new file mode 100644 index 0000000..e921bc3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IProjectWorkerService extends IService { + + boolean saveProjectWorkerList(Long projectId, List projectWorkerList); + + boolean updateProjectWorkerList(Long projectId, List projectWorkerList); + + boolean deleteByProjectId(Long projectId); + + boolean deleteByProjectIds(List projectIds); + + List selectDetailByProjectId(Long projectId,String workerType); + + List selectWorkerLocationDTO(Long projectId); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java new file mode 100644 index 0000000..58a8590 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; +/** + *

+ * 作业现场表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IWorkSiteInfoService extends IService { + + boolean addWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO); + + boolean updateWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO); + + boolean deleteProjects(List projectIds); + + WorkSiteDetailDTO getWorkSiteDetail(Long projectId); + + Page selectListPage(Page page, QueryWrapper queryWrapper); + + boolean start(Long projectId); + + boolean finish(Long projectId); + +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java new file mode 100644 index 0000000..73d7799 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.dto; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "AlarmUpload",description = "报警上传") +@Data +public class AlarmUpload { + + @ApiModelProperty(value = "摄像头ip") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + @ApiModelProperty(value = "安全树甲烷设备ip") + private String gasIp; + @ApiModelProperty(value = "安全树甲烷设备端口") + private String gasPort; + @ApiModelProperty(value = "报警值") + private String alarmValue; + @ApiModelProperty(value = "报警时间") + private String alarmTime; + @ApiModelProperty(value = "报警类型") + private String alarmType; + @ApiModelProperty(value = "报警图片") + private String alarmImage; + @ApiModelProperty(value = "报警内容") + private String alarmContent; + + @Override + public String toString() { + return "AlarmUpload{" + + "cameraIp='" + cameraIp + '\'' + + ", cameraPort='" + cameraPort + '\'' + + ", gasIp='" + gasIp + '\'' + + ", gasPort='" + gasPort + '\'' + + ", alarmValue='" + alarmValue + '\'' + + ", alarmTime='" + alarmTime + '\'' + + ", alarmType='" + alarmType + '\'' + + ", alarmImage='" + (StrUtil.isNotEmpty(alarmImage) ? alarmImage.substring(0,50) : "null") + '\'' + + ", alarmContent='" + alarmContent + '\'' + + '}'; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java new file mode 100644 index 0000000..ea518d9 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.modular.system.entity.Device; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("DeviceDetailDTO") +@Data +public class DeviceDetailDTO extends Device { + + @ApiModelProperty(value = "摄像头编号") + private String cameraCode; + + @ApiModelProperty(value = "摄像头IP") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + + @ApiModelProperty(value = "激甲编号") + private String gasCode; + + @ApiModelProperty(value = "激甲IP") + private String gasIp; + + @ApiModelProperty(value = "激甲端口") + private String gasPort; + + @ApiModelProperty(value = "智能帽衬编号") + private String hatLiningCode; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java new file mode 100644 index 0000000..29378ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("WorkSiteDetailDTO") +public class WorkSiteDetailDTO extends WorkSiteInfo { + + @ApiModelProperty(value = "安全树列表",dataType = "ProjectDevice") + private List deviceList; + + @ApiModelProperty(value = "人员列表",dataType = "ProjectWorker") + private List workerList; + + + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java new file mode 100644 index 0000000..6fd7b24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java @@ -0,0 +1,68 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "WorkerLocationDTO",description = "人员位置列表(首页)") +@Data +public class WorkerLocationDTO { + + @ApiModelProperty("人员ID") + private Long workerId; + + @ApiModelProperty("人员姓名") + private String workerName; + + @ApiModelProperty("安全帽编号") + private String hatCode; + + @ApiModelProperty("安全帽ID") + private Long hatId; + + @ApiModelProperty("背心编号") + private String vastCode; + + @ApiModelProperty("手环编号") + private String braceletCode; + + @ApiModelProperty("位置") + private String location; + + @ApiModelProperty("时间") + private String time; + + @ApiModelProperty("经度") + private String lng; + + @ApiModelProperty("纬度") + private String lat; + + @ApiModelProperty("心率") + private String heartRate; + + @ApiModelProperty("血氧") + private String bloodOxygen; + + @ApiModelProperty("一氧化碳") + private String co; + + @ApiModelProperty("甲烷") + private String gas; + + @ApiModelProperty("硫化氢") + private String h2s; + + @ApiModelProperty("氧气") + private String o2; + + @ApiModelProperty("信号") + private String signal; + + @ApiModelProperty("电量") + private String cell; + + @ApiModelProperty("是否报警") + private boolean alarmFlag; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java new file mode 100644 index 0000000..efb4a23 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java @@ -0,0 +1,159 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 报警记录表 + *

+ * + * @author zyj + * @since 2023-05-16 + */ +@Data +@ApiModel("Alarm") +@TableName("br_bus_alarm") +public class BusAlarm implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @ApiModelProperty(value = "设备ID") + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 报警类型 + */ + @ApiModelProperty(value = "报警类型") + @TableField("ALARM_TYPE") + private String alarmType; + + /** + * 报警状态 + */ + @ApiModelProperty(value = "报警状态") + @TableField("ALARM_STATUS") + private String alarmStatus; + + /** + * 报警值 + */ + @ApiModelProperty(value = "报警值") + @TableField("ALARM_VALUE") + private String alarmValue; + + /** + * 报警图片 + */ + @ApiModelProperty(value = "报警图片") + @TableField("ALARM_IMAGE") + private String alarmImage; + + /** + * 报警内容 + */ + @ApiModelProperty(value = "报警内容") + @TableField("ALARM_CONTENT") + private String alarmContent; + + /** + * 报警时间 + */ + @ApiModelProperty(value = "报警时间") + @TableField("ALARM_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date alarmTime; + + /** + * 消警时间 + */ + @ApiModelProperty(value = "消警时间") + @TableField("CANCEL_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + /** + * 报警位置经度 + */ + @ApiModelProperty(value = "报警位置经度") + @TableField("ALARM_LNG") + private String alarmLng; + + /** + * 报警位置纬度 + */ + @ApiModelProperty(value = "报警位置纬度") + @TableField("ALARM_LAT") + private String alarmLat; + + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmStatusName; + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmTypeName; + @ApiModelProperty("作业名称") + @TableField(exist = false) + private String workTitle; + @ApiModelProperty("所属道路") + @TableField(exist = false) + private String workRoad; + @ApiModelProperty("作业状态") + @TableField(exist = false) + private String projectState; + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + @ApiModelProperty("负责人姓名") + @TableField(exist = false) + private String workPersonName; + @ApiModelProperty("负责人联系方式") + @TableField(exist = false) + private String workPersonPhoneNumber; + + + @Override + public String toString() { + return "BusAlarm{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + ", alarmType=" + alarmType + + ", alarmValue=" + alarmValue + + ", alarmStatus=" + alarmStatus + + ", alarmImage=" + alarmImage + + ", alarmContent=" + alarmContent + + ", alarmTime=" + alarmTime + + ", cancelTime=" + cancelTime + + ", alarmLng=" + alarmLng + + ", alarmLat=" + alarmLat + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java new file mode 100644 index 0000000..a0b7543 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + *

+ * 事件表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event") +@Data +@ApiModel("BusEvent") +public class BusEvent implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("事件ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件标题 + */ + @ApiModelProperty("事件名称") + @TableField("EVENT_TITLE") + private String eventTitle; + + /** + * 上报人员 + */ + @ApiModelProperty("上报人员") + @TableField("UPLOAD_NAME") + private String uploadName; + + /** + * 联系方式 + */ + @ApiModelProperty("联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 事件描述 + */ + @ApiModelProperty("事件描述") + @TableField("EVENT_DESCRIPTION") + private String eventDescription; + + @ApiModelProperty("经度") + @TableField("LNG") + private String lng; + + @ApiModelProperty("纬度") + @TableField("LAT") + private String lat; + + /** + * 事件上传时间 + */ + @ApiModelProperty("事件上传时间") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty("事件照片") + @TableField(exist = false) + private List imageList; + + + + @Override + public String toString() { + return "BusEvent{" + + "id=" + id + + ", eventTitle=" + eventTitle + + ", uploadName=" + uploadName + + ", phoneNumber=" + phoneNumber + + ", eventDescription=" + eventDescription + + ", lng=" + lng + + ", lat=" + lat + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java new file mode 100644 index 0000000..1e75245 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 事件图片表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event_image") +@Data +@ApiModel("BusEventImage") +public class BusEventImage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件ID + */ + @TableField("EVENT_ID") + private Long eventId; + + /** + * 报警图片 + */ + @TableField("IMAGE") + @ApiModelProperty("图片url") + private String image; + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java new file mode 100644 index 0000000..df89c70 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.core.base.json.DateDeserializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Device") +@TableName("br_device") +@Data +public class Device implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "设备ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty(value = "设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + /** + * 设备类型 + */ + @ApiModelProperty(value = "设备类型") + @TableField("DEVICE_TYPE") + private String deviceType; + + /** + * 设备批次 + */ + @ApiModelProperty(value = "设备批次") + @TableField("DEVICE_BATCH") + private String deviceBatch; + + /** + * 厂家 + */ + @ApiModelProperty(value = "厂家") + @TableField("MANUFACTURER") + private String manufacturer; + + /** + * 是否供电 + */ + @ApiModelProperty(value = "是否供电") + @TableField("IS_POWER_SUPPLY") + private String isPowerSupply; + + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间",dataType = "Date") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty(value = "设备类型名称") + @TableField(exist = false) + private String deviceTypeName; + + @ApiModelProperty(value = "是否供电名称") + @TableField(exist = false) + private String isPowerSupplyName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", deviceCode=" + deviceCode + + ", deviceType=" + deviceType + + ", deviceBatch=" + deviceBatch + + ", manufacturer=" + manufacturer + + ", isPowerSupply=" + isPowerSupply + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java new file mode 100644 index 0000000..5ee7015 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java @@ -0,0 +1,99 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 设备扩展信息表(安全树) + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Data +@TableName("br_device_ext") +public class DeviceExt implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 摄像头编号 + */ + @TableField("CAMERA_CODE") + private String cameraCode; + + /** + * 摄像头IP + */ + @TableField("CAMERA_IP") + private String cameraIp; + + /** + * 摄像头端口 + */ + @TableField("CAMERA_PORT") + private String cameraPort; + + /** + * 激甲编号 + */ + @TableField("GAS_CODE") + private String gasCode; + + /** + * 激甲IP + */ + @TableField("GAS_IP") + private String gasIp; + + /** + * 激甲端口 + */ + @TableField("GAS_PORT") + private String gasPort; + + /** + * 甲烷报警阈值 + */ + @TableField("GAS_THRESHOLD") + private String gasThreshold; + + @TableField(value = "HAT_LINING_CODE") + private String hatLiningCode; + + + @Override + public String toString() { + return "DeviceExt{" + + "id=" + id + + ", deviceId=" + deviceId + + ", cameraCode=" + cameraCode + + ", cameraIp=" + cameraIp + + ", cameraPort=" + cameraPort + + ", gasCode=" + gasCode + + ", gasIp=" + gasIp + + ", gasPort=" + gasPort + + ", gasThreshold=" + gasThreshold + + ", hatLiningCode=" + hatLiningCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java new file mode 100644 index 0000000..c4f3472 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java @@ -0,0 +1,62 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Data +@ApiModel("ProjectDevice") +@TableName("br_project_device") +public class ProjectDevice implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + @ApiModelProperty("设备ID(新增编辑时传)") + private Long deviceId; + + /** + * 设备编号 + */ + @TableField(exist = false) + @ApiModelProperty("设备编号(详情中展示,新增编辑不用传)") + private String deviceCode; + + @Override + public String toString() { + return "ProjectDevice{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java new file mode 100644 index 0000000..10b23c4 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java @@ -0,0 +1,104 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("ProjectWorker") +@TableName("br_project_worker") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ProjectWorker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 人员ID + */ + @ApiModelProperty("人员ID") + @TableField("WORKER_ID") + private Long workerId; + + /** + * 安全帽编号 + */ + @ApiModelProperty("安全帽编号") + @TableField("HAT_CODE") + private String hatCode; + + /** + * 背心编号 + */ + @ApiModelProperty("背心编号") + @TableField("VAST_CODE") + private String vastCode; + + /** + * 手环编号 + */ + @ApiModelProperty("手环编号") + @TableField("BRACELET_CODE") + private String braceletCode; + + @ApiModelProperty("人员姓名(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerName; + + @ApiModelProperty("人员部门ID(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptId; + + @ApiModelProperty("人员部门名称(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptName; + + @ApiModelProperty("人员联系方式(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerPhoneNumber; + + public ProjectWorker(Long projectId, Long workerId) { + this.projectId = projectId; + this.workerId = workerId; + } + + @Override + public String toString() { + return "ProjectWorker{" + + "id=" + id + + ", projectId=" + projectId + + ", workerId=" + workerId + + ", hatCode=" + hatCode + + ", vastCode=" + vastCode + + ", braceletCode=" + braceletCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java new file mode 100644 index 0000000..fa6f41d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 作业现场表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("WorkSiteInfo") +@TableName("br_work_site_info") +@Data +public class WorkSiteInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("作业现场ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业名称 + */ + @ApiModelProperty("作业名称") + @TableField("WORK_TITLE") + private String workTitle; + + /** + * 责任人 + */ + @ApiModelProperty("责任人(人员ID)") + @TableField("WORK_PERSON") + private Long workPerson; + + /** + * 作业描述 + */ + @ApiModelProperty("作业描述") + @TableField("WORK_SITE_DESC") + private String workSiteDesc; + + /** + * 作业状态 + */ + @ApiModelProperty("作业状态") + @TableField("PROJECT_STATE") + private String projectState; + + /** + * 所属道路 + */ + @ApiModelProperty("所属道路") + @TableField("WORK_ROAD") + private String workRoad; + + @TableField("IMAGE_URL") + private String imageUrl; + + @TableField("CREATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + @TableField("UPDATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("FINISH_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + @ApiModelProperty("负责人姓名(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonName; + + @ApiModelProperty("负责人联系方式(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonPhoneNumber; + + @ApiModelProperty("负责人所属部门ID(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private Long workPersonDeptId; + + @ApiModelProperty("负责人所属部门名称(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonDeptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + + @Override + public String toString() { + return "WorkSiteInfo{" + + "id=" + id + + ", workTitle=" + workTitle + + ", workPerson=" + workPerson + + ", workSiteDesc=" + workSiteDesc + + ", projectState=" + projectState + + ", imageUrl=" + imageUrl + + ", updateTime=" + updateTime + + ", workRoad=" + workRoad + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java new file mode 100644 index 0000000..28a4daa --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java @@ -0,0 +1,147 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Worker") +@TableName("br_worker") +@Data +public class Worker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "人员ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 姓名 + */ + @ApiModelProperty(value = "姓名") + @TableField("WORKER_NAME") + private String workerName; + + /** + * 性别 + */ + @ApiModelProperty(value = "性别") + @TableField("GENDER") + private String gender; + + /** + * 所属部门 + */ + @ApiModelProperty(value = "所属部门(人员管理)") + @TableField("DEPT_ID") + private Long deptId; + + /** + * 所属单位 + */ + @ApiModelProperty(value = "所属单位(入场申请中使用)") + @TableField("OWNER_SHIP") + private String ownerShip; + + /** + * 联系方式 + */ + @ApiModelProperty(value = "联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 证件号 + */ + @ApiModelProperty(value = "证件号") + @TableField("ID_CARD_NUMBER") + private String idCardNumber; + + /** + * 入场原因 + */ + @ApiModelProperty(value = "入场原因(入场申请中使用)") + @TableField("ENTER_REASON") + private String enterReason; + + /** + * 入场人脸照片 + */ + @ApiModelProperty(value = "人脸照片(照片路径)") + @TableField("WORKER_AVATAR") + private String workerAvatar; + + /** + * 申请入场时间 + */ + @ApiModelProperty(value = "注册时间/申请入场时间") + @TableField("CREATE_TIME") + private Date createTime; + + /** + * 人员类型 + */ + @ApiModelProperty(value = "人员类型(区分人员管理和入场申请)") + @TableField("WORKER_TYPE") + private String workerType; + + @ApiModelProperty(value = "性别名称") + @TableField(exist = false) + private String genderName; + + @ApiModelProperty(value = "部门名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @ApiModelProperty(value = "是否注册(0未注册;1已注册)",allowableValues = "0,1") + @TableField(exist = false) + private String isRegister; + + @Override + public String toString() { + return "Worker{" + + "id=" + id + + ", workerName=" + workerName + + ", gender=" + gender + + ", deptId=" + deptId + + ", ownerShip=" + ownerShip + + ", phoneNumber=" + phoneNumber + + ", idCardNumber=" + idCardNumber + + ", enterReason=" + enterReason + + ", workerAvatar=" + workerAvatar + + ", createTime=" + createTime + + ", workerType=" + workerType + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java new file mode 100644 index 0000000..9801742 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警记录表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusAlarmMapper extends BaseMapper { + + Page listPage(Page page,@Param("ew") QueryWrapper queryWrapper); + + void cancelAlarm(@Param("deviceId")Long deviceId,@Param("alarmType") String alarmType); + + List alarmCount(@Param("projectId")Long projectId, @Param("alarmStatus")String alarmStatus); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java new file mode 100644 index 0000000..9590b7d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件图片表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventImageMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java new file mode 100644 index 0000000..3c85edf --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java new file mode 100644 index 0000000..4ca9212 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 设备扩展信息表(安全树) Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface DeviceExtMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java new file mode 100644 index 0000000..444c0c5 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Mapper +public interface DeviceMapper extends BaseMapper { + + Page listDetailPage(Page page,@Param("ew") QueryWrapper ew); + + List selectProjectDevice(@Param("projectId") Long projectId); + + List selectHelmetList(@Param("deviceType")String deviceType); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java new file mode 100644 index 0000000..1d0c14e --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectDeviceMapper extends BaseMapper { + List selectDetailByProjectId(@Param("projectId") Long projectId); + + List selectDeviceLocationList(@Param("projectId") Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java new file mode 100644 index 0000000..58583d1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectWorkerMapper extends BaseMapper { + + List selectDetailByProjectId(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + + List selectWorkerLocationList(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java new file mode 100644 index 0000000..a4934d2 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +/** + *

+ * 作业现场表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkSiteInfoMapper extends BaseMapper { + + Page selectListPage(Page page,@Param("ew") QueryWrapper ew); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java new file mode 100644 index 0000000..258fb12 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkerMapper extends BaseMapper { + + + Page selectListPage(Page page, @Param("ew") QueryWrapper ew); + + List selectWorkerAvatars(@Param("projectId")Long projectId); + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml new file mode 100644 index 0000000..595088a --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml @@ -0,0 +1,58 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml new file mode 100644 index 0000000..fbc3db3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml new file mode 100644 index 0000000..627d573 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml new file mode 100644 index 0000000..5321d1c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml new file mode 100644 index 0000000..94262e1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml @@ -0,0 +1,97 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml new file mode 100644 index 0000000..c6d1c24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml @@ -0,0 +1,29 @@ + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml new file mode 100644 index 0000000..8d2de10 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml new file mode 100644 index 0000000..8f01326 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml @@ -0,0 +1,26 @@ + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml new file mode 100644 index 0000000..3e28b39 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml @@ -0,0 +1,56 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java new file mode 100644 index 0000000..f63c19c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 报警记录表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusAlarmService extends IService { + + boolean alarmUpload(AlarmUpload alarmUpload); + + Page listPage(Page page,QueryWrapper queryWrapper); + + List alarmCount(Long projectId,String alarmStatus); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java new file mode 100644 index 0000000..b1187ed --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 事件图片表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusEventImageService extends IService { + + boolean saveBusEventImages(Long eventId, List imageList); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java new file mode 100644 index 0000000..85c48d0 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 事件表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusEventService extends IService { + + boolean saveBusEvent(BusEvent busEvent); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java new file mode 100644 index 0000000..6fc5361 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 设备扩展信息表(安全树) 服务类 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface IDeviceExtService extends IService { + + boolean saveDeviceExt(DeviceDetailDTO deviceDetailDTO); + + boolean updateDeviceExt(DeviceDetailDTO deviceDetailDTO); + + boolean removeByDeviceIds(List deviceIds); + + boolean setGasThreshold(String gasIp,String gasPort,String threshold); + + String getGasThreshold(String gasIp,String gasPort); + + Long selectByGasIpPort(String gasIp,String gasPort); + + Long selectByCameraIpPort(String cameraIp,String cameraPort); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java new file mode 100644 index 0000000..9e62756 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java @@ -0,0 +1,32 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IDeviceService extends IService { + + boolean saveDevice(DeviceDetailDTO deviceDetailDTO); + + boolean updateDevice(DeviceDetailDTO deviceDetailDTO); + + boolean deleteDevices(List deviceIds); + + Page listPage(Page page, QueryWrapper queryWrapper, String status,Long projectId); + + List selectProjectDevice(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java new file mode 100644 index 0000000..8599411 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IProjectDeviceService extends IService { + + boolean saveProjectDeviceList(Long projectId, List projectDeviceList); + + boolean updateProjectDeviceList(Long projectId, List projectDeviceList); + + boolean deleteByProjectId(Long projectId); + + boolean deleteByProjectIds(List projectIds); + + List selectDetailByProjectId(Long projectId); + + Long selectProjectIdByDevice(Long deviceId); + + List selectDeviceLocationList(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java new file mode 100644 index 0000000..e921bc3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IProjectWorkerService extends IService { + + boolean saveProjectWorkerList(Long projectId, List projectWorkerList); + + boolean updateProjectWorkerList(Long projectId, List projectWorkerList); + + boolean deleteByProjectId(Long projectId); + + boolean deleteByProjectIds(List projectIds); + + List selectDetailByProjectId(Long projectId,String workerType); + + List selectWorkerLocationDTO(Long projectId); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java new file mode 100644 index 0000000..58a8590 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; +/** + *

+ * 作业现场表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IWorkSiteInfoService extends IService { + + boolean addWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO); + + boolean updateWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO); + + boolean deleteProjects(List projectIds); + + WorkSiteDetailDTO getWorkSiteDetail(Long projectId); + + Page selectListPage(Page page, QueryWrapper queryWrapper); + + boolean start(Long projectId); + + boolean finish(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java new file mode 100644 index 0000000..6c6ee98 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.extension.service.IService; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IWorkerService extends IService { + + boolean addWorker(Worker worker,Long projectId); + + Page selectListPage(Page page,QueryWrapper ew); + + Worker selectWorkerDetail(Long workerId); + + List faceRegister(String cameraIp,String cameraPort); + + List projectTempWorker(Long projectId); + +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java new file mode 100644 index 0000000..73d7799 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.dto; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "AlarmUpload",description = "报警上传") +@Data +public class AlarmUpload { + + @ApiModelProperty(value = "摄像头ip") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + @ApiModelProperty(value = "安全树甲烷设备ip") + private String gasIp; + @ApiModelProperty(value = "安全树甲烷设备端口") + private String gasPort; + @ApiModelProperty(value = "报警值") + private String alarmValue; + @ApiModelProperty(value = "报警时间") + private String alarmTime; + @ApiModelProperty(value = "报警类型") + private String alarmType; + @ApiModelProperty(value = "报警图片") + private String alarmImage; + @ApiModelProperty(value = "报警内容") + private String alarmContent; + + @Override + public String toString() { + return "AlarmUpload{" + + "cameraIp='" + cameraIp + '\'' + + ", cameraPort='" + cameraPort + '\'' + + ", gasIp='" + gasIp + '\'' + + ", gasPort='" + gasPort + '\'' + + ", alarmValue='" + alarmValue + '\'' + + ", alarmTime='" + alarmTime + '\'' + + ", alarmType='" + alarmType + '\'' + + ", alarmImage='" + (StrUtil.isNotEmpty(alarmImage) ? alarmImage.substring(0,50) : "null") + '\'' + + ", alarmContent='" + alarmContent + '\'' + + '}'; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java new file mode 100644 index 0000000..ea518d9 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.modular.system.entity.Device; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("DeviceDetailDTO") +@Data +public class DeviceDetailDTO extends Device { + + @ApiModelProperty(value = "摄像头编号") + private String cameraCode; + + @ApiModelProperty(value = "摄像头IP") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + + @ApiModelProperty(value = "激甲编号") + private String gasCode; + + @ApiModelProperty(value = "激甲IP") + private String gasIp; + + @ApiModelProperty(value = "激甲端口") + private String gasPort; + + @ApiModelProperty(value = "智能帽衬编号") + private String hatLiningCode; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java new file mode 100644 index 0000000..29378ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("WorkSiteDetailDTO") +public class WorkSiteDetailDTO extends WorkSiteInfo { + + @ApiModelProperty(value = "安全树列表",dataType = "ProjectDevice") + private List deviceList; + + @ApiModelProperty(value = "人员列表",dataType = "ProjectWorker") + private List workerList; + + + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java new file mode 100644 index 0000000..6fd7b24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java @@ -0,0 +1,68 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "WorkerLocationDTO",description = "人员位置列表(首页)") +@Data +public class WorkerLocationDTO { + + @ApiModelProperty("人员ID") + private Long workerId; + + @ApiModelProperty("人员姓名") + private String workerName; + + @ApiModelProperty("安全帽编号") + private String hatCode; + + @ApiModelProperty("安全帽ID") + private Long hatId; + + @ApiModelProperty("背心编号") + private String vastCode; + + @ApiModelProperty("手环编号") + private String braceletCode; + + @ApiModelProperty("位置") + private String location; + + @ApiModelProperty("时间") + private String time; + + @ApiModelProperty("经度") + private String lng; + + @ApiModelProperty("纬度") + private String lat; + + @ApiModelProperty("心率") + private String heartRate; + + @ApiModelProperty("血氧") + private String bloodOxygen; + + @ApiModelProperty("一氧化碳") + private String co; + + @ApiModelProperty("甲烷") + private String gas; + + @ApiModelProperty("硫化氢") + private String h2s; + + @ApiModelProperty("氧气") + private String o2; + + @ApiModelProperty("信号") + private String signal; + + @ApiModelProperty("电量") + private String cell; + + @ApiModelProperty("是否报警") + private boolean alarmFlag; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java new file mode 100644 index 0000000..efb4a23 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java @@ -0,0 +1,159 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 报警记录表 + *

+ * + * @author zyj + * @since 2023-05-16 + */ +@Data +@ApiModel("Alarm") +@TableName("br_bus_alarm") +public class BusAlarm implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @ApiModelProperty(value = "设备ID") + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 报警类型 + */ + @ApiModelProperty(value = "报警类型") + @TableField("ALARM_TYPE") + private String alarmType; + + /** + * 报警状态 + */ + @ApiModelProperty(value = "报警状态") + @TableField("ALARM_STATUS") + private String alarmStatus; + + /** + * 报警值 + */ + @ApiModelProperty(value = "报警值") + @TableField("ALARM_VALUE") + private String alarmValue; + + /** + * 报警图片 + */ + @ApiModelProperty(value = "报警图片") + @TableField("ALARM_IMAGE") + private String alarmImage; + + /** + * 报警内容 + */ + @ApiModelProperty(value = "报警内容") + @TableField("ALARM_CONTENT") + private String alarmContent; + + /** + * 报警时间 + */ + @ApiModelProperty(value = "报警时间") + @TableField("ALARM_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date alarmTime; + + /** + * 消警时间 + */ + @ApiModelProperty(value = "消警时间") + @TableField("CANCEL_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + /** + * 报警位置经度 + */ + @ApiModelProperty(value = "报警位置经度") + @TableField("ALARM_LNG") + private String alarmLng; + + /** + * 报警位置纬度 + */ + @ApiModelProperty(value = "报警位置纬度") + @TableField("ALARM_LAT") + private String alarmLat; + + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmStatusName; + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmTypeName; + @ApiModelProperty("作业名称") + @TableField(exist = false) + private String workTitle; + @ApiModelProperty("所属道路") + @TableField(exist = false) + private String workRoad; + @ApiModelProperty("作业状态") + @TableField(exist = false) + private String projectState; + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + @ApiModelProperty("负责人姓名") + @TableField(exist = false) + private String workPersonName; + @ApiModelProperty("负责人联系方式") + @TableField(exist = false) + private String workPersonPhoneNumber; + + + @Override + public String toString() { + return "BusAlarm{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + ", alarmType=" + alarmType + + ", alarmValue=" + alarmValue + + ", alarmStatus=" + alarmStatus + + ", alarmImage=" + alarmImage + + ", alarmContent=" + alarmContent + + ", alarmTime=" + alarmTime + + ", cancelTime=" + cancelTime + + ", alarmLng=" + alarmLng + + ", alarmLat=" + alarmLat + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java new file mode 100644 index 0000000..a0b7543 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + *

+ * 事件表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event") +@Data +@ApiModel("BusEvent") +public class BusEvent implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("事件ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件标题 + */ + @ApiModelProperty("事件名称") + @TableField("EVENT_TITLE") + private String eventTitle; + + /** + * 上报人员 + */ + @ApiModelProperty("上报人员") + @TableField("UPLOAD_NAME") + private String uploadName; + + /** + * 联系方式 + */ + @ApiModelProperty("联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 事件描述 + */ + @ApiModelProperty("事件描述") + @TableField("EVENT_DESCRIPTION") + private String eventDescription; + + @ApiModelProperty("经度") + @TableField("LNG") + private String lng; + + @ApiModelProperty("纬度") + @TableField("LAT") + private String lat; + + /** + * 事件上传时间 + */ + @ApiModelProperty("事件上传时间") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty("事件照片") + @TableField(exist = false) + private List imageList; + + + + @Override + public String toString() { + return "BusEvent{" + + "id=" + id + + ", eventTitle=" + eventTitle + + ", uploadName=" + uploadName + + ", phoneNumber=" + phoneNumber + + ", eventDescription=" + eventDescription + + ", lng=" + lng + + ", lat=" + lat + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java new file mode 100644 index 0000000..1e75245 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 事件图片表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event_image") +@Data +@ApiModel("BusEventImage") +public class BusEventImage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件ID + */ + @TableField("EVENT_ID") + private Long eventId; + + /** + * 报警图片 + */ + @TableField("IMAGE") + @ApiModelProperty("图片url") + private String image; + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java new file mode 100644 index 0000000..df89c70 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.core.base.json.DateDeserializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Device") +@TableName("br_device") +@Data +public class Device implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "设备ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty(value = "设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + /** + * 设备类型 + */ + @ApiModelProperty(value = "设备类型") + @TableField("DEVICE_TYPE") + private String deviceType; + + /** + * 设备批次 + */ + @ApiModelProperty(value = "设备批次") + @TableField("DEVICE_BATCH") + private String deviceBatch; + + /** + * 厂家 + */ + @ApiModelProperty(value = "厂家") + @TableField("MANUFACTURER") + private String manufacturer; + + /** + * 是否供电 + */ + @ApiModelProperty(value = "是否供电") + @TableField("IS_POWER_SUPPLY") + private String isPowerSupply; + + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间",dataType = "Date") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty(value = "设备类型名称") + @TableField(exist = false) + private String deviceTypeName; + + @ApiModelProperty(value = "是否供电名称") + @TableField(exist = false) + private String isPowerSupplyName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", deviceCode=" + deviceCode + + ", deviceType=" + deviceType + + ", deviceBatch=" + deviceBatch + + ", manufacturer=" + manufacturer + + ", isPowerSupply=" + isPowerSupply + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java new file mode 100644 index 0000000..5ee7015 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java @@ -0,0 +1,99 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 设备扩展信息表(安全树) + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Data +@TableName("br_device_ext") +public class DeviceExt implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 摄像头编号 + */ + @TableField("CAMERA_CODE") + private String cameraCode; + + /** + * 摄像头IP + */ + @TableField("CAMERA_IP") + private String cameraIp; + + /** + * 摄像头端口 + */ + @TableField("CAMERA_PORT") + private String cameraPort; + + /** + * 激甲编号 + */ + @TableField("GAS_CODE") + private String gasCode; + + /** + * 激甲IP + */ + @TableField("GAS_IP") + private String gasIp; + + /** + * 激甲端口 + */ + @TableField("GAS_PORT") + private String gasPort; + + /** + * 甲烷报警阈值 + */ + @TableField("GAS_THRESHOLD") + private String gasThreshold; + + @TableField(value = "HAT_LINING_CODE") + private String hatLiningCode; + + + @Override + public String toString() { + return "DeviceExt{" + + "id=" + id + + ", deviceId=" + deviceId + + ", cameraCode=" + cameraCode + + ", cameraIp=" + cameraIp + + ", cameraPort=" + cameraPort + + ", gasCode=" + gasCode + + ", gasIp=" + gasIp + + ", gasPort=" + gasPort + + ", gasThreshold=" + gasThreshold + + ", hatLiningCode=" + hatLiningCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java new file mode 100644 index 0000000..c4f3472 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java @@ -0,0 +1,62 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Data +@ApiModel("ProjectDevice") +@TableName("br_project_device") +public class ProjectDevice implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + @ApiModelProperty("设备ID(新增编辑时传)") + private Long deviceId; + + /** + * 设备编号 + */ + @TableField(exist = false) + @ApiModelProperty("设备编号(详情中展示,新增编辑不用传)") + private String deviceCode; + + @Override + public String toString() { + return "ProjectDevice{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java new file mode 100644 index 0000000..10b23c4 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java @@ -0,0 +1,104 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("ProjectWorker") +@TableName("br_project_worker") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ProjectWorker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 人员ID + */ + @ApiModelProperty("人员ID") + @TableField("WORKER_ID") + private Long workerId; + + /** + * 安全帽编号 + */ + @ApiModelProperty("安全帽编号") + @TableField("HAT_CODE") + private String hatCode; + + /** + * 背心编号 + */ + @ApiModelProperty("背心编号") + @TableField("VAST_CODE") + private String vastCode; + + /** + * 手环编号 + */ + @ApiModelProperty("手环编号") + @TableField("BRACELET_CODE") + private String braceletCode; + + @ApiModelProperty("人员姓名(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerName; + + @ApiModelProperty("人员部门ID(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptId; + + @ApiModelProperty("人员部门名称(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptName; + + @ApiModelProperty("人员联系方式(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerPhoneNumber; + + public ProjectWorker(Long projectId, Long workerId) { + this.projectId = projectId; + this.workerId = workerId; + } + + @Override + public String toString() { + return "ProjectWorker{" + + "id=" + id + + ", projectId=" + projectId + + ", workerId=" + workerId + + ", hatCode=" + hatCode + + ", vastCode=" + vastCode + + ", braceletCode=" + braceletCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java new file mode 100644 index 0000000..fa6f41d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 作业现场表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("WorkSiteInfo") +@TableName("br_work_site_info") +@Data +public class WorkSiteInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("作业现场ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业名称 + */ + @ApiModelProperty("作业名称") + @TableField("WORK_TITLE") + private String workTitle; + + /** + * 责任人 + */ + @ApiModelProperty("责任人(人员ID)") + @TableField("WORK_PERSON") + private Long workPerson; + + /** + * 作业描述 + */ + @ApiModelProperty("作业描述") + @TableField("WORK_SITE_DESC") + private String workSiteDesc; + + /** + * 作业状态 + */ + @ApiModelProperty("作业状态") + @TableField("PROJECT_STATE") + private String projectState; + + /** + * 所属道路 + */ + @ApiModelProperty("所属道路") + @TableField("WORK_ROAD") + private String workRoad; + + @TableField("IMAGE_URL") + private String imageUrl; + + @TableField("CREATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + @TableField("UPDATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("FINISH_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + @ApiModelProperty("负责人姓名(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonName; + + @ApiModelProperty("负责人联系方式(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonPhoneNumber; + + @ApiModelProperty("负责人所属部门ID(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private Long workPersonDeptId; + + @ApiModelProperty("负责人所属部门名称(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonDeptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + + @Override + public String toString() { + return "WorkSiteInfo{" + + "id=" + id + + ", workTitle=" + workTitle + + ", workPerson=" + workPerson + + ", workSiteDesc=" + workSiteDesc + + ", projectState=" + projectState + + ", imageUrl=" + imageUrl + + ", updateTime=" + updateTime + + ", workRoad=" + workRoad + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java new file mode 100644 index 0000000..28a4daa --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java @@ -0,0 +1,147 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Worker") +@TableName("br_worker") +@Data +public class Worker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "人员ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 姓名 + */ + @ApiModelProperty(value = "姓名") + @TableField("WORKER_NAME") + private String workerName; + + /** + * 性别 + */ + @ApiModelProperty(value = "性别") + @TableField("GENDER") + private String gender; + + /** + * 所属部门 + */ + @ApiModelProperty(value = "所属部门(人员管理)") + @TableField("DEPT_ID") + private Long deptId; + + /** + * 所属单位 + */ + @ApiModelProperty(value = "所属单位(入场申请中使用)") + @TableField("OWNER_SHIP") + private String ownerShip; + + /** + * 联系方式 + */ + @ApiModelProperty(value = "联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 证件号 + */ + @ApiModelProperty(value = "证件号") + @TableField("ID_CARD_NUMBER") + private String idCardNumber; + + /** + * 入场原因 + */ + @ApiModelProperty(value = "入场原因(入场申请中使用)") + @TableField("ENTER_REASON") + private String enterReason; + + /** + * 入场人脸照片 + */ + @ApiModelProperty(value = "人脸照片(照片路径)") + @TableField("WORKER_AVATAR") + private String workerAvatar; + + /** + * 申请入场时间 + */ + @ApiModelProperty(value = "注册时间/申请入场时间") + @TableField("CREATE_TIME") + private Date createTime; + + /** + * 人员类型 + */ + @ApiModelProperty(value = "人员类型(区分人员管理和入场申请)") + @TableField("WORKER_TYPE") + private String workerType; + + @ApiModelProperty(value = "性别名称") + @TableField(exist = false) + private String genderName; + + @ApiModelProperty(value = "部门名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @ApiModelProperty(value = "是否注册(0未注册;1已注册)",allowableValues = "0,1") + @TableField(exist = false) + private String isRegister; + + @Override + public String toString() { + return "Worker{" + + "id=" + id + + ", workerName=" + workerName + + ", gender=" + gender + + ", deptId=" + deptId + + ", ownerShip=" + ownerShip + + ", phoneNumber=" + phoneNumber + + ", idCardNumber=" + idCardNumber + + ", enterReason=" + enterReason + + ", workerAvatar=" + workerAvatar + + ", createTime=" + createTime + + ", workerType=" + workerType + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java new file mode 100644 index 0000000..9801742 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警记录表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusAlarmMapper extends BaseMapper { + + Page listPage(Page page,@Param("ew") QueryWrapper queryWrapper); + + void cancelAlarm(@Param("deviceId")Long deviceId,@Param("alarmType") String alarmType); + + List alarmCount(@Param("projectId")Long projectId, @Param("alarmStatus")String alarmStatus); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java new file mode 100644 index 0000000..9590b7d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件图片表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventImageMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java new file mode 100644 index 0000000..3c85edf --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java new file mode 100644 index 0000000..4ca9212 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 设备扩展信息表(安全树) Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface DeviceExtMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java new file mode 100644 index 0000000..444c0c5 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Mapper +public interface DeviceMapper extends BaseMapper { + + Page listDetailPage(Page page,@Param("ew") QueryWrapper ew); + + List selectProjectDevice(@Param("projectId") Long projectId); + + List selectHelmetList(@Param("deviceType")String deviceType); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java new file mode 100644 index 0000000..1d0c14e --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectDeviceMapper extends BaseMapper { + List selectDetailByProjectId(@Param("projectId") Long projectId); + + List selectDeviceLocationList(@Param("projectId") Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java new file mode 100644 index 0000000..58583d1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectWorkerMapper extends BaseMapper { + + List selectDetailByProjectId(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + + List selectWorkerLocationList(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java new file mode 100644 index 0000000..a4934d2 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +/** + *

+ * 作业现场表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkSiteInfoMapper extends BaseMapper { + + Page selectListPage(Page page,@Param("ew") QueryWrapper ew); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java new file mode 100644 index 0000000..258fb12 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkerMapper extends BaseMapper { + + + Page selectListPage(Page page, @Param("ew") QueryWrapper ew); + + List selectWorkerAvatars(@Param("projectId")Long projectId); + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml new file mode 100644 index 0000000..595088a --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml @@ -0,0 +1,58 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml new file mode 100644 index 0000000..fbc3db3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml new file mode 100644 index 0000000..627d573 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml new file mode 100644 index 0000000..5321d1c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml new file mode 100644 index 0000000..94262e1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml @@ -0,0 +1,97 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml new file mode 100644 index 0000000..c6d1c24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml @@ -0,0 +1,29 @@ + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml new file mode 100644 index 0000000..8d2de10 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml new file mode 100644 index 0000000..8f01326 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml @@ -0,0 +1,26 @@ + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml new file mode 100644 index 0000000..3e28b39 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml @@ -0,0 +1,56 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java new file mode 100644 index 0000000..f63c19c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 报警记录表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusAlarmService extends IService { + + boolean alarmUpload(AlarmUpload alarmUpload); + + Page listPage(Page page,QueryWrapper queryWrapper); + + List alarmCount(Long projectId,String alarmStatus); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java new file mode 100644 index 0000000..b1187ed --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 事件图片表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusEventImageService extends IService { + + boolean saveBusEventImages(Long eventId, List imageList); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java new file mode 100644 index 0000000..85c48d0 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 事件表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusEventService extends IService { + + boolean saveBusEvent(BusEvent busEvent); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java new file mode 100644 index 0000000..6fc5361 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 设备扩展信息表(安全树) 服务类 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface IDeviceExtService extends IService { + + boolean saveDeviceExt(DeviceDetailDTO deviceDetailDTO); + + boolean updateDeviceExt(DeviceDetailDTO deviceDetailDTO); + + boolean removeByDeviceIds(List deviceIds); + + boolean setGasThreshold(String gasIp,String gasPort,String threshold); + + String getGasThreshold(String gasIp,String gasPort); + + Long selectByGasIpPort(String gasIp,String gasPort); + + Long selectByCameraIpPort(String cameraIp,String cameraPort); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java new file mode 100644 index 0000000..9e62756 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java @@ -0,0 +1,32 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IDeviceService extends IService { + + boolean saveDevice(DeviceDetailDTO deviceDetailDTO); + + boolean updateDevice(DeviceDetailDTO deviceDetailDTO); + + boolean deleteDevices(List deviceIds); + + Page listPage(Page page, QueryWrapper queryWrapper, String status,Long projectId); + + List selectProjectDevice(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java new file mode 100644 index 0000000..8599411 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IProjectDeviceService extends IService { + + boolean saveProjectDeviceList(Long projectId, List projectDeviceList); + + boolean updateProjectDeviceList(Long projectId, List projectDeviceList); + + boolean deleteByProjectId(Long projectId); + + boolean deleteByProjectIds(List projectIds); + + List selectDetailByProjectId(Long projectId); + + Long selectProjectIdByDevice(Long deviceId); + + List selectDeviceLocationList(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java new file mode 100644 index 0000000..e921bc3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IProjectWorkerService extends IService { + + boolean saveProjectWorkerList(Long projectId, List projectWorkerList); + + boolean updateProjectWorkerList(Long projectId, List projectWorkerList); + + boolean deleteByProjectId(Long projectId); + + boolean deleteByProjectIds(List projectIds); + + List selectDetailByProjectId(Long projectId,String workerType); + + List selectWorkerLocationDTO(Long projectId); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java new file mode 100644 index 0000000..58a8590 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; +/** + *

+ * 作业现场表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IWorkSiteInfoService extends IService { + + boolean addWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO); + + boolean updateWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO); + + boolean deleteProjects(List projectIds); + + WorkSiteDetailDTO getWorkSiteDetail(Long projectId); + + Page selectListPage(Page page, QueryWrapper queryWrapper); + + boolean start(Long projectId); + + boolean finish(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java new file mode 100644 index 0000000..6c6ee98 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.extension.service.IService; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IWorkerService extends IService { + + boolean addWorker(Worker worker,Long projectId); + + Page selectListPage(Page page,QueryWrapper ew); + + Worker selectWorkerDetail(Long workerId); + + List faceRegister(String cameraIp,String cameraPort); + + List projectTempWorker(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java new file mode 100644 index 0000000..b44de1d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.consts.AlarmTypeEnum; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.entity.DataTreeLocation; +import com.casic.missiles.modular.system.mapper.BusAlarmMapper; +import com.casic.missiles.modular.system.service.*; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +/** + *

+ * 报警记录表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +@Slf4j +public class BusAlarmServiceImpl extends ServiceImpl implements IBusAlarmService { + + private final IDeviceExtService deviceExtService; + private final IDeviceService deviceService; + private final IProjectDeviceService projectDeviceService; + + private final ICasicFileService fileService; + + private final AbstractDictService dictService; + private final IDataSupportService dataSupportService; + + @Override + @Transactional + public boolean alarmUpload(AlarmUpload alarmUpload) { + log.info("alarm upload ==> {}",alarmUpload.toString()); + Long deviceId = null; + if(StrUtil.isAllNotBlank(alarmUpload.getGasIp(),alarmUpload.getGasPort())){ + deviceId = deviceExtService.selectByGasIpPort(alarmUpload.getGasIp(),alarmUpload.getGasPort()); + } + if(ObjectUtil.isEmpty(deviceId) && StrUtil.isAllNotBlank(alarmUpload.getCameraIp(),alarmUpload.getCameraPort())){ + deviceId = deviceExtService.selectByCameraIpPort(alarmUpload.getCameraIp(),alarmUpload.getCameraPort()); + } + + if(ObjectUtil.isEmpty(deviceId)){ + return false; + } + + BusAlarm alarm = new BusAlarm(); + alarm.setDeviceId(deviceId); + alarm.setProjectId(projectDeviceService.selectProjectIdByDevice(deviceId)); + alarm.setAlarmValue(alarmUpload.getAlarmValue()); + if(StrUtil.isNotEmpty(alarmUpload.getAlarmTime())){ + alarm.setAlarmTime(DateUtil.parseDateTime(alarmUpload.getAlarmTime())); + }else { + alarm.setAlarmTime(new Date()); + } + + alarm.setAlarmType(alarmUpload.getAlarmType()); + alarm.setAlarmContent(alarmUpload.getAlarmContent()); + if(StrUtil.isNotEmpty(alarmUpload.getAlarmImage())){ + String imgBase64 = "data:image/jpeg;base64," + alarmUpload.getAlarmImage(); + String imageUrl = fileService.saveFile(imgBase64); + alarm.setAlarmImage(imageUrl); + } + alarm.setAlarmStatus(ALARM_STATUS_ON); + + DataTreeLocation treeLocation = dataSupportService.getTreeLocation(deviceId); + if(ObjectUtil.isNotEmpty(treeLocation)){ + alarm.setAlarmLng(treeLocation.getGdLng()); + alarm.setAlarmLat(treeLocation.getGdLat()); + } + + //自动消警 + AlarmTypeEnum alarmTypeEnum = AlarmTypeEnum.getByAlarmType(alarm.getAlarmType()); + if(ObjectUtil.isNotEmpty(alarmTypeEnum) && alarmTypeEnum.isAutoCancel()){ + this.baseMapper.cancelAlarm(deviceId,alarm.getAlarmType()); + } + return this.save(alarm); + } + + @Override + public Page listPage(Page page, QueryWrapper queryWrapper) { + page = this.baseMapper.listPage(page, queryWrapper); + for (BusAlarm alarm : page.getRecords()) { + alarm.setAlarmTypeName(dictService.getDictNameByCode("alarmType",alarm.getAlarmType())); + alarm.setAlarmStatusName(dictService.getDictNameByCode("alarmStatus",alarm.getAlarmStatus())); + if(StrUtil.isNotEmpty(alarm.getProjectState())){ + alarm.setProjectStateName(dictService.getDictNameByCode("projectStatus",alarm.getProjectState())); + } + } + return page; + } + + @Override + public List alarmCount(Long projectId, String alarmStatus) { + List list = this.baseMapper.alarmCount(projectId, alarmStatus); + list = list.stream().filter(i->StrUtil.isNotEmpty(i.getAlarmType())).collect(Collectors.toList()); + for (AlarmTypeCountDTO countDTO : list) { + countDTO.setAlarmTypeName(dictService.getDictNameByCode("alarmType",countDTO.getAlarmType())); + } + return list; + } +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java new file mode 100644 index 0000000..73d7799 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.dto; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "AlarmUpload",description = "报警上传") +@Data +public class AlarmUpload { + + @ApiModelProperty(value = "摄像头ip") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + @ApiModelProperty(value = "安全树甲烷设备ip") + private String gasIp; + @ApiModelProperty(value = "安全树甲烷设备端口") + private String gasPort; + @ApiModelProperty(value = "报警值") + private String alarmValue; + @ApiModelProperty(value = "报警时间") + private String alarmTime; + @ApiModelProperty(value = "报警类型") + private String alarmType; + @ApiModelProperty(value = "报警图片") + private String alarmImage; + @ApiModelProperty(value = "报警内容") + private String alarmContent; + + @Override + public String toString() { + return "AlarmUpload{" + + "cameraIp='" + cameraIp + '\'' + + ", cameraPort='" + cameraPort + '\'' + + ", gasIp='" + gasIp + '\'' + + ", gasPort='" + gasPort + '\'' + + ", alarmValue='" + alarmValue + '\'' + + ", alarmTime='" + alarmTime + '\'' + + ", alarmType='" + alarmType + '\'' + + ", alarmImage='" + (StrUtil.isNotEmpty(alarmImage) ? alarmImage.substring(0,50) : "null") + '\'' + + ", alarmContent='" + alarmContent + '\'' + + '}'; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java new file mode 100644 index 0000000..ea518d9 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.modular.system.entity.Device; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("DeviceDetailDTO") +@Data +public class DeviceDetailDTO extends Device { + + @ApiModelProperty(value = "摄像头编号") + private String cameraCode; + + @ApiModelProperty(value = "摄像头IP") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + + @ApiModelProperty(value = "激甲编号") + private String gasCode; + + @ApiModelProperty(value = "激甲IP") + private String gasIp; + + @ApiModelProperty(value = "激甲端口") + private String gasPort; + + @ApiModelProperty(value = "智能帽衬编号") + private String hatLiningCode; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java new file mode 100644 index 0000000..29378ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("WorkSiteDetailDTO") +public class WorkSiteDetailDTO extends WorkSiteInfo { + + @ApiModelProperty(value = "安全树列表",dataType = "ProjectDevice") + private List deviceList; + + @ApiModelProperty(value = "人员列表",dataType = "ProjectWorker") + private List workerList; + + + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java new file mode 100644 index 0000000..6fd7b24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java @@ -0,0 +1,68 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "WorkerLocationDTO",description = "人员位置列表(首页)") +@Data +public class WorkerLocationDTO { + + @ApiModelProperty("人员ID") + private Long workerId; + + @ApiModelProperty("人员姓名") + private String workerName; + + @ApiModelProperty("安全帽编号") + private String hatCode; + + @ApiModelProperty("安全帽ID") + private Long hatId; + + @ApiModelProperty("背心编号") + private String vastCode; + + @ApiModelProperty("手环编号") + private String braceletCode; + + @ApiModelProperty("位置") + private String location; + + @ApiModelProperty("时间") + private String time; + + @ApiModelProperty("经度") + private String lng; + + @ApiModelProperty("纬度") + private String lat; + + @ApiModelProperty("心率") + private String heartRate; + + @ApiModelProperty("血氧") + private String bloodOxygen; + + @ApiModelProperty("一氧化碳") + private String co; + + @ApiModelProperty("甲烷") + private String gas; + + @ApiModelProperty("硫化氢") + private String h2s; + + @ApiModelProperty("氧气") + private String o2; + + @ApiModelProperty("信号") + private String signal; + + @ApiModelProperty("电量") + private String cell; + + @ApiModelProperty("是否报警") + private boolean alarmFlag; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java new file mode 100644 index 0000000..efb4a23 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java @@ -0,0 +1,159 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 报警记录表 + *

+ * + * @author zyj + * @since 2023-05-16 + */ +@Data +@ApiModel("Alarm") +@TableName("br_bus_alarm") +public class BusAlarm implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @ApiModelProperty(value = "设备ID") + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 报警类型 + */ + @ApiModelProperty(value = "报警类型") + @TableField("ALARM_TYPE") + private String alarmType; + + /** + * 报警状态 + */ + @ApiModelProperty(value = "报警状态") + @TableField("ALARM_STATUS") + private String alarmStatus; + + /** + * 报警值 + */ + @ApiModelProperty(value = "报警值") + @TableField("ALARM_VALUE") + private String alarmValue; + + /** + * 报警图片 + */ + @ApiModelProperty(value = "报警图片") + @TableField("ALARM_IMAGE") + private String alarmImage; + + /** + * 报警内容 + */ + @ApiModelProperty(value = "报警内容") + @TableField("ALARM_CONTENT") + private String alarmContent; + + /** + * 报警时间 + */ + @ApiModelProperty(value = "报警时间") + @TableField("ALARM_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date alarmTime; + + /** + * 消警时间 + */ + @ApiModelProperty(value = "消警时间") + @TableField("CANCEL_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + /** + * 报警位置经度 + */ + @ApiModelProperty(value = "报警位置经度") + @TableField("ALARM_LNG") + private String alarmLng; + + /** + * 报警位置纬度 + */ + @ApiModelProperty(value = "报警位置纬度") + @TableField("ALARM_LAT") + private String alarmLat; + + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmStatusName; + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmTypeName; + @ApiModelProperty("作业名称") + @TableField(exist = false) + private String workTitle; + @ApiModelProperty("所属道路") + @TableField(exist = false) + private String workRoad; + @ApiModelProperty("作业状态") + @TableField(exist = false) + private String projectState; + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + @ApiModelProperty("负责人姓名") + @TableField(exist = false) + private String workPersonName; + @ApiModelProperty("负责人联系方式") + @TableField(exist = false) + private String workPersonPhoneNumber; + + + @Override + public String toString() { + return "BusAlarm{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + ", alarmType=" + alarmType + + ", alarmValue=" + alarmValue + + ", alarmStatus=" + alarmStatus + + ", alarmImage=" + alarmImage + + ", alarmContent=" + alarmContent + + ", alarmTime=" + alarmTime + + ", cancelTime=" + cancelTime + + ", alarmLng=" + alarmLng + + ", alarmLat=" + alarmLat + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java new file mode 100644 index 0000000..a0b7543 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + *

+ * 事件表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event") +@Data +@ApiModel("BusEvent") +public class BusEvent implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("事件ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件标题 + */ + @ApiModelProperty("事件名称") + @TableField("EVENT_TITLE") + private String eventTitle; + + /** + * 上报人员 + */ + @ApiModelProperty("上报人员") + @TableField("UPLOAD_NAME") + private String uploadName; + + /** + * 联系方式 + */ + @ApiModelProperty("联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 事件描述 + */ + @ApiModelProperty("事件描述") + @TableField("EVENT_DESCRIPTION") + private String eventDescription; + + @ApiModelProperty("经度") + @TableField("LNG") + private String lng; + + @ApiModelProperty("纬度") + @TableField("LAT") + private String lat; + + /** + * 事件上传时间 + */ + @ApiModelProperty("事件上传时间") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty("事件照片") + @TableField(exist = false) + private List imageList; + + + + @Override + public String toString() { + return "BusEvent{" + + "id=" + id + + ", eventTitle=" + eventTitle + + ", uploadName=" + uploadName + + ", phoneNumber=" + phoneNumber + + ", eventDescription=" + eventDescription + + ", lng=" + lng + + ", lat=" + lat + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java new file mode 100644 index 0000000..1e75245 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 事件图片表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event_image") +@Data +@ApiModel("BusEventImage") +public class BusEventImage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件ID + */ + @TableField("EVENT_ID") + private Long eventId; + + /** + * 报警图片 + */ + @TableField("IMAGE") + @ApiModelProperty("图片url") + private String image; + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java new file mode 100644 index 0000000..df89c70 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.core.base.json.DateDeserializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Device") +@TableName("br_device") +@Data +public class Device implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "设备ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty(value = "设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + /** + * 设备类型 + */ + @ApiModelProperty(value = "设备类型") + @TableField("DEVICE_TYPE") + private String deviceType; + + /** + * 设备批次 + */ + @ApiModelProperty(value = "设备批次") + @TableField("DEVICE_BATCH") + private String deviceBatch; + + /** + * 厂家 + */ + @ApiModelProperty(value = "厂家") + @TableField("MANUFACTURER") + private String manufacturer; + + /** + * 是否供电 + */ + @ApiModelProperty(value = "是否供电") + @TableField("IS_POWER_SUPPLY") + private String isPowerSupply; + + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间",dataType = "Date") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty(value = "设备类型名称") + @TableField(exist = false) + private String deviceTypeName; + + @ApiModelProperty(value = "是否供电名称") + @TableField(exist = false) + private String isPowerSupplyName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", deviceCode=" + deviceCode + + ", deviceType=" + deviceType + + ", deviceBatch=" + deviceBatch + + ", manufacturer=" + manufacturer + + ", isPowerSupply=" + isPowerSupply + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java new file mode 100644 index 0000000..5ee7015 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java @@ -0,0 +1,99 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 设备扩展信息表(安全树) + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Data +@TableName("br_device_ext") +public class DeviceExt implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 摄像头编号 + */ + @TableField("CAMERA_CODE") + private String cameraCode; + + /** + * 摄像头IP + */ + @TableField("CAMERA_IP") + private String cameraIp; + + /** + * 摄像头端口 + */ + @TableField("CAMERA_PORT") + private String cameraPort; + + /** + * 激甲编号 + */ + @TableField("GAS_CODE") + private String gasCode; + + /** + * 激甲IP + */ + @TableField("GAS_IP") + private String gasIp; + + /** + * 激甲端口 + */ + @TableField("GAS_PORT") + private String gasPort; + + /** + * 甲烷报警阈值 + */ + @TableField("GAS_THRESHOLD") + private String gasThreshold; + + @TableField(value = "HAT_LINING_CODE") + private String hatLiningCode; + + + @Override + public String toString() { + return "DeviceExt{" + + "id=" + id + + ", deviceId=" + deviceId + + ", cameraCode=" + cameraCode + + ", cameraIp=" + cameraIp + + ", cameraPort=" + cameraPort + + ", gasCode=" + gasCode + + ", gasIp=" + gasIp + + ", gasPort=" + gasPort + + ", gasThreshold=" + gasThreshold + + ", hatLiningCode=" + hatLiningCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java new file mode 100644 index 0000000..c4f3472 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java @@ -0,0 +1,62 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Data +@ApiModel("ProjectDevice") +@TableName("br_project_device") +public class ProjectDevice implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + @ApiModelProperty("设备ID(新增编辑时传)") + private Long deviceId; + + /** + * 设备编号 + */ + @TableField(exist = false) + @ApiModelProperty("设备编号(详情中展示,新增编辑不用传)") + private String deviceCode; + + @Override + public String toString() { + return "ProjectDevice{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java new file mode 100644 index 0000000..10b23c4 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java @@ -0,0 +1,104 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("ProjectWorker") +@TableName("br_project_worker") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ProjectWorker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 人员ID + */ + @ApiModelProperty("人员ID") + @TableField("WORKER_ID") + private Long workerId; + + /** + * 安全帽编号 + */ + @ApiModelProperty("安全帽编号") + @TableField("HAT_CODE") + private String hatCode; + + /** + * 背心编号 + */ + @ApiModelProperty("背心编号") + @TableField("VAST_CODE") + private String vastCode; + + /** + * 手环编号 + */ + @ApiModelProperty("手环编号") + @TableField("BRACELET_CODE") + private String braceletCode; + + @ApiModelProperty("人员姓名(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerName; + + @ApiModelProperty("人员部门ID(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptId; + + @ApiModelProperty("人员部门名称(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptName; + + @ApiModelProperty("人员联系方式(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerPhoneNumber; + + public ProjectWorker(Long projectId, Long workerId) { + this.projectId = projectId; + this.workerId = workerId; + } + + @Override + public String toString() { + return "ProjectWorker{" + + "id=" + id + + ", projectId=" + projectId + + ", workerId=" + workerId + + ", hatCode=" + hatCode + + ", vastCode=" + vastCode + + ", braceletCode=" + braceletCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java new file mode 100644 index 0000000..fa6f41d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 作业现场表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("WorkSiteInfo") +@TableName("br_work_site_info") +@Data +public class WorkSiteInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("作业现场ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业名称 + */ + @ApiModelProperty("作业名称") + @TableField("WORK_TITLE") + private String workTitle; + + /** + * 责任人 + */ + @ApiModelProperty("责任人(人员ID)") + @TableField("WORK_PERSON") + private Long workPerson; + + /** + * 作业描述 + */ + @ApiModelProperty("作业描述") + @TableField("WORK_SITE_DESC") + private String workSiteDesc; + + /** + * 作业状态 + */ + @ApiModelProperty("作业状态") + @TableField("PROJECT_STATE") + private String projectState; + + /** + * 所属道路 + */ + @ApiModelProperty("所属道路") + @TableField("WORK_ROAD") + private String workRoad; + + @TableField("IMAGE_URL") + private String imageUrl; + + @TableField("CREATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + @TableField("UPDATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("FINISH_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + @ApiModelProperty("负责人姓名(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonName; + + @ApiModelProperty("负责人联系方式(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonPhoneNumber; + + @ApiModelProperty("负责人所属部门ID(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private Long workPersonDeptId; + + @ApiModelProperty("负责人所属部门名称(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonDeptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + + @Override + public String toString() { + return "WorkSiteInfo{" + + "id=" + id + + ", workTitle=" + workTitle + + ", workPerson=" + workPerson + + ", workSiteDesc=" + workSiteDesc + + ", projectState=" + projectState + + ", imageUrl=" + imageUrl + + ", updateTime=" + updateTime + + ", workRoad=" + workRoad + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java new file mode 100644 index 0000000..28a4daa --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java @@ -0,0 +1,147 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Worker") +@TableName("br_worker") +@Data +public class Worker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "人员ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 姓名 + */ + @ApiModelProperty(value = "姓名") + @TableField("WORKER_NAME") + private String workerName; + + /** + * 性别 + */ + @ApiModelProperty(value = "性别") + @TableField("GENDER") + private String gender; + + /** + * 所属部门 + */ + @ApiModelProperty(value = "所属部门(人员管理)") + @TableField("DEPT_ID") + private Long deptId; + + /** + * 所属单位 + */ + @ApiModelProperty(value = "所属单位(入场申请中使用)") + @TableField("OWNER_SHIP") + private String ownerShip; + + /** + * 联系方式 + */ + @ApiModelProperty(value = "联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 证件号 + */ + @ApiModelProperty(value = "证件号") + @TableField("ID_CARD_NUMBER") + private String idCardNumber; + + /** + * 入场原因 + */ + @ApiModelProperty(value = "入场原因(入场申请中使用)") + @TableField("ENTER_REASON") + private String enterReason; + + /** + * 入场人脸照片 + */ + @ApiModelProperty(value = "人脸照片(照片路径)") + @TableField("WORKER_AVATAR") + private String workerAvatar; + + /** + * 申请入场时间 + */ + @ApiModelProperty(value = "注册时间/申请入场时间") + @TableField("CREATE_TIME") + private Date createTime; + + /** + * 人员类型 + */ + @ApiModelProperty(value = "人员类型(区分人员管理和入场申请)") + @TableField("WORKER_TYPE") + private String workerType; + + @ApiModelProperty(value = "性别名称") + @TableField(exist = false) + private String genderName; + + @ApiModelProperty(value = "部门名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @ApiModelProperty(value = "是否注册(0未注册;1已注册)",allowableValues = "0,1") + @TableField(exist = false) + private String isRegister; + + @Override + public String toString() { + return "Worker{" + + "id=" + id + + ", workerName=" + workerName + + ", gender=" + gender + + ", deptId=" + deptId + + ", ownerShip=" + ownerShip + + ", phoneNumber=" + phoneNumber + + ", idCardNumber=" + idCardNumber + + ", enterReason=" + enterReason + + ", workerAvatar=" + workerAvatar + + ", createTime=" + createTime + + ", workerType=" + workerType + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java new file mode 100644 index 0000000..9801742 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警记录表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusAlarmMapper extends BaseMapper { + + Page listPage(Page page,@Param("ew") QueryWrapper queryWrapper); + + void cancelAlarm(@Param("deviceId")Long deviceId,@Param("alarmType") String alarmType); + + List alarmCount(@Param("projectId")Long projectId, @Param("alarmStatus")String alarmStatus); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java new file mode 100644 index 0000000..9590b7d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件图片表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventImageMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java new file mode 100644 index 0000000..3c85edf --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java new file mode 100644 index 0000000..4ca9212 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 设备扩展信息表(安全树) Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface DeviceExtMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java new file mode 100644 index 0000000..444c0c5 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Mapper +public interface DeviceMapper extends BaseMapper { + + Page listDetailPage(Page page,@Param("ew") QueryWrapper ew); + + List selectProjectDevice(@Param("projectId") Long projectId); + + List selectHelmetList(@Param("deviceType")String deviceType); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java new file mode 100644 index 0000000..1d0c14e --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectDeviceMapper extends BaseMapper { + List selectDetailByProjectId(@Param("projectId") Long projectId); + + List selectDeviceLocationList(@Param("projectId") Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java new file mode 100644 index 0000000..58583d1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectWorkerMapper extends BaseMapper { + + List selectDetailByProjectId(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + + List selectWorkerLocationList(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java new file mode 100644 index 0000000..a4934d2 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +/** + *

+ * 作业现场表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkSiteInfoMapper extends BaseMapper { + + Page selectListPage(Page page,@Param("ew") QueryWrapper ew); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java new file mode 100644 index 0000000..258fb12 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkerMapper extends BaseMapper { + + + Page selectListPage(Page page, @Param("ew") QueryWrapper ew); + + List selectWorkerAvatars(@Param("projectId")Long projectId); + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml new file mode 100644 index 0000000..595088a --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml @@ -0,0 +1,58 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml new file mode 100644 index 0000000..fbc3db3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml new file mode 100644 index 0000000..627d573 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml new file mode 100644 index 0000000..5321d1c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml new file mode 100644 index 0000000..94262e1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml @@ -0,0 +1,97 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml new file mode 100644 index 0000000..c6d1c24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml @@ -0,0 +1,29 @@ + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml new file mode 100644 index 0000000..8d2de10 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml new file mode 100644 index 0000000..8f01326 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml @@ -0,0 +1,26 @@ + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml new file mode 100644 index 0000000..3e28b39 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml @@ -0,0 +1,56 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java new file mode 100644 index 0000000..f63c19c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 报警记录表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusAlarmService extends IService { + + boolean alarmUpload(AlarmUpload alarmUpload); + + Page listPage(Page page,QueryWrapper queryWrapper); + + List alarmCount(Long projectId,String alarmStatus); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java new file mode 100644 index 0000000..b1187ed --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 事件图片表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusEventImageService extends IService { + + boolean saveBusEventImages(Long eventId, List imageList); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java new file mode 100644 index 0000000..85c48d0 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 事件表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusEventService extends IService { + + boolean saveBusEvent(BusEvent busEvent); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java new file mode 100644 index 0000000..6fc5361 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 设备扩展信息表(安全树) 服务类 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface IDeviceExtService extends IService { + + boolean saveDeviceExt(DeviceDetailDTO deviceDetailDTO); + + boolean updateDeviceExt(DeviceDetailDTO deviceDetailDTO); + + boolean removeByDeviceIds(List deviceIds); + + boolean setGasThreshold(String gasIp,String gasPort,String threshold); + + String getGasThreshold(String gasIp,String gasPort); + + Long selectByGasIpPort(String gasIp,String gasPort); + + Long selectByCameraIpPort(String cameraIp,String cameraPort); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java new file mode 100644 index 0000000..9e62756 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java @@ -0,0 +1,32 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IDeviceService extends IService { + + boolean saveDevice(DeviceDetailDTO deviceDetailDTO); + + boolean updateDevice(DeviceDetailDTO deviceDetailDTO); + + boolean deleteDevices(List deviceIds); + + Page listPage(Page page, QueryWrapper queryWrapper, String status,Long projectId); + + List selectProjectDevice(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java new file mode 100644 index 0000000..8599411 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IProjectDeviceService extends IService { + + boolean saveProjectDeviceList(Long projectId, List projectDeviceList); + + boolean updateProjectDeviceList(Long projectId, List projectDeviceList); + + boolean deleteByProjectId(Long projectId); + + boolean deleteByProjectIds(List projectIds); + + List selectDetailByProjectId(Long projectId); + + Long selectProjectIdByDevice(Long deviceId); + + List selectDeviceLocationList(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java new file mode 100644 index 0000000..e921bc3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IProjectWorkerService extends IService { + + boolean saveProjectWorkerList(Long projectId, List projectWorkerList); + + boolean updateProjectWorkerList(Long projectId, List projectWorkerList); + + boolean deleteByProjectId(Long projectId); + + boolean deleteByProjectIds(List projectIds); + + List selectDetailByProjectId(Long projectId,String workerType); + + List selectWorkerLocationDTO(Long projectId); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java new file mode 100644 index 0000000..58a8590 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; +/** + *

+ * 作业现场表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IWorkSiteInfoService extends IService { + + boolean addWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO); + + boolean updateWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO); + + boolean deleteProjects(List projectIds); + + WorkSiteDetailDTO getWorkSiteDetail(Long projectId); + + Page selectListPage(Page page, QueryWrapper queryWrapper); + + boolean start(Long projectId); + + boolean finish(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java new file mode 100644 index 0000000..6c6ee98 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.extension.service.IService; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IWorkerService extends IService { + + boolean addWorker(Worker worker,Long projectId); + + Page selectListPage(Page page,QueryWrapper ew); + + Worker selectWorkerDetail(Long workerId); + + List faceRegister(String cameraIp,String cameraPort); + + List projectTempWorker(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java new file mode 100644 index 0000000..b44de1d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.consts.AlarmTypeEnum; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.entity.DataTreeLocation; +import com.casic.missiles.modular.system.mapper.BusAlarmMapper; +import com.casic.missiles.modular.system.service.*; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +/** + *

+ * 报警记录表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +@Slf4j +public class BusAlarmServiceImpl extends ServiceImpl implements IBusAlarmService { + + private final IDeviceExtService deviceExtService; + private final IDeviceService deviceService; + private final IProjectDeviceService projectDeviceService; + + private final ICasicFileService fileService; + + private final AbstractDictService dictService; + private final IDataSupportService dataSupportService; + + @Override + @Transactional + public boolean alarmUpload(AlarmUpload alarmUpload) { + log.info("alarm upload ==> {}",alarmUpload.toString()); + Long deviceId = null; + if(StrUtil.isAllNotBlank(alarmUpload.getGasIp(),alarmUpload.getGasPort())){ + deviceId = deviceExtService.selectByGasIpPort(alarmUpload.getGasIp(),alarmUpload.getGasPort()); + } + if(ObjectUtil.isEmpty(deviceId) && StrUtil.isAllNotBlank(alarmUpload.getCameraIp(),alarmUpload.getCameraPort())){ + deviceId = deviceExtService.selectByCameraIpPort(alarmUpload.getCameraIp(),alarmUpload.getCameraPort()); + } + + if(ObjectUtil.isEmpty(deviceId)){ + return false; + } + + BusAlarm alarm = new BusAlarm(); + alarm.setDeviceId(deviceId); + alarm.setProjectId(projectDeviceService.selectProjectIdByDevice(deviceId)); + alarm.setAlarmValue(alarmUpload.getAlarmValue()); + if(StrUtil.isNotEmpty(alarmUpload.getAlarmTime())){ + alarm.setAlarmTime(DateUtil.parseDateTime(alarmUpload.getAlarmTime())); + }else { + alarm.setAlarmTime(new Date()); + } + + alarm.setAlarmType(alarmUpload.getAlarmType()); + alarm.setAlarmContent(alarmUpload.getAlarmContent()); + if(StrUtil.isNotEmpty(alarmUpload.getAlarmImage())){ + String imgBase64 = "data:image/jpeg;base64," + alarmUpload.getAlarmImage(); + String imageUrl = fileService.saveFile(imgBase64); + alarm.setAlarmImage(imageUrl); + } + alarm.setAlarmStatus(ALARM_STATUS_ON); + + DataTreeLocation treeLocation = dataSupportService.getTreeLocation(deviceId); + if(ObjectUtil.isNotEmpty(treeLocation)){ + alarm.setAlarmLng(treeLocation.getGdLng()); + alarm.setAlarmLat(treeLocation.getGdLat()); + } + + //自动消警 + AlarmTypeEnum alarmTypeEnum = AlarmTypeEnum.getByAlarmType(alarm.getAlarmType()); + if(ObjectUtil.isNotEmpty(alarmTypeEnum) && alarmTypeEnum.isAutoCancel()){ + this.baseMapper.cancelAlarm(deviceId,alarm.getAlarmType()); + } + return this.save(alarm); + } + + @Override + public Page listPage(Page page, QueryWrapper queryWrapper) { + page = this.baseMapper.listPage(page, queryWrapper); + for (BusAlarm alarm : page.getRecords()) { + alarm.setAlarmTypeName(dictService.getDictNameByCode("alarmType",alarm.getAlarmType())); + alarm.setAlarmStatusName(dictService.getDictNameByCode("alarmStatus",alarm.getAlarmStatus())); + if(StrUtil.isNotEmpty(alarm.getProjectState())){ + alarm.setProjectStateName(dictService.getDictNameByCode("projectStatus",alarm.getProjectState())); + } + } + return page; + } + + @Override + public List alarmCount(Long projectId, String alarmStatus) { + List list = this.baseMapper.alarmCount(projectId, alarmStatus); + list = list.stream().filter(i->StrUtil.isNotEmpty(i.getAlarmType())).collect(Collectors.toList()); + for (AlarmTypeCountDTO countDTO : list) { + countDTO.setAlarmTypeName(dictService.getDictNameByCode("alarmType",countDTO.getAlarmType())); + } + return list; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java new file mode 100644 index 0000000..a43f7c1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.casic.missiles.modular.system.mapper.BusEventImageMapper; +import com.casic.missiles.modular.system.service.IBusEventImageService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 事件图片表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +public class BusEventImageServiceImpl extends ServiceImpl implements IBusEventImageService { + + @Override + public boolean saveBusEventImages(Long eventId, List imageList) { + imageList.forEach(i->i.setEventId(eventId)); + return this.saveBatch(imageList); + } +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java new file mode 100644 index 0000000..73d7799 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.dto; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "AlarmUpload",description = "报警上传") +@Data +public class AlarmUpload { + + @ApiModelProperty(value = "摄像头ip") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + @ApiModelProperty(value = "安全树甲烷设备ip") + private String gasIp; + @ApiModelProperty(value = "安全树甲烷设备端口") + private String gasPort; + @ApiModelProperty(value = "报警值") + private String alarmValue; + @ApiModelProperty(value = "报警时间") + private String alarmTime; + @ApiModelProperty(value = "报警类型") + private String alarmType; + @ApiModelProperty(value = "报警图片") + private String alarmImage; + @ApiModelProperty(value = "报警内容") + private String alarmContent; + + @Override + public String toString() { + return "AlarmUpload{" + + "cameraIp='" + cameraIp + '\'' + + ", cameraPort='" + cameraPort + '\'' + + ", gasIp='" + gasIp + '\'' + + ", gasPort='" + gasPort + '\'' + + ", alarmValue='" + alarmValue + '\'' + + ", alarmTime='" + alarmTime + '\'' + + ", alarmType='" + alarmType + '\'' + + ", alarmImage='" + (StrUtil.isNotEmpty(alarmImage) ? alarmImage.substring(0,50) : "null") + '\'' + + ", alarmContent='" + alarmContent + '\'' + + '}'; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java new file mode 100644 index 0000000..ea518d9 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.modular.system.entity.Device; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("DeviceDetailDTO") +@Data +public class DeviceDetailDTO extends Device { + + @ApiModelProperty(value = "摄像头编号") + private String cameraCode; + + @ApiModelProperty(value = "摄像头IP") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + + @ApiModelProperty(value = "激甲编号") + private String gasCode; + + @ApiModelProperty(value = "激甲IP") + private String gasIp; + + @ApiModelProperty(value = "激甲端口") + private String gasPort; + + @ApiModelProperty(value = "智能帽衬编号") + private String hatLiningCode; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java new file mode 100644 index 0000000..29378ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("WorkSiteDetailDTO") +public class WorkSiteDetailDTO extends WorkSiteInfo { + + @ApiModelProperty(value = "安全树列表",dataType = "ProjectDevice") + private List deviceList; + + @ApiModelProperty(value = "人员列表",dataType = "ProjectWorker") + private List workerList; + + + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java new file mode 100644 index 0000000..6fd7b24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java @@ -0,0 +1,68 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "WorkerLocationDTO",description = "人员位置列表(首页)") +@Data +public class WorkerLocationDTO { + + @ApiModelProperty("人员ID") + private Long workerId; + + @ApiModelProperty("人员姓名") + private String workerName; + + @ApiModelProperty("安全帽编号") + private String hatCode; + + @ApiModelProperty("安全帽ID") + private Long hatId; + + @ApiModelProperty("背心编号") + private String vastCode; + + @ApiModelProperty("手环编号") + private String braceletCode; + + @ApiModelProperty("位置") + private String location; + + @ApiModelProperty("时间") + private String time; + + @ApiModelProperty("经度") + private String lng; + + @ApiModelProperty("纬度") + private String lat; + + @ApiModelProperty("心率") + private String heartRate; + + @ApiModelProperty("血氧") + private String bloodOxygen; + + @ApiModelProperty("一氧化碳") + private String co; + + @ApiModelProperty("甲烷") + private String gas; + + @ApiModelProperty("硫化氢") + private String h2s; + + @ApiModelProperty("氧气") + private String o2; + + @ApiModelProperty("信号") + private String signal; + + @ApiModelProperty("电量") + private String cell; + + @ApiModelProperty("是否报警") + private boolean alarmFlag; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java new file mode 100644 index 0000000..efb4a23 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java @@ -0,0 +1,159 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 报警记录表 + *

+ * + * @author zyj + * @since 2023-05-16 + */ +@Data +@ApiModel("Alarm") +@TableName("br_bus_alarm") +public class BusAlarm implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @ApiModelProperty(value = "设备ID") + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 报警类型 + */ + @ApiModelProperty(value = "报警类型") + @TableField("ALARM_TYPE") + private String alarmType; + + /** + * 报警状态 + */ + @ApiModelProperty(value = "报警状态") + @TableField("ALARM_STATUS") + private String alarmStatus; + + /** + * 报警值 + */ + @ApiModelProperty(value = "报警值") + @TableField("ALARM_VALUE") + private String alarmValue; + + /** + * 报警图片 + */ + @ApiModelProperty(value = "报警图片") + @TableField("ALARM_IMAGE") + private String alarmImage; + + /** + * 报警内容 + */ + @ApiModelProperty(value = "报警内容") + @TableField("ALARM_CONTENT") + private String alarmContent; + + /** + * 报警时间 + */ + @ApiModelProperty(value = "报警时间") + @TableField("ALARM_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date alarmTime; + + /** + * 消警时间 + */ + @ApiModelProperty(value = "消警时间") + @TableField("CANCEL_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + /** + * 报警位置经度 + */ + @ApiModelProperty(value = "报警位置经度") + @TableField("ALARM_LNG") + private String alarmLng; + + /** + * 报警位置纬度 + */ + @ApiModelProperty(value = "报警位置纬度") + @TableField("ALARM_LAT") + private String alarmLat; + + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmStatusName; + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmTypeName; + @ApiModelProperty("作业名称") + @TableField(exist = false) + private String workTitle; + @ApiModelProperty("所属道路") + @TableField(exist = false) + private String workRoad; + @ApiModelProperty("作业状态") + @TableField(exist = false) + private String projectState; + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + @ApiModelProperty("负责人姓名") + @TableField(exist = false) + private String workPersonName; + @ApiModelProperty("负责人联系方式") + @TableField(exist = false) + private String workPersonPhoneNumber; + + + @Override + public String toString() { + return "BusAlarm{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + ", alarmType=" + alarmType + + ", alarmValue=" + alarmValue + + ", alarmStatus=" + alarmStatus + + ", alarmImage=" + alarmImage + + ", alarmContent=" + alarmContent + + ", alarmTime=" + alarmTime + + ", cancelTime=" + cancelTime + + ", alarmLng=" + alarmLng + + ", alarmLat=" + alarmLat + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java new file mode 100644 index 0000000..a0b7543 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + *

+ * 事件表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event") +@Data +@ApiModel("BusEvent") +public class BusEvent implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("事件ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件标题 + */ + @ApiModelProperty("事件名称") + @TableField("EVENT_TITLE") + private String eventTitle; + + /** + * 上报人员 + */ + @ApiModelProperty("上报人员") + @TableField("UPLOAD_NAME") + private String uploadName; + + /** + * 联系方式 + */ + @ApiModelProperty("联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 事件描述 + */ + @ApiModelProperty("事件描述") + @TableField("EVENT_DESCRIPTION") + private String eventDescription; + + @ApiModelProperty("经度") + @TableField("LNG") + private String lng; + + @ApiModelProperty("纬度") + @TableField("LAT") + private String lat; + + /** + * 事件上传时间 + */ + @ApiModelProperty("事件上传时间") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty("事件照片") + @TableField(exist = false) + private List imageList; + + + + @Override + public String toString() { + return "BusEvent{" + + "id=" + id + + ", eventTitle=" + eventTitle + + ", uploadName=" + uploadName + + ", phoneNumber=" + phoneNumber + + ", eventDescription=" + eventDescription + + ", lng=" + lng + + ", lat=" + lat + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java new file mode 100644 index 0000000..1e75245 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 事件图片表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event_image") +@Data +@ApiModel("BusEventImage") +public class BusEventImage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件ID + */ + @TableField("EVENT_ID") + private Long eventId; + + /** + * 报警图片 + */ + @TableField("IMAGE") + @ApiModelProperty("图片url") + private String image; + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java new file mode 100644 index 0000000..df89c70 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.core.base.json.DateDeserializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Device") +@TableName("br_device") +@Data +public class Device implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "设备ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty(value = "设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + /** + * 设备类型 + */ + @ApiModelProperty(value = "设备类型") + @TableField("DEVICE_TYPE") + private String deviceType; + + /** + * 设备批次 + */ + @ApiModelProperty(value = "设备批次") + @TableField("DEVICE_BATCH") + private String deviceBatch; + + /** + * 厂家 + */ + @ApiModelProperty(value = "厂家") + @TableField("MANUFACTURER") + private String manufacturer; + + /** + * 是否供电 + */ + @ApiModelProperty(value = "是否供电") + @TableField("IS_POWER_SUPPLY") + private String isPowerSupply; + + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间",dataType = "Date") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty(value = "设备类型名称") + @TableField(exist = false) + private String deviceTypeName; + + @ApiModelProperty(value = "是否供电名称") + @TableField(exist = false) + private String isPowerSupplyName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", deviceCode=" + deviceCode + + ", deviceType=" + deviceType + + ", deviceBatch=" + deviceBatch + + ", manufacturer=" + manufacturer + + ", isPowerSupply=" + isPowerSupply + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java new file mode 100644 index 0000000..5ee7015 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java @@ -0,0 +1,99 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 设备扩展信息表(安全树) + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Data +@TableName("br_device_ext") +public class DeviceExt implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 摄像头编号 + */ + @TableField("CAMERA_CODE") + private String cameraCode; + + /** + * 摄像头IP + */ + @TableField("CAMERA_IP") + private String cameraIp; + + /** + * 摄像头端口 + */ + @TableField("CAMERA_PORT") + private String cameraPort; + + /** + * 激甲编号 + */ + @TableField("GAS_CODE") + private String gasCode; + + /** + * 激甲IP + */ + @TableField("GAS_IP") + private String gasIp; + + /** + * 激甲端口 + */ + @TableField("GAS_PORT") + private String gasPort; + + /** + * 甲烷报警阈值 + */ + @TableField("GAS_THRESHOLD") + private String gasThreshold; + + @TableField(value = "HAT_LINING_CODE") + private String hatLiningCode; + + + @Override + public String toString() { + return "DeviceExt{" + + "id=" + id + + ", deviceId=" + deviceId + + ", cameraCode=" + cameraCode + + ", cameraIp=" + cameraIp + + ", cameraPort=" + cameraPort + + ", gasCode=" + gasCode + + ", gasIp=" + gasIp + + ", gasPort=" + gasPort + + ", gasThreshold=" + gasThreshold + + ", hatLiningCode=" + hatLiningCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java new file mode 100644 index 0000000..c4f3472 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java @@ -0,0 +1,62 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Data +@ApiModel("ProjectDevice") +@TableName("br_project_device") +public class ProjectDevice implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + @ApiModelProperty("设备ID(新增编辑时传)") + private Long deviceId; + + /** + * 设备编号 + */ + @TableField(exist = false) + @ApiModelProperty("设备编号(详情中展示,新增编辑不用传)") + private String deviceCode; + + @Override + public String toString() { + return "ProjectDevice{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java new file mode 100644 index 0000000..10b23c4 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java @@ -0,0 +1,104 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("ProjectWorker") +@TableName("br_project_worker") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ProjectWorker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 人员ID + */ + @ApiModelProperty("人员ID") + @TableField("WORKER_ID") + private Long workerId; + + /** + * 安全帽编号 + */ + @ApiModelProperty("安全帽编号") + @TableField("HAT_CODE") + private String hatCode; + + /** + * 背心编号 + */ + @ApiModelProperty("背心编号") + @TableField("VAST_CODE") + private String vastCode; + + /** + * 手环编号 + */ + @ApiModelProperty("手环编号") + @TableField("BRACELET_CODE") + private String braceletCode; + + @ApiModelProperty("人员姓名(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerName; + + @ApiModelProperty("人员部门ID(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptId; + + @ApiModelProperty("人员部门名称(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptName; + + @ApiModelProperty("人员联系方式(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerPhoneNumber; + + public ProjectWorker(Long projectId, Long workerId) { + this.projectId = projectId; + this.workerId = workerId; + } + + @Override + public String toString() { + return "ProjectWorker{" + + "id=" + id + + ", projectId=" + projectId + + ", workerId=" + workerId + + ", hatCode=" + hatCode + + ", vastCode=" + vastCode + + ", braceletCode=" + braceletCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java new file mode 100644 index 0000000..fa6f41d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 作业现场表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("WorkSiteInfo") +@TableName("br_work_site_info") +@Data +public class WorkSiteInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("作业现场ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业名称 + */ + @ApiModelProperty("作业名称") + @TableField("WORK_TITLE") + private String workTitle; + + /** + * 责任人 + */ + @ApiModelProperty("责任人(人员ID)") + @TableField("WORK_PERSON") + private Long workPerson; + + /** + * 作业描述 + */ + @ApiModelProperty("作业描述") + @TableField("WORK_SITE_DESC") + private String workSiteDesc; + + /** + * 作业状态 + */ + @ApiModelProperty("作业状态") + @TableField("PROJECT_STATE") + private String projectState; + + /** + * 所属道路 + */ + @ApiModelProperty("所属道路") + @TableField("WORK_ROAD") + private String workRoad; + + @TableField("IMAGE_URL") + private String imageUrl; + + @TableField("CREATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + @TableField("UPDATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("FINISH_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + @ApiModelProperty("负责人姓名(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonName; + + @ApiModelProperty("负责人联系方式(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonPhoneNumber; + + @ApiModelProperty("负责人所属部门ID(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private Long workPersonDeptId; + + @ApiModelProperty("负责人所属部门名称(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonDeptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + + @Override + public String toString() { + return "WorkSiteInfo{" + + "id=" + id + + ", workTitle=" + workTitle + + ", workPerson=" + workPerson + + ", workSiteDesc=" + workSiteDesc + + ", projectState=" + projectState + + ", imageUrl=" + imageUrl + + ", updateTime=" + updateTime + + ", workRoad=" + workRoad + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java new file mode 100644 index 0000000..28a4daa --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java @@ -0,0 +1,147 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Worker") +@TableName("br_worker") +@Data +public class Worker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "人员ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 姓名 + */ + @ApiModelProperty(value = "姓名") + @TableField("WORKER_NAME") + private String workerName; + + /** + * 性别 + */ + @ApiModelProperty(value = "性别") + @TableField("GENDER") + private String gender; + + /** + * 所属部门 + */ + @ApiModelProperty(value = "所属部门(人员管理)") + @TableField("DEPT_ID") + private Long deptId; + + /** + * 所属单位 + */ + @ApiModelProperty(value = "所属单位(入场申请中使用)") + @TableField("OWNER_SHIP") + private String ownerShip; + + /** + * 联系方式 + */ + @ApiModelProperty(value = "联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 证件号 + */ + @ApiModelProperty(value = "证件号") + @TableField("ID_CARD_NUMBER") + private String idCardNumber; + + /** + * 入场原因 + */ + @ApiModelProperty(value = "入场原因(入场申请中使用)") + @TableField("ENTER_REASON") + private String enterReason; + + /** + * 入场人脸照片 + */ + @ApiModelProperty(value = "人脸照片(照片路径)") + @TableField("WORKER_AVATAR") + private String workerAvatar; + + /** + * 申请入场时间 + */ + @ApiModelProperty(value = "注册时间/申请入场时间") + @TableField("CREATE_TIME") + private Date createTime; + + /** + * 人员类型 + */ + @ApiModelProperty(value = "人员类型(区分人员管理和入场申请)") + @TableField("WORKER_TYPE") + private String workerType; + + @ApiModelProperty(value = "性别名称") + @TableField(exist = false) + private String genderName; + + @ApiModelProperty(value = "部门名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @ApiModelProperty(value = "是否注册(0未注册;1已注册)",allowableValues = "0,1") + @TableField(exist = false) + private String isRegister; + + @Override + public String toString() { + return "Worker{" + + "id=" + id + + ", workerName=" + workerName + + ", gender=" + gender + + ", deptId=" + deptId + + ", ownerShip=" + ownerShip + + ", phoneNumber=" + phoneNumber + + ", idCardNumber=" + idCardNumber + + ", enterReason=" + enterReason + + ", workerAvatar=" + workerAvatar + + ", createTime=" + createTime + + ", workerType=" + workerType + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java new file mode 100644 index 0000000..9801742 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警记录表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusAlarmMapper extends BaseMapper { + + Page listPage(Page page,@Param("ew") QueryWrapper queryWrapper); + + void cancelAlarm(@Param("deviceId")Long deviceId,@Param("alarmType") String alarmType); + + List alarmCount(@Param("projectId")Long projectId, @Param("alarmStatus")String alarmStatus); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java new file mode 100644 index 0000000..9590b7d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件图片表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventImageMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java new file mode 100644 index 0000000..3c85edf --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java new file mode 100644 index 0000000..4ca9212 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 设备扩展信息表(安全树) Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface DeviceExtMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java new file mode 100644 index 0000000..444c0c5 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Mapper +public interface DeviceMapper extends BaseMapper { + + Page listDetailPage(Page page,@Param("ew") QueryWrapper ew); + + List selectProjectDevice(@Param("projectId") Long projectId); + + List selectHelmetList(@Param("deviceType")String deviceType); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java new file mode 100644 index 0000000..1d0c14e --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectDeviceMapper extends BaseMapper { + List selectDetailByProjectId(@Param("projectId") Long projectId); + + List selectDeviceLocationList(@Param("projectId") Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java new file mode 100644 index 0000000..58583d1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectWorkerMapper extends BaseMapper { + + List selectDetailByProjectId(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + + List selectWorkerLocationList(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java new file mode 100644 index 0000000..a4934d2 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +/** + *

+ * 作业现场表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkSiteInfoMapper extends BaseMapper { + + Page selectListPage(Page page,@Param("ew") QueryWrapper ew); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java new file mode 100644 index 0000000..258fb12 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkerMapper extends BaseMapper { + + + Page selectListPage(Page page, @Param("ew") QueryWrapper ew); + + List selectWorkerAvatars(@Param("projectId")Long projectId); + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml new file mode 100644 index 0000000..595088a --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml @@ -0,0 +1,58 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml new file mode 100644 index 0000000..fbc3db3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml new file mode 100644 index 0000000..627d573 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml new file mode 100644 index 0000000..5321d1c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml new file mode 100644 index 0000000..94262e1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml @@ -0,0 +1,97 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml new file mode 100644 index 0000000..c6d1c24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml @@ -0,0 +1,29 @@ + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml new file mode 100644 index 0000000..8d2de10 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml new file mode 100644 index 0000000..8f01326 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml @@ -0,0 +1,26 @@ + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml new file mode 100644 index 0000000..3e28b39 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml @@ -0,0 +1,56 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java new file mode 100644 index 0000000..f63c19c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 报警记录表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusAlarmService extends IService { + + boolean alarmUpload(AlarmUpload alarmUpload); + + Page listPage(Page page,QueryWrapper queryWrapper); + + List alarmCount(Long projectId,String alarmStatus); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java new file mode 100644 index 0000000..b1187ed --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 事件图片表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusEventImageService extends IService { + + boolean saveBusEventImages(Long eventId, List imageList); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java new file mode 100644 index 0000000..85c48d0 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 事件表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusEventService extends IService { + + boolean saveBusEvent(BusEvent busEvent); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java new file mode 100644 index 0000000..6fc5361 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 设备扩展信息表(安全树) 服务类 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface IDeviceExtService extends IService { + + boolean saveDeviceExt(DeviceDetailDTO deviceDetailDTO); + + boolean updateDeviceExt(DeviceDetailDTO deviceDetailDTO); + + boolean removeByDeviceIds(List deviceIds); + + boolean setGasThreshold(String gasIp,String gasPort,String threshold); + + String getGasThreshold(String gasIp,String gasPort); + + Long selectByGasIpPort(String gasIp,String gasPort); + + Long selectByCameraIpPort(String cameraIp,String cameraPort); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java new file mode 100644 index 0000000..9e62756 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java @@ -0,0 +1,32 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IDeviceService extends IService { + + boolean saveDevice(DeviceDetailDTO deviceDetailDTO); + + boolean updateDevice(DeviceDetailDTO deviceDetailDTO); + + boolean deleteDevices(List deviceIds); + + Page listPage(Page page, QueryWrapper queryWrapper, String status,Long projectId); + + List selectProjectDevice(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java new file mode 100644 index 0000000..8599411 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IProjectDeviceService extends IService { + + boolean saveProjectDeviceList(Long projectId, List projectDeviceList); + + boolean updateProjectDeviceList(Long projectId, List projectDeviceList); + + boolean deleteByProjectId(Long projectId); + + boolean deleteByProjectIds(List projectIds); + + List selectDetailByProjectId(Long projectId); + + Long selectProjectIdByDevice(Long deviceId); + + List selectDeviceLocationList(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java new file mode 100644 index 0000000..e921bc3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IProjectWorkerService extends IService { + + boolean saveProjectWorkerList(Long projectId, List projectWorkerList); + + boolean updateProjectWorkerList(Long projectId, List projectWorkerList); + + boolean deleteByProjectId(Long projectId); + + boolean deleteByProjectIds(List projectIds); + + List selectDetailByProjectId(Long projectId,String workerType); + + List selectWorkerLocationDTO(Long projectId); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java new file mode 100644 index 0000000..58a8590 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; +/** + *

+ * 作业现场表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IWorkSiteInfoService extends IService { + + boolean addWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO); + + boolean updateWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO); + + boolean deleteProjects(List projectIds); + + WorkSiteDetailDTO getWorkSiteDetail(Long projectId); + + Page selectListPage(Page page, QueryWrapper queryWrapper); + + boolean start(Long projectId); + + boolean finish(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java new file mode 100644 index 0000000..6c6ee98 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.extension.service.IService; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IWorkerService extends IService { + + boolean addWorker(Worker worker,Long projectId); + + Page selectListPage(Page page,QueryWrapper ew); + + Worker selectWorkerDetail(Long workerId); + + List faceRegister(String cameraIp,String cameraPort); + + List projectTempWorker(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java new file mode 100644 index 0000000..b44de1d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.consts.AlarmTypeEnum; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.entity.DataTreeLocation; +import com.casic.missiles.modular.system.mapper.BusAlarmMapper; +import com.casic.missiles.modular.system.service.*; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +/** + *

+ * 报警记录表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +@Slf4j +public class BusAlarmServiceImpl extends ServiceImpl implements IBusAlarmService { + + private final IDeviceExtService deviceExtService; + private final IDeviceService deviceService; + private final IProjectDeviceService projectDeviceService; + + private final ICasicFileService fileService; + + private final AbstractDictService dictService; + private final IDataSupportService dataSupportService; + + @Override + @Transactional + public boolean alarmUpload(AlarmUpload alarmUpload) { + log.info("alarm upload ==> {}",alarmUpload.toString()); + Long deviceId = null; + if(StrUtil.isAllNotBlank(alarmUpload.getGasIp(),alarmUpload.getGasPort())){ + deviceId = deviceExtService.selectByGasIpPort(alarmUpload.getGasIp(),alarmUpload.getGasPort()); + } + if(ObjectUtil.isEmpty(deviceId) && StrUtil.isAllNotBlank(alarmUpload.getCameraIp(),alarmUpload.getCameraPort())){ + deviceId = deviceExtService.selectByCameraIpPort(alarmUpload.getCameraIp(),alarmUpload.getCameraPort()); + } + + if(ObjectUtil.isEmpty(deviceId)){ + return false; + } + + BusAlarm alarm = new BusAlarm(); + alarm.setDeviceId(deviceId); + alarm.setProjectId(projectDeviceService.selectProjectIdByDevice(deviceId)); + alarm.setAlarmValue(alarmUpload.getAlarmValue()); + if(StrUtil.isNotEmpty(alarmUpload.getAlarmTime())){ + alarm.setAlarmTime(DateUtil.parseDateTime(alarmUpload.getAlarmTime())); + }else { + alarm.setAlarmTime(new Date()); + } + + alarm.setAlarmType(alarmUpload.getAlarmType()); + alarm.setAlarmContent(alarmUpload.getAlarmContent()); + if(StrUtil.isNotEmpty(alarmUpload.getAlarmImage())){ + String imgBase64 = "data:image/jpeg;base64," + alarmUpload.getAlarmImage(); + String imageUrl = fileService.saveFile(imgBase64); + alarm.setAlarmImage(imageUrl); + } + alarm.setAlarmStatus(ALARM_STATUS_ON); + + DataTreeLocation treeLocation = dataSupportService.getTreeLocation(deviceId); + if(ObjectUtil.isNotEmpty(treeLocation)){ + alarm.setAlarmLng(treeLocation.getGdLng()); + alarm.setAlarmLat(treeLocation.getGdLat()); + } + + //自动消警 + AlarmTypeEnum alarmTypeEnum = AlarmTypeEnum.getByAlarmType(alarm.getAlarmType()); + if(ObjectUtil.isNotEmpty(alarmTypeEnum) && alarmTypeEnum.isAutoCancel()){ + this.baseMapper.cancelAlarm(deviceId,alarm.getAlarmType()); + } + return this.save(alarm); + } + + @Override + public Page listPage(Page page, QueryWrapper queryWrapper) { + page = this.baseMapper.listPage(page, queryWrapper); + for (BusAlarm alarm : page.getRecords()) { + alarm.setAlarmTypeName(dictService.getDictNameByCode("alarmType",alarm.getAlarmType())); + alarm.setAlarmStatusName(dictService.getDictNameByCode("alarmStatus",alarm.getAlarmStatus())); + if(StrUtil.isNotEmpty(alarm.getProjectState())){ + alarm.setProjectStateName(dictService.getDictNameByCode("projectStatus",alarm.getProjectState())); + } + } + return page; + } + + @Override + public List alarmCount(Long projectId, String alarmStatus) { + List list = this.baseMapper.alarmCount(projectId, alarmStatus); + list = list.stream().filter(i->StrUtil.isNotEmpty(i.getAlarmType())).collect(Collectors.toList()); + for (AlarmTypeCountDTO countDTO : list) { + countDTO.setAlarmTypeName(dictService.getDictNameByCode("alarmType",countDTO.getAlarmType())); + } + return list; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java new file mode 100644 index 0000000..a43f7c1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.casic.missiles.modular.system.mapper.BusEventImageMapper; +import com.casic.missiles.modular.system.service.IBusEventImageService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 事件图片表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +public class BusEventImageServiceImpl extends ServiceImpl implements IBusEventImageService { + + @Override + public boolean saveBusEventImages(Long eventId, List imageList) { + imageList.forEach(i->i.setEventId(eventId)); + return this.saveBatch(imageList); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java new file mode 100644 index 0000000..21e511c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java @@ -0,0 +1,39 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.mapper.BusEventMapper; +import com.casic.missiles.modular.system.service.IBusEventImageService; +import com.casic.missiles.modular.system.service.IBusEventService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; + +/** + *

+ * 事件表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class BusEventServiceImpl extends ServiceImpl implements IBusEventService { + + private final IBusEventImageService busEventImageService; + + + @Override + @Transactional + public boolean saveBusEvent(BusEvent busEvent) { + busEvent.setCreateTime(new Date()); + boolean res = this.save(busEvent); + if(res){ + res = busEventImageService.saveBusEventImages(busEvent.getId(),busEvent.getImageList()); + } + return res; + } +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java new file mode 100644 index 0000000..73d7799 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.dto; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "AlarmUpload",description = "报警上传") +@Data +public class AlarmUpload { + + @ApiModelProperty(value = "摄像头ip") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + @ApiModelProperty(value = "安全树甲烷设备ip") + private String gasIp; + @ApiModelProperty(value = "安全树甲烷设备端口") + private String gasPort; + @ApiModelProperty(value = "报警值") + private String alarmValue; + @ApiModelProperty(value = "报警时间") + private String alarmTime; + @ApiModelProperty(value = "报警类型") + private String alarmType; + @ApiModelProperty(value = "报警图片") + private String alarmImage; + @ApiModelProperty(value = "报警内容") + private String alarmContent; + + @Override + public String toString() { + return "AlarmUpload{" + + "cameraIp='" + cameraIp + '\'' + + ", cameraPort='" + cameraPort + '\'' + + ", gasIp='" + gasIp + '\'' + + ", gasPort='" + gasPort + '\'' + + ", alarmValue='" + alarmValue + '\'' + + ", alarmTime='" + alarmTime + '\'' + + ", alarmType='" + alarmType + '\'' + + ", alarmImage='" + (StrUtil.isNotEmpty(alarmImage) ? alarmImage.substring(0,50) : "null") + '\'' + + ", alarmContent='" + alarmContent + '\'' + + '}'; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java new file mode 100644 index 0000000..ea518d9 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.modular.system.entity.Device; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("DeviceDetailDTO") +@Data +public class DeviceDetailDTO extends Device { + + @ApiModelProperty(value = "摄像头编号") + private String cameraCode; + + @ApiModelProperty(value = "摄像头IP") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + + @ApiModelProperty(value = "激甲编号") + private String gasCode; + + @ApiModelProperty(value = "激甲IP") + private String gasIp; + + @ApiModelProperty(value = "激甲端口") + private String gasPort; + + @ApiModelProperty(value = "智能帽衬编号") + private String hatLiningCode; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java new file mode 100644 index 0000000..29378ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("WorkSiteDetailDTO") +public class WorkSiteDetailDTO extends WorkSiteInfo { + + @ApiModelProperty(value = "安全树列表",dataType = "ProjectDevice") + private List deviceList; + + @ApiModelProperty(value = "人员列表",dataType = "ProjectWorker") + private List workerList; + + + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java new file mode 100644 index 0000000..6fd7b24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java @@ -0,0 +1,68 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "WorkerLocationDTO",description = "人员位置列表(首页)") +@Data +public class WorkerLocationDTO { + + @ApiModelProperty("人员ID") + private Long workerId; + + @ApiModelProperty("人员姓名") + private String workerName; + + @ApiModelProperty("安全帽编号") + private String hatCode; + + @ApiModelProperty("安全帽ID") + private Long hatId; + + @ApiModelProperty("背心编号") + private String vastCode; + + @ApiModelProperty("手环编号") + private String braceletCode; + + @ApiModelProperty("位置") + private String location; + + @ApiModelProperty("时间") + private String time; + + @ApiModelProperty("经度") + private String lng; + + @ApiModelProperty("纬度") + private String lat; + + @ApiModelProperty("心率") + private String heartRate; + + @ApiModelProperty("血氧") + private String bloodOxygen; + + @ApiModelProperty("一氧化碳") + private String co; + + @ApiModelProperty("甲烷") + private String gas; + + @ApiModelProperty("硫化氢") + private String h2s; + + @ApiModelProperty("氧气") + private String o2; + + @ApiModelProperty("信号") + private String signal; + + @ApiModelProperty("电量") + private String cell; + + @ApiModelProperty("是否报警") + private boolean alarmFlag; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java new file mode 100644 index 0000000..efb4a23 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java @@ -0,0 +1,159 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 报警记录表 + *

+ * + * @author zyj + * @since 2023-05-16 + */ +@Data +@ApiModel("Alarm") +@TableName("br_bus_alarm") +public class BusAlarm implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @ApiModelProperty(value = "设备ID") + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 报警类型 + */ + @ApiModelProperty(value = "报警类型") + @TableField("ALARM_TYPE") + private String alarmType; + + /** + * 报警状态 + */ + @ApiModelProperty(value = "报警状态") + @TableField("ALARM_STATUS") + private String alarmStatus; + + /** + * 报警值 + */ + @ApiModelProperty(value = "报警值") + @TableField("ALARM_VALUE") + private String alarmValue; + + /** + * 报警图片 + */ + @ApiModelProperty(value = "报警图片") + @TableField("ALARM_IMAGE") + private String alarmImage; + + /** + * 报警内容 + */ + @ApiModelProperty(value = "报警内容") + @TableField("ALARM_CONTENT") + private String alarmContent; + + /** + * 报警时间 + */ + @ApiModelProperty(value = "报警时间") + @TableField("ALARM_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date alarmTime; + + /** + * 消警时间 + */ + @ApiModelProperty(value = "消警时间") + @TableField("CANCEL_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + /** + * 报警位置经度 + */ + @ApiModelProperty(value = "报警位置经度") + @TableField("ALARM_LNG") + private String alarmLng; + + /** + * 报警位置纬度 + */ + @ApiModelProperty(value = "报警位置纬度") + @TableField("ALARM_LAT") + private String alarmLat; + + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmStatusName; + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmTypeName; + @ApiModelProperty("作业名称") + @TableField(exist = false) + private String workTitle; + @ApiModelProperty("所属道路") + @TableField(exist = false) + private String workRoad; + @ApiModelProperty("作业状态") + @TableField(exist = false) + private String projectState; + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + @ApiModelProperty("负责人姓名") + @TableField(exist = false) + private String workPersonName; + @ApiModelProperty("负责人联系方式") + @TableField(exist = false) + private String workPersonPhoneNumber; + + + @Override + public String toString() { + return "BusAlarm{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + ", alarmType=" + alarmType + + ", alarmValue=" + alarmValue + + ", alarmStatus=" + alarmStatus + + ", alarmImage=" + alarmImage + + ", alarmContent=" + alarmContent + + ", alarmTime=" + alarmTime + + ", cancelTime=" + cancelTime + + ", alarmLng=" + alarmLng + + ", alarmLat=" + alarmLat + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java new file mode 100644 index 0000000..a0b7543 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + *

+ * 事件表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event") +@Data +@ApiModel("BusEvent") +public class BusEvent implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("事件ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件标题 + */ + @ApiModelProperty("事件名称") + @TableField("EVENT_TITLE") + private String eventTitle; + + /** + * 上报人员 + */ + @ApiModelProperty("上报人员") + @TableField("UPLOAD_NAME") + private String uploadName; + + /** + * 联系方式 + */ + @ApiModelProperty("联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 事件描述 + */ + @ApiModelProperty("事件描述") + @TableField("EVENT_DESCRIPTION") + private String eventDescription; + + @ApiModelProperty("经度") + @TableField("LNG") + private String lng; + + @ApiModelProperty("纬度") + @TableField("LAT") + private String lat; + + /** + * 事件上传时间 + */ + @ApiModelProperty("事件上传时间") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty("事件照片") + @TableField(exist = false) + private List imageList; + + + + @Override + public String toString() { + return "BusEvent{" + + "id=" + id + + ", eventTitle=" + eventTitle + + ", uploadName=" + uploadName + + ", phoneNumber=" + phoneNumber + + ", eventDescription=" + eventDescription + + ", lng=" + lng + + ", lat=" + lat + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java new file mode 100644 index 0000000..1e75245 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 事件图片表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event_image") +@Data +@ApiModel("BusEventImage") +public class BusEventImage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件ID + */ + @TableField("EVENT_ID") + private Long eventId; + + /** + * 报警图片 + */ + @TableField("IMAGE") + @ApiModelProperty("图片url") + private String image; + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java new file mode 100644 index 0000000..df89c70 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.core.base.json.DateDeserializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Device") +@TableName("br_device") +@Data +public class Device implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "设备ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty(value = "设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + /** + * 设备类型 + */ + @ApiModelProperty(value = "设备类型") + @TableField("DEVICE_TYPE") + private String deviceType; + + /** + * 设备批次 + */ + @ApiModelProperty(value = "设备批次") + @TableField("DEVICE_BATCH") + private String deviceBatch; + + /** + * 厂家 + */ + @ApiModelProperty(value = "厂家") + @TableField("MANUFACTURER") + private String manufacturer; + + /** + * 是否供电 + */ + @ApiModelProperty(value = "是否供电") + @TableField("IS_POWER_SUPPLY") + private String isPowerSupply; + + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间",dataType = "Date") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty(value = "设备类型名称") + @TableField(exist = false) + private String deviceTypeName; + + @ApiModelProperty(value = "是否供电名称") + @TableField(exist = false) + private String isPowerSupplyName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", deviceCode=" + deviceCode + + ", deviceType=" + deviceType + + ", deviceBatch=" + deviceBatch + + ", manufacturer=" + manufacturer + + ", isPowerSupply=" + isPowerSupply + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java new file mode 100644 index 0000000..5ee7015 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java @@ -0,0 +1,99 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 设备扩展信息表(安全树) + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Data +@TableName("br_device_ext") +public class DeviceExt implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 摄像头编号 + */ + @TableField("CAMERA_CODE") + private String cameraCode; + + /** + * 摄像头IP + */ + @TableField("CAMERA_IP") + private String cameraIp; + + /** + * 摄像头端口 + */ + @TableField("CAMERA_PORT") + private String cameraPort; + + /** + * 激甲编号 + */ + @TableField("GAS_CODE") + private String gasCode; + + /** + * 激甲IP + */ + @TableField("GAS_IP") + private String gasIp; + + /** + * 激甲端口 + */ + @TableField("GAS_PORT") + private String gasPort; + + /** + * 甲烷报警阈值 + */ + @TableField("GAS_THRESHOLD") + private String gasThreshold; + + @TableField(value = "HAT_LINING_CODE") + private String hatLiningCode; + + + @Override + public String toString() { + return "DeviceExt{" + + "id=" + id + + ", deviceId=" + deviceId + + ", cameraCode=" + cameraCode + + ", cameraIp=" + cameraIp + + ", cameraPort=" + cameraPort + + ", gasCode=" + gasCode + + ", gasIp=" + gasIp + + ", gasPort=" + gasPort + + ", gasThreshold=" + gasThreshold + + ", hatLiningCode=" + hatLiningCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java new file mode 100644 index 0000000..c4f3472 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java @@ -0,0 +1,62 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Data +@ApiModel("ProjectDevice") +@TableName("br_project_device") +public class ProjectDevice implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + @ApiModelProperty("设备ID(新增编辑时传)") + private Long deviceId; + + /** + * 设备编号 + */ + @TableField(exist = false) + @ApiModelProperty("设备编号(详情中展示,新增编辑不用传)") + private String deviceCode; + + @Override + public String toString() { + return "ProjectDevice{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java new file mode 100644 index 0000000..10b23c4 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java @@ -0,0 +1,104 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("ProjectWorker") +@TableName("br_project_worker") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ProjectWorker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 人员ID + */ + @ApiModelProperty("人员ID") + @TableField("WORKER_ID") + private Long workerId; + + /** + * 安全帽编号 + */ + @ApiModelProperty("安全帽编号") + @TableField("HAT_CODE") + private String hatCode; + + /** + * 背心编号 + */ + @ApiModelProperty("背心编号") + @TableField("VAST_CODE") + private String vastCode; + + /** + * 手环编号 + */ + @ApiModelProperty("手环编号") + @TableField("BRACELET_CODE") + private String braceletCode; + + @ApiModelProperty("人员姓名(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerName; + + @ApiModelProperty("人员部门ID(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptId; + + @ApiModelProperty("人员部门名称(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptName; + + @ApiModelProperty("人员联系方式(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerPhoneNumber; + + public ProjectWorker(Long projectId, Long workerId) { + this.projectId = projectId; + this.workerId = workerId; + } + + @Override + public String toString() { + return "ProjectWorker{" + + "id=" + id + + ", projectId=" + projectId + + ", workerId=" + workerId + + ", hatCode=" + hatCode + + ", vastCode=" + vastCode + + ", braceletCode=" + braceletCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java new file mode 100644 index 0000000..fa6f41d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 作业现场表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("WorkSiteInfo") +@TableName("br_work_site_info") +@Data +public class WorkSiteInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("作业现场ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业名称 + */ + @ApiModelProperty("作业名称") + @TableField("WORK_TITLE") + private String workTitle; + + /** + * 责任人 + */ + @ApiModelProperty("责任人(人员ID)") + @TableField("WORK_PERSON") + private Long workPerson; + + /** + * 作业描述 + */ + @ApiModelProperty("作业描述") + @TableField("WORK_SITE_DESC") + private String workSiteDesc; + + /** + * 作业状态 + */ + @ApiModelProperty("作业状态") + @TableField("PROJECT_STATE") + private String projectState; + + /** + * 所属道路 + */ + @ApiModelProperty("所属道路") + @TableField("WORK_ROAD") + private String workRoad; + + @TableField("IMAGE_URL") + private String imageUrl; + + @TableField("CREATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + @TableField("UPDATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("FINISH_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + @ApiModelProperty("负责人姓名(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonName; + + @ApiModelProperty("负责人联系方式(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonPhoneNumber; + + @ApiModelProperty("负责人所属部门ID(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private Long workPersonDeptId; + + @ApiModelProperty("负责人所属部门名称(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonDeptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + + @Override + public String toString() { + return "WorkSiteInfo{" + + "id=" + id + + ", workTitle=" + workTitle + + ", workPerson=" + workPerson + + ", workSiteDesc=" + workSiteDesc + + ", projectState=" + projectState + + ", imageUrl=" + imageUrl + + ", updateTime=" + updateTime + + ", workRoad=" + workRoad + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java new file mode 100644 index 0000000..28a4daa --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java @@ -0,0 +1,147 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Worker") +@TableName("br_worker") +@Data +public class Worker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "人员ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 姓名 + */ + @ApiModelProperty(value = "姓名") + @TableField("WORKER_NAME") + private String workerName; + + /** + * 性别 + */ + @ApiModelProperty(value = "性别") + @TableField("GENDER") + private String gender; + + /** + * 所属部门 + */ + @ApiModelProperty(value = "所属部门(人员管理)") + @TableField("DEPT_ID") + private Long deptId; + + /** + * 所属单位 + */ + @ApiModelProperty(value = "所属单位(入场申请中使用)") + @TableField("OWNER_SHIP") + private String ownerShip; + + /** + * 联系方式 + */ + @ApiModelProperty(value = "联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 证件号 + */ + @ApiModelProperty(value = "证件号") + @TableField("ID_CARD_NUMBER") + private String idCardNumber; + + /** + * 入场原因 + */ + @ApiModelProperty(value = "入场原因(入场申请中使用)") + @TableField("ENTER_REASON") + private String enterReason; + + /** + * 入场人脸照片 + */ + @ApiModelProperty(value = "人脸照片(照片路径)") + @TableField("WORKER_AVATAR") + private String workerAvatar; + + /** + * 申请入场时间 + */ + @ApiModelProperty(value = "注册时间/申请入场时间") + @TableField("CREATE_TIME") + private Date createTime; + + /** + * 人员类型 + */ + @ApiModelProperty(value = "人员类型(区分人员管理和入场申请)") + @TableField("WORKER_TYPE") + private String workerType; + + @ApiModelProperty(value = "性别名称") + @TableField(exist = false) + private String genderName; + + @ApiModelProperty(value = "部门名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @ApiModelProperty(value = "是否注册(0未注册;1已注册)",allowableValues = "0,1") + @TableField(exist = false) + private String isRegister; + + @Override + public String toString() { + return "Worker{" + + "id=" + id + + ", workerName=" + workerName + + ", gender=" + gender + + ", deptId=" + deptId + + ", ownerShip=" + ownerShip + + ", phoneNumber=" + phoneNumber + + ", idCardNumber=" + idCardNumber + + ", enterReason=" + enterReason + + ", workerAvatar=" + workerAvatar + + ", createTime=" + createTime + + ", workerType=" + workerType + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java new file mode 100644 index 0000000..9801742 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警记录表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusAlarmMapper extends BaseMapper { + + Page listPage(Page page,@Param("ew") QueryWrapper queryWrapper); + + void cancelAlarm(@Param("deviceId")Long deviceId,@Param("alarmType") String alarmType); + + List alarmCount(@Param("projectId")Long projectId, @Param("alarmStatus")String alarmStatus); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java new file mode 100644 index 0000000..9590b7d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件图片表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventImageMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java new file mode 100644 index 0000000..3c85edf --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java new file mode 100644 index 0000000..4ca9212 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 设备扩展信息表(安全树) Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface DeviceExtMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java new file mode 100644 index 0000000..444c0c5 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Mapper +public interface DeviceMapper extends BaseMapper { + + Page listDetailPage(Page page,@Param("ew") QueryWrapper ew); + + List selectProjectDevice(@Param("projectId") Long projectId); + + List selectHelmetList(@Param("deviceType")String deviceType); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java new file mode 100644 index 0000000..1d0c14e --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectDeviceMapper extends BaseMapper { + List selectDetailByProjectId(@Param("projectId") Long projectId); + + List selectDeviceLocationList(@Param("projectId") Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java new file mode 100644 index 0000000..58583d1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectWorkerMapper extends BaseMapper { + + List selectDetailByProjectId(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + + List selectWorkerLocationList(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java new file mode 100644 index 0000000..a4934d2 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +/** + *

+ * 作业现场表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkSiteInfoMapper extends BaseMapper { + + Page selectListPage(Page page,@Param("ew") QueryWrapper ew); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java new file mode 100644 index 0000000..258fb12 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkerMapper extends BaseMapper { + + + Page selectListPage(Page page, @Param("ew") QueryWrapper ew); + + List selectWorkerAvatars(@Param("projectId")Long projectId); + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml new file mode 100644 index 0000000..595088a --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml @@ -0,0 +1,58 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml new file mode 100644 index 0000000..fbc3db3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml new file mode 100644 index 0000000..627d573 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml new file mode 100644 index 0000000..5321d1c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml new file mode 100644 index 0000000..94262e1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml @@ -0,0 +1,97 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml new file mode 100644 index 0000000..c6d1c24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml @@ -0,0 +1,29 @@ + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml new file mode 100644 index 0000000..8d2de10 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml new file mode 100644 index 0000000..8f01326 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml @@ -0,0 +1,26 @@ + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml new file mode 100644 index 0000000..3e28b39 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml @@ -0,0 +1,56 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java new file mode 100644 index 0000000..f63c19c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 报警记录表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusAlarmService extends IService { + + boolean alarmUpload(AlarmUpload alarmUpload); + + Page listPage(Page page,QueryWrapper queryWrapper); + + List alarmCount(Long projectId,String alarmStatus); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java new file mode 100644 index 0000000..b1187ed --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 事件图片表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusEventImageService extends IService { + + boolean saveBusEventImages(Long eventId, List imageList); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java new file mode 100644 index 0000000..85c48d0 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 事件表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusEventService extends IService { + + boolean saveBusEvent(BusEvent busEvent); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java new file mode 100644 index 0000000..6fc5361 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 设备扩展信息表(安全树) 服务类 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface IDeviceExtService extends IService { + + boolean saveDeviceExt(DeviceDetailDTO deviceDetailDTO); + + boolean updateDeviceExt(DeviceDetailDTO deviceDetailDTO); + + boolean removeByDeviceIds(List deviceIds); + + boolean setGasThreshold(String gasIp,String gasPort,String threshold); + + String getGasThreshold(String gasIp,String gasPort); + + Long selectByGasIpPort(String gasIp,String gasPort); + + Long selectByCameraIpPort(String cameraIp,String cameraPort); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java new file mode 100644 index 0000000..9e62756 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java @@ -0,0 +1,32 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IDeviceService extends IService { + + boolean saveDevice(DeviceDetailDTO deviceDetailDTO); + + boolean updateDevice(DeviceDetailDTO deviceDetailDTO); + + boolean deleteDevices(List deviceIds); + + Page listPage(Page page, QueryWrapper queryWrapper, String status,Long projectId); + + List selectProjectDevice(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java new file mode 100644 index 0000000..8599411 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IProjectDeviceService extends IService { + + boolean saveProjectDeviceList(Long projectId, List projectDeviceList); + + boolean updateProjectDeviceList(Long projectId, List projectDeviceList); + + boolean deleteByProjectId(Long projectId); + + boolean deleteByProjectIds(List projectIds); + + List selectDetailByProjectId(Long projectId); + + Long selectProjectIdByDevice(Long deviceId); + + List selectDeviceLocationList(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java new file mode 100644 index 0000000..e921bc3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IProjectWorkerService extends IService { + + boolean saveProjectWorkerList(Long projectId, List projectWorkerList); + + boolean updateProjectWorkerList(Long projectId, List projectWorkerList); + + boolean deleteByProjectId(Long projectId); + + boolean deleteByProjectIds(List projectIds); + + List selectDetailByProjectId(Long projectId,String workerType); + + List selectWorkerLocationDTO(Long projectId); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java new file mode 100644 index 0000000..58a8590 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; +/** + *

+ * 作业现场表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IWorkSiteInfoService extends IService { + + boolean addWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO); + + boolean updateWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO); + + boolean deleteProjects(List projectIds); + + WorkSiteDetailDTO getWorkSiteDetail(Long projectId); + + Page selectListPage(Page page, QueryWrapper queryWrapper); + + boolean start(Long projectId); + + boolean finish(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java new file mode 100644 index 0000000..6c6ee98 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.extension.service.IService; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IWorkerService extends IService { + + boolean addWorker(Worker worker,Long projectId); + + Page selectListPage(Page page,QueryWrapper ew); + + Worker selectWorkerDetail(Long workerId); + + List faceRegister(String cameraIp,String cameraPort); + + List projectTempWorker(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java new file mode 100644 index 0000000..b44de1d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.consts.AlarmTypeEnum; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.entity.DataTreeLocation; +import com.casic.missiles.modular.system.mapper.BusAlarmMapper; +import com.casic.missiles.modular.system.service.*; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +/** + *

+ * 报警记录表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +@Slf4j +public class BusAlarmServiceImpl extends ServiceImpl implements IBusAlarmService { + + private final IDeviceExtService deviceExtService; + private final IDeviceService deviceService; + private final IProjectDeviceService projectDeviceService; + + private final ICasicFileService fileService; + + private final AbstractDictService dictService; + private final IDataSupportService dataSupportService; + + @Override + @Transactional + public boolean alarmUpload(AlarmUpload alarmUpload) { + log.info("alarm upload ==> {}",alarmUpload.toString()); + Long deviceId = null; + if(StrUtil.isAllNotBlank(alarmUpload.getGasIp(),alarmUpload.getGasPort())){ + deviceId = deviceExtService.selectByGasIpPort(alarmUpload.getGasIp(),alarmUpload.getGasPort()); + } + if(ObjectUtil.isEmpty(deviceId) && StrUtil.isAllNotBlank(alarmUpload.getCameraIp(),alarmUpload.getCameraPort())){ + deviceId = deviceExtService.selectByCameraIpPort(alarmUpload.getCameraIp(),alarmUpload.getCameraPort()); + } + + if(ObjectUtil.isEmpty(deviceId)){ + return false; + } + + BusAlarm alarm = new BusAlarm(); + alarm.setDeviceId(deviceId); + alarm.setProjectId(projectDeviceService.selectProjectIdByDevice(deviceId)); + alarm.setAlarmValue(alarmUpload.getAlarmValue()); + if(StrUtil.isNotEmpty(alarmUpload.getAlarmTime())){ + alarm.setAlarmTime(DateUtil.parseDateTime(alarmUpload.getAlarmTime())); + }else { + alarm.setAlarmTime(new Date()); + } + + alarm.setAlarmType(alarmUpload.getAlarmType()); + alarm.setAlarmContent(alarmUpload.getAlarmContent()); + if(StrUtil.isNotEmpty(alarmUpload.getAlarmImage())){ + String imgBase64 = "data:image/jpeg;base64," + alarmUpload.getAlarmImage(); + String imageUrl = fileService.saveFile(imgBase64); + alarm.setAlarmImage(imageUrl); + } + alarm.setAlarmStatus(ALARM_STATUS_ON); + + DataTreeLocation treeLocation = dataSupportService.getTreeLocation(deviceId); + if(ObjectUtil.isNotEmpty(treeLocation)){ + alarm.setAlarmLng(treeLocation.getGdLng()); + alarm.setAlarmLat(treeLocation.getGdLat()); + } + + //自动消警 + AlarmTypeEnum alarmTypeEnum = AlarmTypeEnum.getByAlarmType(alarm.getAlarmType()); + if(ObjectUtil.isNotEmpty(alarmTypeEnum) && alarmTypeEnum.isAutoCancel()){ + this.baseMapper.cancelAlarm(deviceId,alarm.getAlarmType()); + } + return this.save(alarm); + } + + @Override + public Page listPage(Page page, QueryWrapper queryWrapper) { + page = this.baseMapper.listPage(page, queryWrapper); + for (BusAlarm alarm : page.getRecords()) { + alarm.setAlarmTypeName(dictService.getDictNameByCode("alarmType",alarm.getAlarmType())); + alarm.setAlarmStatusName(dictService.getDictNameByCode("alarmStatus",alarm.getAlarmStatus())); + if(StrUtil.isNotEmpty(alarm.getProjectState())){ + alarm.setProjectStateName(dictService.getDictNameByCode("projectStatus",alarm.getProjectState())); + } + } + return page; + } + + @Override + public List alarmCount(Long projectId, String alarmStatus) { + List list = this.baseMapper.alarmCount(projectId, alarmStatus); + list = list.stream().filter(i->StrUtil.isNotEmpty(i.getAlarmType())).collect(Collectors.toList()); + for (AlarmTypeCountDTO countDTO : list) { + countDTO.setAlarmTypeName(dictService.getDictNameByCode("alarmType",countDTO.getAlarmType())); + } + return list; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java new file mode 100644 index 0000000..a43f7c1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.casic.missiles.modular.system.mapper.BusEventImageMapper; +import com.casic.missiles.modular.system.service.IBusEventImageService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 事件图片表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +public class BusEventImageServiceImpl extends ServiceImpl implements IBusEventImageService { + + @Override + public boolean saveBusEventImages(Long eventId, List imageList) { + imageList.forEach(i->i.setEventId(eventId)); + return this.saveBatch(imageList); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java new file mode 100644 index 0000000..21e511c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java @@ -0,0 +1,39 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.mapper.BusEventMapper; +import com.casic.missiles.modular.system.service.IBusEventImageService; +import com.casic.missiles.modular.system.service.IBusEventService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; + +/** + *

+ * 事件表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class BusEventServiceImpl extends ServiceImpl implements IBusEventService { + + private final IBusEventImageService busEventImageService; + + + @Override + @Transactional + public boolean saveBusEvent(BusEvent busEvent) { + busEvent.setCreateTime(new Date()); + boolean res = this.save(busEvent); + if(res){ + res = busEventImageService.saveBusEventImages(busEvent.getId(),busEvent.getImageList()); + } + return res; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java new file mode 100644 index 0000000..2bdb63d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java @@ -0,0 +1,102 @@ +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.core.conditions.update.UpdateWrapper; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.casic.missiles.modular.system.mapper.DeviceExtMapper; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 设备扩展信息表(安全树) 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Service +public class DeviceExtServiceImpl extends ServiceImpl implements IDeviceExtService { + + + @Override + public boolean saveDeviceExt(DeviceDetailDTO deviceDetailDTO) { + DeviceExt ext = new DeviceExt(); + ext.setDeviceId(deviceDetailDTO.getId()); + ext.setCameraCode(deviceDetailDTO.getCameraCode()); + ext.setCameraIp(deviceDetailDTO.getCameraIp()); + ext.setCameraPort(deviceDetailDTO.getCameraPort()); + ext.setGasCode(deviceDetailDTO.getGasCode()); + ext.setGasIp(deviceDetailDTO.getGasIp()); + ext.setGasPort(deviceDetailDTO.getGasPort()); + ext.setHatLiningCode(deviceDetailDTO.getHatLiningCode()); + return this.save(ext); + } + + @Override + public boolean updateDeviceExt(DeviceDetailDTO deviceDetailDTO) { + DeviceExt ext = this.selectByDeviceId(deviceDetailDTO.getId()); + ext.setCameraCode(deviceDetailDTO.getCameraCode()); + ext.setCameraIp(deviceDetailDTO.getCameraIp()); + ext.setCameraPort(deviceDetailDTO.getCameraPort()); + ext.setGasCode(deviceDetailDTO.getGasCode()); + ext.setGasIp(deviceDetailDTO.getGasIp()); + ext.setGasPort(deviceDetailDTO.getGasPort()); + ext.setHatLiningCode(deviceDetailDTO.getHatLiningCode()); + return this.updateById(ext); + } + + @Override + public boolean removeByDeviceIds(List deviceIds) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("DEVICE_ID",deviceIds); + return this.remove(queryWrapper); + } + + @Override + public boolean setGasThreshold(String gasIp, String gasPort, String threshold) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.set("GAS_THRESHOLD",threshold); + updateWrapper.eq("GAS_IP",gasIp); + updateWrapper.eq("GAS_PORT",gasPort); + return this.update(updateWrapper); + } + + @Override + public String getGasThreshold(String gasIp, String gasPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("GAS_IP",gasIp); + queryWrapper.eq("GAS_PORT",gasPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getGasThreshold() : null; + } + + private DeviceExt selectByDeviceId(Long deviceId){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVICE_ID",deviceId); + return this.getOne(queryWrapper); + } + + @Override + public Long selectByGasIpPort(String gasIp, String gasPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("GAS_IP",gasIp); + queryWrapper.eq("GAS_PORT",gasPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getDeviceId() : null; + } + + @Override + public Long selectByCameraIpPort(String cameraIp, String cameraPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("CAMERA_IP",cameraIp); + queryWrapper.eq("CAMERA_PORT",cameraPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getDeviceId() : null; + } +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java new file mode 100644 index 0000000..73d7799 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.dto; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "AlarmUpload",description = "报警上传") +@Data +public class AlarmUpload { + + @ApiModelProperty(value = "摄像头ip") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + @ApiModelProperty(value = "安全树甲烷设备ip") + private String gasIp; + @ApiModelProperty(value = "安全树甲烷设备端口") + private String gasPort; + @ApiModelProperty(value = "报警值") + private String alarmValue; + @ApiModelProperty(value = "报警时间") + private String alarmTime; + @ApiModelProperty(value = "报警类型") + private String alarmType; + @ApiModelProperty(value = "报警图片") + private String alarmImage; + @ApiModelProperty(value = "报警内容") + private String alarmContent; + + @Override + public String toString() { + return "AlarmUpload{" + + "cameraIp='" + cameraIp + '\'' + + ", cameraPort='" + cameraPort + '\'' + + ", gasIp='" + gasIp + '\'' + + ", gasPort='" + gasPort + '\'' + + ", alarmValue='" + alarmValue + '\'' + + ", alarmTime='" + alarmTime + '\'' + + ", alarmType='" + alarmType + '\'' + + ", alarmImage='" + (StrUtil.isNotEmpty(alarmImage) ? alarmImage.substring(0,50) : "null") + '\'' + + ", alarmContent='" + alarmContent + '\'' + + '}'; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java new file mode 100644 index 0000000..ea518d9 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.modular.system.entity.Device; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("DeviceDetailDTO") +@Data +public class DeviceDetailDTO extends Device { + + @ApiModelProperty(value = "摄像头编号") + private String cameraCode; + + @ApiModelProperty(value = "摄像头IP") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + + @ApiModelProperty(value = "激甲编号") + private String gasCode; + + @ApiModelProperty(value = "激甲IP") + private String gasIp; + + @ApiModelProperty(value = "激甲端口") + private String gasPort; + + @ApiModelProperty(value = "智能帽衬编号") + private String hatLiningCode; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java new file mode 100644 index 0000000..29378ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("WorkSiteDetailDTO") +public class WorkSiteDetailDTO extends WorkSiteInfo { + + @ApiModelProperty(value = "安全树列表",dataType = "ProjectDevice") + private List deviceList; + + @ApiModelProperty(value = "人员列表",dataType = "ProjectWorker") + private List workerList; + + + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java new file mode 100644 index 0000000..6fd7b24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java @@ -0,0 +1,68 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "WorkerLocationDTO",description = "人员位置列表(首页)") +@Data +public class WorkerLocationDTO { + + @ApiModelProperty("人员ID") + private Long workerId; + + @ApiModelProperty("人员姓名") + private String workerName; + + @ApiModelProperty("安全帽编号") + private String hatCode; + + @ApiModelProperty("安全帽ID") + private Long hatId; + + @ApiModelProperty("背心编号") + private String vastCode; + + @ApiModelProperty("手环编号") + private String braceletCode; + + @ApiModelProperty("位置") + private String location; + + @ApiModelProperty("时间") + private String time; + + @ApiModelProperty("经度") + private String lng; + + @ApiModelProperty("纬度") + private String lat; + + @ApiModelProperty("心率") + private String heartRate; + + @ApiModelProperty("血氧") + private String bloodOxygen; + + @ApiModelProperty("一氧化碳") + private String co; + + @ApiModelProperty("甲烷") + private String gas; + + @ApiModelProperty("硫化氢") + private String h2s; + + @ApiModelProperty("氧气") + private String o2; + + @ApiModelProperty("信号") + private String signal; + + @ApiModelProperty("电量") + private String cell; + + @ApiModelProperty("是否报警") + private boolean alarmFlag; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java new file mode 100644 index 0000000..efb4a23 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java @@ -0,0 +1,159 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 报警记录表 + *

+ * + * @author zyj + * @since 2023-05-16 + */ +@Data +@ApiModel("Alarm") +@TableName("br_bus_alarm") +public class BusAlarm implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @ApiModelProperty(value = "设备ID") + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 报警类型 + */ + @ApiModelProperty(value = "报警类型") + @TableField("ALARM_TYPE") + private String alarmType; + + /** + * 报警状态 + */ + @ApiModelProperty(value = "报警状态") + @TableField("ALARM_STATUS") + private String alarmStatus; + + /** + * 报警值 + */ + @ApiModelProperty(value = "报警值") + @TableField("ALARM_VALUE") + private String alarmValue; + + /** + * 报警图片 + */ + @ApiModelProperty(value = "报警图片") + @TableField("ALARM_IMAGE") + private String alarmImage; + + /** + * 报警内容 + */ + @ApiModelProperty(value = "报警内容") + @TableField("ALARM_CONTENT") + private String alarmContent; + + /** + * 报警时间 + */ + @ApiModelProperty(value = "报警时间") + @TableField("ALARM_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date alarmTime; + + /** + * 消警时间 + */ + @ApiModelProperty(value = "消警时间") + @TableField("CANCEL_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + /** + * 报警位置经度 + */ + @ApiModelProperty(value = "报警位置经度") + @TableField("ALARM_LNG") + private String alarmLng; + + /** + * 报警位置纬度 + */ + @ApiModelProperty(value = "报警位置纬度") + @TableField("ALARM_LAT") + private String alarmLat; + + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmStatusName; + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmTypeName; + @ApiModelProperty("作业名称") + @TableField(exist = false) + private String workTitle; + @ApiModelProperty("所属道路") + @TableField(exist = false) + private String workRoad; + @ApiModelProperty("作业状态") + @TableField(exist = false) + private String projectState; + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + @ApiModelProperty("负责人姓名") + @TableField(exist = false) + private String workPersonName; + @ApiModelProperty("负责人联系方式") + @TableField(exist = false) + private String workPersonPhoneNumber; + + + @Override + public String toString() { + return "BusAlarm{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + ", alarmType=" + alarmType + + ", alarmValue=" + alarmValue + + ", alarmStatus=" + alarmStatus + + ", alarmImage=" + alarmImage + + ", alarmContent=" + alarmContent + + ", alarmTime=" + alarmTime + + ", cancelTime=" + cancelTime + + ", alarmLng=" + alarmLng + + ", alarmLat=" + alarmLat + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java new file mode 100644 index 0000000..a0b7543 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + *

+ * 事件表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event") +@Data +@ApiModel("BusEvent") +public class BusEvent implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("事件ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件标题 + */ + @ApiModelProperty("事件名称") + @TableField("EVENT_TITLE") + private String eventTitle; + + /** + * 上报人员 + */ + @ApiModelProperty("上报人员") + @TableField("UPLOAD_NAME") + private String uploadName; + + /** + * 联系方式 + */ + @ApiModelProperty("联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 事件描述 + */ + @ApiModelProperty("事件描述") + @TableField("EVENT_DESCRIPTION") + private String eventDescription; + + @ApiModelProperty("经度") + @TableField("LNG") + private String lng; + + @ApiModelProperty("纬度") + @TableField("LAT") + private String lat; + + /** + * 事件上传时间 + */ + @ApiModelProperty("事件上传时间") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty("事件照片") + @TableField(exist = false) + private List imageList; + + + + @Override + public String toString() { + return "BusEvent{" + + "id=" + id + + ", eventTitle=" + eventTitle + + ", uploadName=" + uploadName + + ", phoneNumber=" + phoneNumber + + ", eventDescription=" + eventDescription + + ", lng=" + lng + + ", lat=" + lat + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java new file mode 100644 index 0000000..1e75245 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 事件图片表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event_image") +@Data +@ApiModel("BusEventImage") +public class BusEventImage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件ID + */ + @TableField("EVENT_ID") + private Long eventId; + + /** + * 报警图片 + */ + @TableField("IMAGE") + @ApiModelProperty("图片url") + private String image; + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java new file mode 100644 index 0000000..df89c70 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.core.base.json.DateDeserializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Device") +@TableName("br_device") +@Data +public class Device implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "设备ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty(value = "设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + /** + * 设备类型 + */ + @ApiModelProperty(value = "设备类型") + @TableField("DEVICE_TYPE") + private String deviceType; + + /** + * 设备批次 + */ + @ApiModelProperty(value = "设备批次") + @TableField("DEVICE_BATCH") + private String deviceBatch; + + /** + * 厂家 + */ + @ApiModelProperty(value = "厂家") + @TableField("MANUFACTURER") + private String manufacturer; + + /** + * 是否供电 + */ + @ApiModelProperty(value = "是否供电") + @TableField("IS_POWER_SUPPLY") + private String isPowerSupply; + + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间",dataType = "Date") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty(value = "设备类型名称") + @TableField(exist = false) + private String deviceTypeName; + + @ApiModelProperty(value = "是否供电名称") + @TableField(exist = false) + private String isPowerSupplyName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", deviceCode=" + deviceCode + + ", deviceType=" + deviceType + + ", deviceBatch=" + deviceBatch + + ", manufacturer=" + manufacturer + + ", isPowerSupply=" + isPowerSupply + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java new file mode 100644 index 0000000..5ee7015 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java @@ -0,0 +1,99 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 设备扩展信息表(安全树) + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Data +@TableName("br_device_ext") +public class DeviceExt implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 摄像头编号 + */ + @TableField("CAMERA_CODE") + private String cameraCode; + + /** + * 摄像头IP + */ + @TableField("CAMERA_IP") + private String cameraIp; + + /** + * 摄像头端口 + */ + @TableField("CAMERA_PORT") + private String cameraPort; + + /** + * 激甲编号 + */ + @TableField("GAS_CODE") + private String gasCode; + + /** + * 激甲IP + */ + @TableField("GAS_IP") + private String gasIp; + + /** + * 激甲端口 + */ + @TableField("GAS_PORT") + private String gasPort; + + /** + * 甲烷报警阈值 + */ + @TableField("GAS_THRESHOLD") + private String gasThreshold; + + @TableField(value = "HAT_LINING_CODE") + private String hatLiningCode; + + + @Override + public String toString() { + return "DeviceExt{" + + "id=" + id + + ", deviceId=" + deviceId + + ", cameraCode=" + cameraCode + + ", cameraIp=" + cameraIp + + ", cameraPort=" + cameraPort + + ", gasCode=" + gasCode + + ", gasIp=" + gasIp + + ", gasPort=" + gasPort + + ", gasThreshold=" + gasThreshold + + ", hatLiningCode=" + hatLiningCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java new file mode 100644 index 0000000..c4f3472 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java @@ -0,0 +1,62 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Data +@ApiModel("ProjectDevice") +@TableName("br_project_device") +public class ProjectDevice implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + @ApiModelProperty("设备ID(新增编辑时传)") + private Long deviceId; + + /** + * 设备编号 + */ + @TableField(exist = false) + @ApiModelProperty("设备编号(详情中展示,新增编辑不用传)") + private String deviceCode; + + @Override + public String toString() { + return "ProjectDevice{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java new file mode 100644 index 0000000..10b23c4 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java @@ -0,0 +1,104 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("ProjectWorker") +@TableName("br_project_worker") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ProjectWorker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 人员ID + */ + @ApiModelProperty("人员ID") + @TableField("WORKER_ID") + private Long workerId; + + /** + * 安全帽编号 + */ + @ApiModelProperty("安全帽编号") + @TableField("HAT_CODE") + private String hatCode; + + /** + * 背心编号 + */ + @ApiModelProperty("背心编号") + @TableField("VAST_CODE") + private String vastCode; + + /** + * 手环编号 + */ + @ApiModelProperty("手环编号") + @TableField("BRACELET_CODE") + private String braceletCode; + + @ApiModelProperty("人员姓名(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerName; + + @ApiModelProperty("人员部门ID(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptId; + + @ApiModelProperty("人员部门名称(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptName; + + @ApiModelProperty("人员联系方式(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerPhoneNumber; + + public ProjectWorker(Long projectId, Long workerId) { + this.projectId = projectId; + this.workerId = workerId; + } + + @Override + public String toString() { + return "ProjectWorker{" + + "id=" + id + + ", projectId=" + projectId + + ", workerId=" + workerId + + ", hatCode=" + hatCode + + ", vastCode=" + vastCode + + ", braceletCode=" + braceletCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java new file mode 100644 index 0000000..fa6f41d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 作业现场表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("WorkSiteInfo") +@TableName("br_work_site_info") +@Data +public class WorkSiteInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("作业现场ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业名称 + */ + @ApiModelProperty("作业名称") + @TableField("WORK_TITLE") + private String workTitle; + + /** + * 责任人 + */ + @ApiModelProperty("责任人(人员ID)") + @TableField("WORK_PERSON") + private Long workPerson; + + /** + * 作业描述 + */ + @ApiModelProperty("作业描述") + @TableField("WORK_SITE_DESC") + private String workSiteDesc; + + /** + * 作业状态 + */ + @ApiModelProperty("作业状态") + @TableField("PROJECT_STATE") + private String projectState; + + /** + * 所属道路 + */ + @ApiModelProperty("所属道路") + @TableField("WORK_ROAD") + private String workRoad; + + @TableField("IMAGE_URL") + private String imageUrl; + + @TableField("CREATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + @TableField("UPDATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("FINISH_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + @ApiModelProperty("负责人姓名(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonName; + + @ApiModelProperty("负责人联系方式(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonPhoneNumber; + + @ApiModelProperty("负责人所属部门ID(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private Long workPersonDeptId; + + @ApiModelProperty("负责人所属部门名称(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonDeptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + + @Override + public String toString() { + return "WorkSiteInfo{" + + "id=" + id + + ", workTitle=" + workTitle + + ", workPerson=" + workPerson + + ", workSiteDesc=" + workSiteDesc + + ", projectState=" + projectState + + ", imageUrl=" + imageUrl + + ", updateTime=" + updateTime + + ", workRoad=" + workRoad + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java new file mode 100644 index 0000000..28a4daa --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java @@ -0,0 +1,147 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Worker") +@TableName("br_worker") +@Data +public class Worker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "人员ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 姓名 + */ + @ApiModelProperty(value = "姓名") + @TableField("WORKER_NAME") + private String workerName; + + /** + * 性别 + */ + @ApiModelProperty(value = "性别") + @TableField("GENDER") + private String gender; + + /** + * 所属部门 + */ + @ApiModelProperty(value = "所属部门(人员管理)") + @TableField("DEPT_ID") + private Long deptId; + + /** + * 所属单位 + */ + @ApiModelProperty(value = "所属单位(入场申请中使用)") + @TableField("OWNER_SHIP") + private String ownerShip; + + /** + * 联系方式 + */ + @ApiModelProperty(value = "联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 证件号 + */ + @ApiModelProperty(value = "证件号") + @TableField("ID_CARD_NUMBER") + private String idCardNumber; + + /** + * 入场原因 + */ + @ApiModelProperty(value = "入场原因(入场申请中使用)") + @TableField("ENTER_REASON") + private String enterReason; + + /** + * 入场人脸照片 + */ + @ApiModelProperty(value = "人脸照片(照片路径)") + @TableField("WORKER_AVATAR") + private String workerAvatar; + + /** + * 申请入场时间 + */ + @ApiModelProperty(value = "注册时间/申请入场时间") + @TableField("CREATE_TIME") + private Date createTime; + + /** + * 人员类型 + */ + @ApiModelProperty(value = "人员类型(区分人员管理和入场申请)") + @TableField("WORKER_TYPE") + private String workerType; + + @ApiModelProperty(value = "性别名称") + @TableField(exist = false) + private String genderName; + + @ApiModelProperty(value = "部门名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @ApiModelProperty(value = "是否注册(0未注册;1已注册)",allowableValues = "0,1") + @TableField(exist = false) + private String isRegister; + + @Override + public String toString() { + return "Worker{" + + "id=" + id + + ", workerName=" + workerName + + ", gender=" + gender + + ", deptId=" + deptId + + ", ownerShip=" + ownerShip + + ", phoneNumber=" + phoneNumber + + ", idCardNumber=" + idCardNumber + + ", enterReason=" + enterReason + + ", workerAvatar=" + workerAvatar + + ", createTime=" + createTime + + ", workerType=" + workerType + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java new file mode 100644 index 0000000..9801742 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警记录表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusAlarmMapper extends BaseMapper { + + Page listPage(Page page,@Param("ew") QueryWrapper queryWrapper); + + void cancelAlarm(@Param("deviceId")Long deviceId,@Param("alarmType") String alarmType); + + List alarmCount(@Param("projectId")Long projectId, @Param("alarmStatus")String alarmStatus); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java new file mode 100644 index 0000000..9590b7d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件图片表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventImageMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java new file mode 100644 index 0000000..3c85edf --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java new file mode 100644 index 0000000..4ca9212 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 设备扩展信息表(安全树) Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface DeviceExtMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java new file mode 100644 index 0000000..444c0c5 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Mapper +public interface DeviceMapper extends BaseMapper { + + Page listDetailPage(Page page,@Param("ew") QueryWrapper ew); + + List selectProjectDevice(@Param("projectId") Long projectId); + + List selectHelmetList(@Param("deviceType")String deviceType); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java new file mode 100644 index 0000000..1d0c14e --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectDeviceMapper extends BaseMapper { + List selectDetailByProjectId(@Param("projectId") Long projectId); + + List selectDeviceLocationList(@Param("projectId") Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java new file mode 100644 index 0000000..58583d1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectWorkerMapper extends BaseMapper { + + List selectDetailByProjectId(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + + List selectWorkerLocationList(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java new file mode 100644 index 0000000..a4934d2 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +/** + *

+ * 作业现场表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkSiteInfoMapper extends BaseMapper { + + Page selectListPage(Page page,@Param("ew") QueryWrapper ew); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java new file mode 100644 index 0000000..258fb12 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkerMapper extends BaseMapper { + + + Page selectListPage(Page page, @Param("ew") QueryWrapper ew); + + List selectWorkerAvatars(@Param("projectId")Long projectId); + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml new file mode 100644 index 0000000..595088a --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml @@ -0,0 +1,58 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml new file mode 100644 index 0000000..fbc3db3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml new file mode 100644 index 0000000..627d573 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml new file mode 100644 index 0000000..5321d1c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml new file mode 100644 index 0000000..94262e1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml @@ -0,0 +1,97 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml new file mode 100644 index 0000000..c6d1c24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml @@ -0,0 +1,29 @@ + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml new file mode 100644 index 0000000..8d2de10 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml new file mode 100644 index 0000000..8f01326 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml @@ -0,0 +1,26 @@ + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml new file mode 100644 index 0000000..3e28b39 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml @@ -0,0 +1,56 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java new file mode 100644 index 0000000..f63c19c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 报警记录表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusAlarmService extends IService { + + boolean alarmUpload(AlarmUpload alarmUpload); + + Page listPage(Page page,QueryWrapper queryWrapper); + + List alarmCount(Long projectId,String alarmStatus); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java new file mode 100644 index 0000000..b1187ed --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 事件图片表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusEventImageService extends IService { + + boolean saveBusEventImages(Long eventId, List imageList); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java new file mode 100644 index 0000000..85c48d0 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 事件表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusEventService extends IService { + + boolean saveBusEvent(BusEvent busEvent); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java new file mode 100644 index 0000000..6fc5361 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 设备扩展信息表(安全树) 服务类 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface IDeviceExtService extends IService { + + boolean saveDeviceExt(DeviceDetailDTO deviceDetailDTO); + + boolean updateDeviceExt(DeviceDetailDTO deviceDetailDTO); + + boolean removeByDeviceIds(List deviceIds); + + boolean setGasThreshold(String gasIp,String gasPort,String threshold); + + String getGasThreshold(String gasIp,String gasPort); + + Long selectByGasIpPort(String gasIp,String gasPort); + + Long selectByCameraIpPort(String cameraIp,String cameraPort); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java new file mode 100644 index 0000000..9e62756 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java @@ -0,0 +1,32 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IDeviceService extends IService { + + boolean saveDevice(DeviceDetailDTO deviceDetailDTO); + + boolean updateDevice(DeviceDetailDTO deviceDetailDTO); + + boolean deleteDevices(List deviceIds); + + Page listPage(Page page, QueryWrapper queryWrapper, String status,Long projectId); + + List selectProjectDevice(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java new file mode 100644 index 0000000..8599411 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IProjectDeviceService extends IService { + + boolean saveProjectDeviceList(Long projectId, List projectDeviceList); + + boolean updateProjectDeviceList(Long projectId, List projectDeviceList); + + boolean deleteByProjectId(Long projectId); + + boolean deleteByProjectIds(List projectIds); + + List selectDetailByProjectId(Long projectId); + + Long selectProjectIdByDevice(Long deviceId); + + List selectDeviceLocationList(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java new file mode 100644 index 0000000..e921bc3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IProjectWorkerService extends IService { + + boolean saveProjectWorkerList(Long projectId, List projectWorkerList); + + boolean updateProjectWorkerList(Long projectId, List projectWorkerList); + + boolean deleteByProjectId(Long projectId); + + boolean deleteByProjectIds(List projectIds); + + List selectDetailByProjectId(Long projectId,String workerType); + + List selectWorkerLocationDTO(Long projectId); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java new file mode 100644 index 0000000..58a8590 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; +/** + *

+ * 作业现场表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IWorkSiteInfoService extends IService { + + boolean addWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO); + + boolean updateWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO); + + boolean deleteProjects(List projectIds); + + WorkSiteDetailDTO getWorkSiteDetail(Long projectId); + + Page selectListPage(Page page, QueryWrapper queryWrapper); + + boolean start(Long projectId); + + boolean finish(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java new file mode 100644 index 0000000..6c6ee98 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.extension.service.IService; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IWorkerService extends IService { + + boolean addWorker(Worker worker,Long projectId); + + Page selectListPage(Page page,QueryWrapper ew); + + Worker selectWorkerDetail(Long workerId); + + List faceRegister(String cameraIp,String cameraPort); + + List projectTempWorker(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java new file mode 100644 index 0000000..b44de1d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.consts.AlarmTypeEnum; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.entity.DataTreeLocation; +import com.casic.missiles.modular.system.mapper.BusAlarmMapper; +import com.casic.missiles.modular.system.service.*; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +/** + *

+ * 报警记录表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +@Slf4j +public class BusAlarmServiceImpl extends ServiceImpl implements IBusAlarmService { + + private final IDeviceExtService deviceExtService; + private final IDeviceService deviceService; + private final IProjectDeviceService projectDeviceService; + + private final ICasicFileService fileService; + + private final AbstractDictService dictService; + private final IDataSupportService dataSupportService; + + @Override + @Transactional + public boolean alarmUpload(AlarmUpload alarmUpload) { + log.info("alarm upload ==> {}",alarmUpload.toString()); + Long deviceId = null; + if(StrUtil.isAllNotBlank(alarmUpload.getGasIp(),alarmUpload.getGasPort())){ + deviceId = deviceExtService.selectByGasIpPort(alarmUpload.getGasIp(),alarmUpload.getGasPort()); + } + if(ObjectUtil.isEmpty(deviceId) && StrUtil.isAllNotBlank(alarmUpload.getCameraIp(),alarmUpload.getCameraPort())){ + deviceId = deviceExtService.selectByCameraIpPort(alarmUpload.getCameraIp(),alarmUpload.getCameraPort()); + } + + if(ObjectUtil.isEmpty(deviceId)){ + return false; + } + + BusAlarm alarm = new BusAlarm(); + alarm.setDeviceId(deviceId); + alarm.setProjectId(projectDeviceService.selectProjectIdByDevice(deviceId)); + alarm.setAlarmValue(alarmUpload.getAlarmValue()); + if(StrUtil.isNotEmpty(alarmUpload.getAlarmTime())){ + alarm.setAlarmTime(DateUtil.parseDateTime(alarmUpload.getAlarmTime())); + }else { + alarm.setAlarmTime(new Date()); + } + + alarm.setAlarmType(alarmUpload.getAlarmType()); + alarm.setAlarmContent(alarmUpload.getAlarmContent()); + if(StrUtil.isNotEmpty(alarmUpload.getAlarmImage())){ + String imgBase64 = "data:image/jpeg;base64," + alarmUpload.getAlarmImage(); + String imageUrl = fileService.saveFile(imgBase64); + alarm.setAlarmImage(imageUrl); + } + alarm.setAlarmStatus(ALARM_STATUS_ON); + + DataTreeLocation treeLocation = dataSupportService.getTreeLocation(deviceId); + if(ObjectUtil.isNotEmpty(treeLocation)){ + alarm.setAlarmLng(treeLocation.getGdLng()); + alarm.setAlarmLat(treeLocation.getGdLat()); + } + + //自动消警 + AlarmTypeEnum alarmTypeEnum = AlarmTypeEnum.getByAlarmType(alarm.getAlarmType()); + if(ObjectUtil.isNotEmpty(alarmTypeEnum) && alarmTypeEnum.isAutoCancel()){ + this.baseMapper.cancelAlarm(deviceId,alarm.getAlarmType()); + } + return this.save(alarm); + } + + @Override + public Page listPage(Page page, QueryWrapper queryWrapper) { + page = this.baseMapper.listPage(page, queryWrapper); + for (BusAlarm alarm : page.getRecords()) { + alarm.setAlarmTypeName(dictService.getDictNameByCode("alarmType",alarm.getAlarmType())); + alarm.setAlarmStatusName(dictService.getDictNameByCode("alarmStatus",alarm.getAlarmStatus())); + if(StrUtil.isNotEmpty(alarm.getProjectState())){ + alarm.setProjectStateName(dictService.getDictNameByCode("projectStatus",alarm.getProjectState())); + } + } + return page; + } + + @Override + public List alarmCount(Long projectId, String alarmStatus) { + List list = this.baseMapper.alarmCount(projectId, alarmStatus); + list = list.stream().filter(i->StrUtil.isNotEmpty(i.getAlarmType())).collect(Collectors.toList()); + for (AlarmTypeCountDTO countDTO : list) { + countDTO.setAlarmTypeName(dictService.getDictNameByCode("alarmType",countDTO.getAlarmType())); + } + return list; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java new file mode 100644 index 0000000..a43f7c1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.casic.missiles.modular.system.mapper.BusEventImageMapper; +import com.casic.missiles.modular.system.service.IBusEventImageService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 事件图片表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +public class BusEventImageServiceImpl extends ServiceImpl implements IBusEventImageService { + + @Override + public boolean saveBusEventImages(Long eventId, List imageList) { + imageList.forEach(i->i.setEventId(eventId)); + return this.saveBatch(imageList); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java new file mode 100644 index 0000000..21e511c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java @@ -0,0 +1,39 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.mapper.BusEventMapper; +import com.casic.missiles.modular.system.service.IBusEventImageService; +import com.casic.missiles.modular.system.service.IBusEventService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; + +/** + *

+ * 事件表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class BusEventServiceImpl extends ServiceImpl implements IBusEventService { + + private final IBusEventImageService busEventImageService; + + + @Override + @Transactional + public boolean saveBusEvent(BusEvent busEvent) { + busEvent.setCreateTime(new Date()); + boolean res = this.save(busEvent); + if(res){ + res = busEventImageService.saveBusEventImages(busEvent.getId(),busEvent.getImageList()); + } + return res; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java new file mode 100644 index 0000000..2bdb63d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java @@ -0,0 +1,102 @@ +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.core.conditions.update.UpdateWrapper; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.casic.missiles.modular.system.mapper.DeviceExtMapper; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 设备扩展信息表(安全树) 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Service +public class DeviceExtServiceImpl extends ServiceImpl implements IDeviceExtService { + + + @Override + public boolean saveDeviceExt(DeviceDetailDTO deviceDetailDTO) { + DeviceExt ext = new DeviceExt(); + ext.setDeviceId(deviceDetailDTO.getId()); + ext.setCameraCode(deviceDetailDTO.getCameraCode()); + ext.setCameraIp(deviceDetailDTO.getCameraIp()); + ext.setCameraPort(deviceDetailDTO.getCameraPort()); + ext.setGasCode(deviceDetailDTO.getGasCode()); + ext.setGasIp(deviceDetailDTO.getGasIp()); + ext.setGasPort(deviceDetailDTO.getGasPort()); + ext.setHatLiningCode(deviceDetailDTO.getHatLiningCode()); + return this.save(ext); + } + + @Override + public boolean updateDeviceExt(DeviceDetailDTO deviceDetailDTO) { + DeviceExt ext = this.selectByDeviceId(deviceDetailDTO.getId()); + ext.setCameraCode(deviceDetailDTO.getCameraCode()); + ext.setCameraIp(deviceDetailDTO.getCameraIp()); + ext.setCameraPort(deviceDetailDTO.getCameraPort()); + ext.setGasCode(deviceDetailDTO.getGasCode()); + ext.setGasIp(deviceDetailDTO.getGasIp()); + ext.setGasPort(deviceDetailDTO.getGasPort()); + ext.setHatLiningCode(deviceDetailDTO.getHatLiningCode()); + return this.updateById(ext); + } + + @Override + public boolean removeByDeviceIds(List deviceIds) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("DEVICE_ID",deviceIds); + return this.remove(queryWrapper); + } + + @Override + public boolean setGasThreshold(String gasIp, String gasPort, String threshold) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.set("GAS_THRESHOLD",threshold); + updateWrapper.eq("GAS_IP",gasIp); + updateWrapper.eq("GAS_PORT",gasPort); + return this.update(updateWrapper); + } + + @Override + public String getGasThreshold(String gasIp, String gasPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("GAS_IP",gasIp); + queryWrapper.eq("GAS_PORT",gasPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getGasThreshold() : null; + } + + private DeviceExt selectByDeviceId(Long deviceId){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVICE_ID",deviceId); + return this.getOne(queryWrapper); + } + + @Override + public Long selectByGasIpPort(String gasIp, String gasPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("GAS_IP",gasIp); + queryWrapper.eq("GAS_PORT",gasPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getDeviceId() : null; + } + + @Override + public Long selectByCameraIpPort(String cameraIp, String cameraPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("CAMERA_IP",cameraIp); + queryWrapper.eq("CAMERA_PORT",cameraPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getDeviceId() : null; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java new file mode 100644 index 0000000..9df79ef --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.mapper.DeviceMapper; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.modular.system.consts.DeviceConst.*; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class DeviceServiceImpl extends ServiceImpl implements IDeviceService { + + private final AbstractDictService dictService; + private final IDeviceExtService deviceExtService; + + private final IProjectDeviceService projectDeviceService; + + @Transactional + @Override + public boolean saveDevice(DeviceDetailDTO deviceDetailDTO) { + deviceDetailDTO.setCreateTime(new Date()); + boolean deviceRes = this.save(deviceDetailDTO); + if(deviceRes && DEVICE_TYPE_TREE.equals(deviceDetailDTO.getDeviceType())){ + deviceRes = deviceExtService.saveDeviceExt(deviceDetailDTO); + } + return deviceRes; + } + + @Transactional + @Override + public boolean updateDevice(DeviceDetailDTO deviceDetailDTO) { + boolean deviceRes = this.updateById(deviceDetailDTO); + if(deviceRes && DEVICE_TYPE_TREE.equals(deviceDetailDTO.getDeviceType())){ + deviceRes = deviceExtService.updateDeviceExt(deviceDetailDTO); + } + return deviceRes; + } + + @Transactional + @Override + public boolean deleteDevices(List deviceIds) { + return this.removeByIds(deviceIds) & deviceExtService.removeByDeviceIds(deviceIds); + } + + @Override + public Page listPage(Page page, QueryWrapper queryWrapper,String status,Long projectId) { + String ID_COLUMN_NAME = "br_device.ID"; + List useDevices = this.selectProjectDevice(null); + List projectDevices; + if(ObjectUtil.isNotEmpty(projectId)){ + projectDevices = this.selectProjectDevice(projectId); + } else { + projectDevices = null; + } + + // 查询使用中的设备(如果传了 projectId,查询 使用中&&此现场) + if(DEVICE_STATUS_USE.equals(status)){ + if(CollUtil.isEmpty(useDevices)){ + return page; + } + if(ObjectUtil.isNotEmpty(projectId) && CollUtil.isEmpty(projectDevices)){ + return page; + } + queryWrapper.in(ID_COLUMN_NAME,useDevices); + if(CollUtil.isNotEmpty(projectDevices)){ + queryWrapper.in(ID_COLUMN_NAME,projectDevices); + } + + } + + // 查询未使用的设备(如果传了 projectId,查询 未使用||此现场) + if(DEVICE_STATUS_NORMAL.equals(status)) { + if (CollUtil.isNotEmpty(useDevices)) { + if (CollUtil.isEmpty(projectDevices)) { + queryWrapper.notIn(ID_COLUMN_NAME, useDevices); + } else { + queryWrapper.and(i -> i.notIn(ID_COLUMN_NAME, useDevices).or().in(ID_COLUMN_NAME, projectDevices)); + } + } + } + + page = this.baseMapper.listDetailPage(page, queryWrapper); + for (DeviceDetailDTO record : page.getRecords()) { + record.setDeviceTypeName(dictService.getDictNameByCode("deviceType",record.getDeviceType())); + record.setIsPowerSupplyName(dictService.getDictNameByCode("isPowerSupply",record.getIsPowerSupply())); + record.setRegisterTime(DateUtil.formatDate(record.getCreateTime())); + record.setStatus(useDevices.contains(record.getId()) ? DEVICE_STATUS_USE : DEVICE_STATUS_NORMAL); + record.setStatusName(dictService.getDictNameByCode("deviceStatus",record.getStatus())); + } + return page; + } + + @Override + public List selectProjectDevice(Long projectId) { + return this.baseMapper.selectProjectDevice(projectId); + } + + +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java new file mode 100644 index 0000000..73d7799 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.dto; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "AlarmUpload",description = "报警上传") +@Data +public class AlarmUpload { + + @ApiModelProperty(value = "摄像头ip") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + @ApiModelProperty(value = "安全树甲烷设备ip") + private String gasIp; + @ApiModelProperty(value = "安全树甲烷设备端口") + private String gasPort; + @ApiModelProperty(value = "报警值") + private String alarmValue; + @ApiModelProperty(value = "报警时间") + private String alarmTime; + @ApiModelProperty(value = "报警类型") + private String alarmType; + @ApiModelProperty(value = "报警图片") + private String alarmImage; + @ApiModelProperty(value = "报警内容") + private String alarmContent; + + @Override + public String toString() { + return "AlarmUpload{" + + "cameraIp='" + cameraIp + '\'' + + ", cameraPort='" + cameraPort + '\'' + + ", gasIp='" + gasIp + '\'' + + ", gasPort='" + gasPort + '\'' + + ", alarmValue='" + alarmValue + '\'' + + ", alarmTime='" + alarmTime + '\'' + + ", alarmType='" + alarmType + '\'' + + ", alarmImage='" + (StrUtil.isNotEmpty(alarmImage) ? alarmImage.substring(0,50) : "null") + '\'' + + ", alarmContent='" + alarmContent + '\'' + + '}'; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java new file mode 100644 index 0000000..ea518d9 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.modular.system.entity.Device; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("DeviceDetailDTO") +@Data +public class DeviceDetailDTO extends Device { + + @ApiModelProperty(value = "摄像头编号") + private String cameraCode; + + @ApiModelProperty(value = "摄像头IP") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + + @ApiModelProperty(value = "激甲编号") + private String gasCode; + + @ApiModelProperty(value = "激甲IP") + private String gasIp; + + @ApiModelProperty(value = "激甲端口") + private String gasPort; + + @ApiModelProperty(value = "智能帽衬编号") + private String hatLiningCode; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java new file mode 100644 index 0000000..29378ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("WorkSiteDetailDTO") +public class WorkSiteDetailDTO extends WorkSiteInfo { + + @ApiModelProperty(value = "安全树列表",dataType = "ProjectDevice") + private List deviceList; + + @ApiModelProperty(value = "人员列表",dataType = "ProjectWorker") + private List workerList; + + + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java new file mode 100644 index 0000000..6fd7b24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java @@ -0,0 +1,68 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "WorkerLocationDTO",description = "人员位置列表(首页)") +@Data +public class WorkerLocationDTO { + + @ApiModelProperty("人员ID") + private Long workerId; + + @ApiModelProperty("人员姓名") + private String workerName; + + @ApiModelProperty("安全帽编号") + private String hatCode; + + @ApiModelProperty("安全帽ID") + private Long hatId; + + @ApiModelProperty("背心编号") + private String vastCode; + + @ApiModelProperty("手环编号") + private String braceletCode; + + @ApiModelProperty("位置") + private String location; + + @ApiModelProperty("时间") + private String time; + + @ApiModelProperty("经度") + private String lng; + + @ApiModelProperty("纬度") + private String lat; + + @ApiModelProperty("心率") + private String heartRate; + + @ApiModelProperty("血氧") + private String bloodOxygen; + + @ApiModelProperty("一氧化碳") + private String co; + + @ApiModelProperty("甲烷") + private String gas; + + @ApiModelProperty("硫化氢") + private String h2s; + + @ApiModelProperty("氧气") + private String o2; + + @ApiModelProperty("信号") + private String signal; + + @ApiModelProperty("电量") + private String cell; + + @ApiModelProperty("是否报警") + private boolean alarmFlag; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java new file mode 100644 index 0000000..efb4a23 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java @@ -0,0 +1,159 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 报警记录表 + *

+ * + * @author zyj + * @since 2023-05-16 + */ +@Data +@ApiModel("Alarm") +@TableName("br_bus_alarm") +public class BusAlarm implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @ApiModelProperty(value = "设备ID") + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 报警类型 + */ + @ApiModelProperty(value = "报警类型") + @TableField("ALARM_TYPE") + private String alarmType; + + /** + * 报警状态 + */ + @ApiModelProperty(value = "报警状态") + @TableField("ALARM_STATUS") + private String alarmStatus; + + /** + * 报警值 + */ + @ApiModelProperty(value = "报警值") + @TableField("ALARM_VALUE") + private String alarmValue; + + /** + * 报警图片 + */ + @ApiModelProperty(value = "报警图片") + @TableField("ALARM_IMAGE") + private String alarmImage; + + /** + * 报警内容 + */ + @ApiModelProperty(value = "报警内容") + @TableField("ALARM_CONTENT") + private String alarmContent; + + /** + * 报警时间 + */ + @ApiModelProperty(value = "报警时间") + @TableField("ALARM_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date alarmTime; + + /** + * 消警时间 + */ + @ApiModelProperty(value = "消警时间") + @TableField("CANCEL_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + /** + * 报警位置经度 + */ + @ApiModelProperty(value = "报警位置经度") + @TableField("ALARM_LNG") + private String alarmLng; + + /** + * 报警位置纬度 + */ + @ApiModelProperty(value = "报警位置纬度") + @TableField("ALARM_LAT") + private String alarmLat; + + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmStatusName; + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmTypeName; + @ApiModelProperty("作业名称") + @TableField(exist = false) + private String workTitle; + @ApiModelProperty("所属道路") + @TableField(exist = false) + private String workRoad; + @ApiModelProperty("作业状态") + @TableField(exist = false) + private String projectState; + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + @ApiModelProperty("负责人姓名") + @TableField(exist = false) + private String workPersonName; + @ApiModelProperty("负责人联系方式") + @TableField(exist = false) + private String workPersonPhoneNumber; + + + @Override + public String toString() { + return "BusAlarm{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + ", alarmType=" + alarmType + + ", alarmValue=" + alarmValue + + ", alarmStatus=" + alarmStatus + + ", alarmImage=" + alarmImage + + ", alarmContent=" + alarmContent + + ", alarmTime=" + alarmTime + + ", cancelTime=" + cancelTime + + ", alarmLng=" + alarmLng + + ", alarmLat=" + alarmLat + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java new file mode 100644 index 0000000..a0b7543 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + *

+ * 事件表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event") +@Data +@ApiModel("BusEvent") +public class BusEvent implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("事件ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件标题 + */ + @ApiModelProperty("事件名称") + @TableField("EVENT_TITLE") + private String eventTitle; + + /** + * 上报人员 + */ + @ApiModelProperty("上报人员") + @TableField("UPLOAD_NAME") + private String uploadName; + + /** + * 联系方式 + */ + @ApiModelProperty("联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 事件描述 + */ + @ApiModelProperty("事件描述") + @TableField("EVENT_DESCRIPTION") + private String eventDescription; + + @ApiModelProperty("经度") + @TableField("LNG") + private String lng; + + @ApiModelProperty("纬度") + @TableField("LAT") + private String lat; + + /** + * 事件上传时间 + */ + @ApiModelProperty("事件上传时间") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty("事件照片") + @TableField(exist = false) + private List imageList; + + + + @Override + public String toString() { + return "BusEvent{" + + "id=" + id + + ", eventTitle=" + eventTitle + + ", uploadName=" + uploadName + + ", phoneNumber=" + phoneNumber + + ", eventDescription=" + eventDescription + + ", lng=" + lng + + ", lat=" + lat + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java new file mode 100644 index 0000000..1e75245 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 事件图片表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event_image") +@Data +@ApiModel("BusEventImage") +public class BusEventImage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件ID + */ + @TableField("EVENT_ID") + private Long eventId; + + /** + * 报警图片 + */ + @TableField("IMAGE") + @ApiModelProperty("图片url") + private String image; + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java new file mode 100644 index 0000000..df89c70 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.core.base.json.DateDeserializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Device") +@TableName("br_device") +@Data +public class Device implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "设备ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty(value = "设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + /** + * 设备类型 + */ + @ApiModelProperty(value = "设备类型") + @TableField("DEVICE_TYPE") + private String deviceType; + + /** + * 设备批次 + */ + @ApiModelProperty(value = "设备批次") + @TableField("DEVICE_BATCH") + private String deviceBatch; + + /** + * 厂家 + */ + @ApiModelProperty(value = "厂家") + @TableField("MANUFACTURER") + private String manufacturer; + + /** + * 是否供电 + */ + @ApiModelProperty(value = "是否供电") + @TableField("IS_POWER_SUPPLY") + private String isPowerSupply; + + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间",dataType = "Date") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty(value = "设备类型名称") + @TableField(exist = false) + private String deviceTypeName; + + @ApiModelProperty(value = "是否供电名称") + @TableField(exist = false) + private String isPowerSupplyName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", deviceCode=" + deviceCode + + ", deviceType=" + deviceType + + ", deviceBatch=" + deviceBatch + + ", manufacturer=" + manufacturer + + ", isPowerSupply=" + isPowerSupply + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java new file mode 100644 index 0000000..5ee7015 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java @@ -0,0 +1,99 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 设备扩展信息表(安全树) + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Data +@TableName("br_device_ext") +public class DeviceExt implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 摄像头编号 + */ + @TableField("CAMERA_CODE") + private String cameraCode; + + /** + * 摄像头IP + */ + @TableField("CAMERA_IP") + private String cameraIp; + + /** + * 摄像头端口 + */ + @TableField("CAMERA_PORT") + private String cameraPort; + + /** + * 激甲编号 + */ + @TableField("GAS_CODE") + private String gasCode; + + /** + * 激甲IP + */ + @TableField("GAS_IP") + private String gasIp; + + /** + * 激甲端口 + */ + @TableField("GAS_PORT") + private String gasPort; + + /** + * 甲烷报警阈值 + */ + @TableField("GAS_THRESHOLD") + private String gasThreshold; + + @TableField(value = "HAT_LINING_CODE") + private String hatLiningCode; + + + @Override + public String toString() { + return "DeviceExt{" + + "id=" + id + + ", deviceId=" + deviceId + + ", cameraCode=" + cameraCode + + ", cameraIp=" + cameraIp + + ", cameraPort=" + cameraPort + + ", gasCode=" + gasCode + + ", gasIp=" + gasIp + + ", gasPort=" + gasPort + + ", gasThreshold=" + gasThreshold + + ", hatLiningCode=" + hatLiningCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java new file mode 100644 index 0000000..c4f3472 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java @@ -0,0 +1,62 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Data +@ApiModel("ProjectDevice") +@TableName("br_project_device") +public class ProjectDevice implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + @ApiModelProperty("设备ID(新增编辑时传)") + private Long deviceId; + + /** + * 设备编号 + */ + @TableField(exist = false) + @ApiModelProperty("设备编号(详情中展示,新增编辑不用传)") + private String deviceCode; + + @Override + public String toString() { + return "ProjectDevice{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java new file mode 100644 index 0000000..10b23c4 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java @@ -0,0 +1,104 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("ProjectWorker") +@TableName("br_project_worker") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ProjectWorker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 人员ID + */ + @ApiModelProperty("人员ID") + @TableField("WORKER_ID") + private Long workerId; + + /** + * 安全帽编号 + */ + @ApiModelProperty("安全帽编号") + @TableField("HAT_CODE") + private String hatCode; + + /** + * 背心编号 + */ + @ApiModelProperty("背心编号") + @TableField("VAST_CODE") + private String vastCode; + + /** + * 手环编号 + */ + @ApiModelProperty("手环编号") + @TableField("BRACELET_CODE") + private String braceletCode; + + @ApiModelProperty("人员姓名(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerName; + + @ApiModelProperty("人员部门ID(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptId; + + @ApiModelProperty("人员部门名称(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptName; + + @ApiModelProperty("人员联系方式(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerPhoneNumber; + + public ProjectWorker(Long projectId, Long workerId) { + this.projectId = projectId; + this.workerId = workerId; + } + + @Override + public String toString() { + return "ProjectWorker{" + + "id=" + id + + ", projectId=" + projectId + + ", workerId=" + workerId + + ", hatCode=" + hatCode + + ", vastCode=" + vastCode + + ", braceletCode=" + braceletCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java new file mode 100644 index 0000000..fa6f41d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 作业现场表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("WorkSiteInfo") +@TableName("br_work_site_info") +@Data +public class WorkSiteInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("作业现场ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业名称 + */ + @ApiModelProperty("作业名称") + @TableField("WORK_TITLE") + private String workTitle; + + /** + * 责任人 + */ + @ApiModelProperty("责任人(人员ID)") + @TableField("WORK_PERSON") + private Long workPerson; + + /** + * 作业描述 + */ + @ApiModelProperty("作业描述") + @TableField("WORK_SITE_DESC") + private String workSiteDesc; + + /** + * 作业状态 + */ + @ApiModelProperty("作业状态") + @TableField("PROJECT_STATE") + private String projectState; + + /** + * 所属道路 + */ + @ApiModelProperty("所属道路") + @TableField("WORK_ROAD") + private String workRoad; + + @TableField("IMAGE_URL") + private String imageUrl; + + @TableField("CREATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + @TableField("UPDATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("FINISH_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + @ApiModelProperty("负责人姓名(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonName; + + @ApiModelProperty("负责人联系方式(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonPhoneNumber; + + @ApiModelProperty("负责人所属部门ID(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private Long workPersonDeptId; + + @ApiModelProperty("负责人所属部门名称(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonDeptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + + @Override + public String toString() { + return "WorkSiteInfo{" + + "id=" + id + + ", workTitle=" + workTitle + + ", workPerson=" + workPerson + + ", workSiteDesc=" + workSiteDesc + + ", projectState=" + projectState + + ", imageUrl=" + imageUrl + + ", updateTime=" + updateTime + + ", workRoad=" + workRoad + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java new file mode 100644 index 0000000..28a4daa --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java @@ -0,0 +1,147 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Worker") +@TableName("br_worker") +@Data +public class Worker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "人员ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 姓名 + */ + @ApiModelProperty(value = "姓名") + @TableField("WORKER_NAME") + private String workerName; + + /** + * 性别 + */ + @ApiModelProperty(value = "性别") + @TableField("GENDER") + private String gender; + + /** + * 所属部门 + */ + @ApiModelProperty(value = "所属部门(人员管理)") + @TableField("DEPT_ID") + private Long deptId; + + /** + * 所属单位 + */ + @ApiModelProperty(value = "所属单位(入场申请中使用)") + @TableField("OWNER_SHIP") + private String ownerShip; + + /** + * 联系方式 + */ + @ApiModelProperty(value = "联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 证件号 + */ + @ApiModelProperty(value = "证件号") + @TableField("ID_CARD_NUMBER") + private String idCardNumber; + + /** + * 入场原因 + */ + @ApiModelProperty(value = "入场原因(入场申请中使用)") + @TableField("ENTER_REASON") + private String enterReason; + + /** + * 入场人脸照片 + */ + @ApiModelProperty(value = "人脸照片(照片路径)") + @TableField("WORKER_AVATAR") + private String workerAvatar; + + /** + * 申请入场时间 + */ + @ApiModelProperty(value = "注册时间/申请入场时间") + @TableField("CREATE_TIME") + private Date createTime; + + /** + * 人员类型 + */ + @ApiModelProperty(value = "人员类型(区分人员管理和入场申请)") + @TableField("WORKER_TYPE") + private String workerType; + + @ApiModelProperty(value = "性别名称") + @TableField(exist = false) + private String genderName; + + @ApiModelProperty(value = "部门名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @ApiModelProperty(value = "是否注册(0未注册;1已注册)",allowableValues = "0,1") + @TableField(exist = false) + private String isRegister; + + @Override + public String toString() { + return "Worker{" + + "id=" + id + + ", workerName=" + workerName + + ", gender=" + gender + + ", deptId=" + deptId + + ", ownerShip=" + ownerShip + + ", phoneNumber=" + phoneNumber + + ", idCardNumber=" + idCardNumber + + ", enterReason=" + enterReason + + ", workerAvatar=" + workerAvatar + + ", createTime=" + createTime + + ", workerType=" + workerType + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java new file mode 100644 index 0000000..9801742 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警记录表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusAlarmMapper extends BaseMapper { + + Page listPage(Page page,@Param("ew") QueryWrapper queryWrapper); + + void cancelAlarm(@Param("deviceId")Long deviceId,@Param("alarmType") String alarmType); + + List alarmCount(@Param("projectId")Long projectId, @Param("alarmStatus")String alarmStatus); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java new file mode 100644 index 0000000..9590b7d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件图片表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventImageMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java new file mode 100644 index 0000000..3c85edf --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java new file mode 100644 index 0000000..4ca9212 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 设备扩展信息表(安全树) Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface DeviceExtMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java new file mode 100644 index 0000000..444c0c5 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Mapper +public interface DeviceMapper extends BaseMapper { + + Page listDetailPage(Page page,@Param("ew") QueryWrapper ew); + + List selectProjectDevice(@Param("projectId") Long projectId); + + List selectHelmetList(@Param("deviceType")String deviceType); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java new file mode 100644 index 0000000..1d0c14e --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectDeviceMapper extends BaseMapper { + List selectDetailByProjectId(@Param("projectId") Long projectId); + + List selectDeviceLocationList(@Param("projectId") Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java new file mode 100644 index 0000000..58583d1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectWorkerMapper extends BaseMapper { + + List selectDetailByProjectId(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + + List selectWorkerLocationList(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java new file mode 100644 index 0000000..a4934d2 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +/** + *

+ * 作业现场表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkSiteInfoMapper extends BaseMapper { + + Page selectListPage(Page page,@Param("ew") QueryWrapper ew); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java new file mode 100644 index 0000000..258fb12 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkerMapper extends BaseMapper { + + + Page selectListPage(Page page, @Param("ew") QueryWrapper ew); + + List selectWorkerAvatars(@Param("projectId")Long projectId); + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml new file mode 100644 index 0000000..595088a --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml @@ -0,0 +1,58 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml new file mode 100644 index 0000000..fbc3db3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml new file mode 100644 index 0000000..627d573 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml new file mode 100644 index 0000000..5321d1c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml new file mode 100644 index 0000000..94262e1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml @@ -0,0 +1,97 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml new file mode 100644 index 0000000..c6d1c24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml @@ -0,0 +1,29 @@ + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml new file mode 100644 index 0000000..8d2de10 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml new file mode 100644 index 0000000..8f01326 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml @@ -0,0 +1,26 @@ + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml new file mode 100644 index 0000000..3e28b39 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml @@ -0,0 +1,56 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java new file mode 100644 index 0000000..f63c19c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 报警记录表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusAlarmService extends IService { + + boolean alarmUpload(AlarmUpload alarmUpload); + + Page listPage(Page page,QueryWrapper queryWrapper); + + List alarmCount(Long projectId,String alarmStatus); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java new file mode 100644 index 0000000..b1187ed --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 事件图片表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusEventImageService extends IService { + + boolean saveBusEventImages(Long eventId, List imageList); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java new file mode 100644 index 0000000..85c48d0 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 事件表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusEventService extends IService { + + boolean saveBusEvent(BusEvent busEvent); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java new file mode 100644 index 0000000..6fc5361 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 设备扩展信息表(安全树) 服务类 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface IDeviceExtService extends IService { + + boolean saveDeviceExt(DeviceDetailDTO deviceDetailDTO); + + boolean updateDeviceExt(DeviceDetailDTO deviceDetailDTO); + + boolean removeByDeviceIds(List deviceIds); + + boolean setGasThreshold(String gasIp,String gasPort,String threshold); + + String getGasThreshold(String gasIp,String gasPort); + + Long selectByGasIpPort(String gasIp,String gasPort); + + Long selectByCameraIpPort(String cameraIp,String cameraPort); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java new file mode 100644 index 0000000..9e62756 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java @@ -0,0 +1,32 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IDeviceService extends IService { + + boolean saveDevice(DeviceDetailDTO deviceDetailDTO); + + boolean updateDevice(DeviceDetailDTO deviceDetailDTO); + + boolean deleteDevices(List deviceIds); + + Page listPage(Page page, QueryWrapper queryWrapper, String status,Long projectId); + + List selectProjectDevice(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java new file mode 100644 index 0000000..8599411 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IProjectDeviceService extends IService { + + boolean saveProjectDeviceList(Long projectId, List projectDeviceList); + + boolean updateProjectDeviceList(Long projectId, List projectDeviceList); + + boolean deleteByProjectId(Long projectId); + + boolean deleteByProjectIds(List projectIds); + + List selectDetailByProjectId(Long projectId); + + Long selectProjectIdByDevice(Long deviceId); + + List selectDeviceLocationList(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java new file mode 100644 index 0000000..e921bc3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IProjectWorkerService extends IService { + + boolean saveProjectWorkerList(Long projectId, List projectWorkerList); + + boolean updateProjectWorkerList(Long projectId, List projectWorkerList); + + boolean deleteByProjectId(Long projectId); + + boolean deleteByProjectIds(List projectIds); + + List selectDetailByProjectId(Long projectId,String workerType); + + List selectWorkerLocationDTO(Long projectId); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java new file mode 100644 index 0000000..58a8590 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; +/** + *

+ * 作业现场表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IWorkSiteInfoService extends IService { + + boolean addWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO); + + boolean updateWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO); + + boolean deleteProjects(List projectIds); + + WorkSiteDetailDTO getWorkSiteDetail(Long projectId); + + Page selectListPage(Page page, QueryWrapper queryWrapper); + + boolean start(Long projectId); + + boolean finish(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java new file mode 100644 index 0000000..6c6ee98 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.extension.service.IService; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IWorkerService extends IService { + + boolean addWorker(Worker worker,Long projectId); + + Page selectListPage(Page page,QueryWrapper ew); + + Worker selectWorkerDetail(Long workerId); + + List faceRegister(String cameraIp,String cameraPort); + + List projectTempWorker(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java new file mode 100644 index 0000000..b44de1d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.consts.AlarmTypeEnum; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.entity.DataTreeLocation; +import com.casic.missiles.modular.system.mapper.BusAlarmMapper; +import com.casic.missiles.modular.system.service.*; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +/** + *

+ * 报警记录表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +@Slf4j +public class BusAlarmServiceImpl extends ServiceImpl implements IBusAlarmService { + + private final IDeviceExtService deviceExtService; + private final IDeviceService deviceService; + private final IProjectDeviceService projectDeviceService; + + private final ICasicFileService fileService; + + private final AbstractDictService dictService; + private final IDataSupportService dataSupportService; + + @Override + @Transactional + public boolean alarmUpload(AlarmUpload alarmUpload) { + log.info("alarm upload ==> {}",alarmUpload.toString()); + Long deviceId = null; + if(StrUtil.isAllNotBlank(alarmUpload.getGasIp(),alarmUpload.getGasPort())){ + deviceId = deviceExtService.selectByGasIpPort(alarmUpload.getGasIp(),alarmUpload.getGasPort()); + } + if(ObjectUtil.isEmpty(deviceId) && StrUtil.isAllNotBlank(alarmUpload.getCameraIp(),alarmUpload.getCameraPort())){ + deviceId = deviceExtService.selectByCameraIpPort(alarmUpload.getCameraIp(),alarmUpload.getCameraPort()); + } + + if(ObjectUtil.isEmpty(deviceId)){ + return false; + } + + BusAlarm alarm = new BusAlarm(); + alarm.setDeviceId(deviceId); + alarm.setProjectId(projectDeviceService.selectProjectIdByDevice(deviceId)); + alarm.setAlarmValue(alarmUpload.getAlarmValue()); + if(StrUtil.isNotEmpty(alarmUpload.getAlarmTime())){ + alarm.setAlarmTime(DateUtil.parseDateTime(alarmUpload.getAlarmTime())); + }else { + alarm.setAlarmTime(new Date()); + } + + alarm.setAlarmType(alarmUpload.getAlarmType()); + alarm.setAlarmContent(alarmUpload.getAlarmContent()); + if(StrUtil.isNotEmpty(alarmUpload.getAlarmImage())){ + String imgBase64 = "data:image/jpeg;base64," + alarmUpload.getAlarmImage(); + String imageUrl = fileService.saveFile(imgBase64); + alarm.setAlarmImage(imageUrl); + } + alarm.setAlarmStatus(ALARM_STATUS_ON); + + DataTreeLocation treeLocation = dataSupportService.getTreeLocation(deviceId); + if(ObjectUtil.isNotEmpty(treeLocation)){ + alarm.setAlarmLng(treeLocation.getGdLng()); + alarm.setAlarmLat(treeLocation.getGdLat()); + } + + //自动消警 + AlarmTypeEnum alarmTypeEnum = AlarmTypeEnum.getByAlarmType(alarm.getAlarmType()); + if(ObjectUtil.isNotEmpty(alarmTypeEnum) && alarmTypeEnum.isAutoCancel()){ + this.baseMapper.cancelAlarm(deviceId,alarm.getAlarmType()); + } + return this.save(alarm); + } + + @Override + public Page listPage(Page page, QueryWrapper queryWrapper) { + page = this.baseMapper.listPage(page, queryWrapper); + for (BusAlarm alarm : page.getRecords()) { + alarm.setAlarmTypeName(dictService.getDictNameByCode("alarmType",alarm.getAlarmType())); + alarm.setAlarmStatusName(dictService.getDictNameByCode("alarmStatus",alarm.getAlarmStatus())); + if(StrUtil.isNotEmpty(alarm.getProjectState())){ + alarm.setProjectStateName(dictService.getDictNameByCode("projectStatus",alarm.getProjectState())); + } + } + return page; + } + + @Override + public List alarmCount(Long projectId, String alarmStatus) { + List list = this.baseMapper.alarmCount(projectId, alarmStatus); + list = list.stream().filter(i->StrUtil.isNotEmpty(i.getAlarmType())).collect(Collectors.toList()); + for (AlarmTypeCountDTO countDTO : list) { + countDTO.setAlarmTypeName(dictService.getDictNameByCode("alarmType",countDTO.getAlarmType())); + } + return list; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java new file mode 100644 index 0000000..a43f7c1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.casic.missiles.modular.system.mapper.BusEventImageMapper; +import com.casic.missiles.modular.system.service.IBusEventImageService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 事件图片表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +public class BusEventImageServiceImpl extends ServiceImpl implements IBusEventImageService { + + @Override + public boolean saveBusEventImages(Long eventId, List imageList) { + imageList.forEach(i->i.setEventId(eventId)); + return this.saveBatch(imageList); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java new file mode 100644 index 0000000..21e511c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java @@ -0,0 +1,39 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.mapper.BusEventMapper; +import com.casic.missiles.modular.system.service.IBusEventImageService; +import com.casic.missiles.modular.system.service.IBusEventService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; + +/** + *

+ * 事件表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class BusEventServiceImpl extends ServiceImpl implements IBusEventService { + + private final IBusEventImageService busEventImageService; + + + @Override + @Transactional + public boolean saveBusEvent(BusEvent busEvent) { + busEvent.setCreateTime(new Date()); + boolean res = this.save(busEvent); + if(res){ + res = busEventImageService.saveBusEventImages(busEvent.getId(),busEvent.getImageList()); + } + return res; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java new file mode 100644 index 0000000..2bdb63d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java @@ -0,0 +1,102 @@ +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.core.conditions.update.UpdateWrapper; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.casic.missiles.modular.system.mapper.DeviceExtMapper; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 设备扩展信息表(安全树) 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Service +public class DeviceExtServiceImpl extends ServiceImpl implements IDeviceExtService { + + + @Override + public boolean saveDeviceExt(DeviceDetailDTO deviceDetailDTO) { + DeviceExt ext = new DeviceExt(); + ext.setDeviceId(deviceDetailDTO.getId()); + ext.setCameraCode(deviceDetailDTO.getCameraCode()); + ext.setCameraIp(deviceDetailDTO.getCameraIp()); + ext.setCameraPort(deviceDetailDTO.getCameraPort()); + ext.setGasCode(deviceDetailDTO.getGasCode()); + ext.setGasIp(deviceDetailDTO.getGasIp()); + ext.setGasPort(deviceDetailDTO.getGasPort()); + ext.setHatLiningCode(deviceDetailDTO.getHatLiningCode()); + return this.save(ext); + } + + @Override + public boolean updateDeviceExt(DeviceDetailDTO deviceDetailDTO) { + DeviceExt ext = this.selectByDeviceId(deviceDetailDTO.getId()); + ext.setCameraCode(deviceDetailDTO.getCameraCode()); + ext.setCameraIp(deviceDetailDTO.getCameraIp()); + ext.setCameraPort(deviceDetailDTO.getCameraPort()); + ext.setGasCode(deviceDetailDTO.getGasCode()); + ext.setGasIp(deviceDetailDTO.getGasIp()); + ext.setGasPort(deviceDetailDTO.getGasPort()); + ext.setHatLiningCode(deviceDetailDTO.getHatLiningCode()); + return this.updateById(ext); + } + + @Override + public boolean removeByDeviceIds(List deviceIds) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("DEVICE_ID",deviceIds); + return this.remove(queryWrapper); + } + + @Override + public boolean setGasThreshold(String gasIp, String gasPort, String threshold) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.set("GAS_THRESHOLD",threshold); + updateWrapper.eq("GAS_IP",gasIp); + updateWrapper.eq("GAS_PORT",gasPort); + return this.update(updateWrapper); + } + + @Override + public String getGasThreshold(String gasIp, String gasPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("GAS_IP",gasIp); + queryWrapper.eq("GAS_PORT",gasPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getGasThreshold() : null; + } + + private DeviceExt selectByDeviceId(Long deviceId){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVICE_ID",deviceId); + return this.getOne(queryWrapper); + } + + @Override + public Long selectByGasIpPort(String gasIp, String gasPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("GAS_IP",gasIp); + queryWrapper.eq("GAS_PORT",gasPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getDeviceId() : null; + } + + @Override + public Long selectByCameraIpPort(String cameraIp, String cameraPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("CAMERA_IP",cameraIp); + queryWrapper.eq("CAMERA_PORT",cameraPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getDeviceId() : null; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java new file mode 100644 index 0000000..9df79ef --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.mapper.DeviceMapper; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.modular.system.consts.DeviceConst.*; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class DeviceServiceImpl extends ServiceImpl implements IDeviceService { + + private final AbstractDictService dictService; + private final IDeviceExtService deviceExtService; + + private final IProjectDeviceService projectDeviceService; + + @Transactional + @Override + public boolean saveDevice(DeviceDetailDTO deviceDetailDTO) { + deviceDetailDTO.setCreateTime(new Date()); + boolean deviceRes = this.save(deviceDetailDTO); + if(deviceRes && DEVICE_TYPE_TREE.equals(deviceDetailDTO.getDeviceType())){ + deviceRes = deviceExtService.saveDeviceExt(deviceDetailDTO); + } + return deviceRes; + } + + @Transactional + @Override + public boolean updateDevice(DeviceDetailDTO deviceDetailDTO) { + boolean deviceRes = this.updateById(deviceDetailDTO); + if(deviceRes && DEVICE_TYPE_TREE.equals(deviceDetailDTO.getDeviceType())){ + deviceRes = deviceExtService.updateDeviceExt(deviceDetailDTO); + } + return deviceRes; + } + + @Transactional + @Override + public boolean deleteDevices(List deviceIds) { + return this.removeByIds(deviceIds) & deviceExtService.removeByDeviceIds(deviceIds); + } + + @Override + public Page listPage(Page page, QueryWrapper queryWrapper,String status,Long projectId) { + String ID_COLUMN_NAME = "br_device.ID"; + List useDevices = this.selectProjectDevice(null); + List projectDevices; + if(ObjectUtil.isNotEmpty(projectId)){ + projectDevices = this.selectProjectDevice(projectId); + } else { + projectDevices = null; + } + + // 查询使用中的设备(如果传了 projectId,查询 使用中&&此现场) + if(DEVICE_STATUS_USE.equals(status)){ + if(CollUtil.isEmpty(useDevices)){ + return page; + } + if(ObjectUtil.isNotEmpty(projectId) && CollUtil.isEmpty(projectDevices)){ + return page; + } + queryWrapper.in(ID_COLUMN_NAME,useDevices); + if(CollUtil.isNotEmpty(projectDevices)){ + queryWrapper.in(ID_COLUMN_NAME,projectDevices); + } + + } + + // 查询未使用的设备(如果传了 projectId,查询 未使用||此现场) + if(DEVICE_STATUS_NORMAL.equals(status)) { + if (CollUtil.isNotEmpty(useDevices)) { + if (CollUtil.isEmpty(projectDevices)) { + queryWrapper.notIn(ID_COLUMN_NAME, useDevices); + } else { + queryWrapper.and(i -> i.notIn(ID_COLUMN_NAME, useDevices).or().in(ID_COLUMN_NAME, projectDevices)); + } + } + } + + page = this.baseMapper.listDetailPage(page, queryWrapper); + for (DeviceDetailDTO record : page.getRecords()) { + record.setDeviceTypeName(dictService.getDictNameByCode("deviceType",record.getDeviceType())); + record.setIsPowerSupplyName(dictService.getDictNameByCode("isPowerSupply",record.getIsPowerSupply())); + record.setRegisterTime(DateUtil.formatDate(record.getCreateTime())); + record.setStatus(useDevices.contains(record.getId()) ? DEVICE_STATUS_USE : DEVICE_STATUS_NORMAL); + record.setStatusName(dictService.getDictNameByCode("deviceStatus",record.getStatus())); + } + return page; + } + + @Override + public List selectProjectDevice(Long projectId) { + return this.baseMapper.selectProjectDevice(projectId); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceSupportServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceSupportServiceImpl.java new file mode 100644 index 0000000..ffd01ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceSupportServiceImpl.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.mapper.DeviceMapper; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceSupportService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; + +import static com.casic.missiles.modular.system.consts.DeviceConst.DEVICE_TYPE_HAT; + +@Service +@RequiredArgsConstructor +public class DeviceSupportServiceImpl implements IDeviceSupportService { + + private final IDeviceExtService deviceExtService; + + private final DeviceMapper deviceMapper; + + @Override + public Long selectByGasIpPort(String gasIp, String gasPort) { + return deviceExtService.selectByGasIpPort(gasIp, gasPort); + } + + @Override + public List selectHelmetList() { + return deviceMapper.selectHelmetList(DEVICE_TYPE_HAT); + } +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java new file mode 100644 index 0000000..73d7799 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.dto; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "AlarmUpload",description = "报警上传") +@Data +public class AlarmUpload { + + @ApiModelProperty(value = "摄像头ip") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + @ApiModelProperty(value = "安全树甲烷设备ip") + private String gasIp; + @ApiModelProperty(value = "安全树甲烷设备端口") + private String gasPort; + @ApiModelProperty(value = "报警值") + private String alarmValue; + @ApiModelProperty(value = "报警时间") + private String alarmTime; + @ApiModelProperty(value = "报警类型") + private String alarmType; + @ApiModelProperty(value = "报警图片") + private String alarmImage; + @ApiModelProperty(value = "报警内容") + private String alarmContent; + + @Override + public String toString() { + return "AlarmUpload{" + + "cameraIp='" + cameraIp + '\'' + + ", cameraPort='" + cameraPort + '\'' + + ", gasIp='" + gasIp + '\'' + + ", gasPort='" + gasPort + '\'' + + ", alarmValue='" + alarmValue + '\'' + + ", alarmTime='" + alarmTime + '\'' + + ", alarmType='" + alarmType + '\'' + + ", alarmImage='" + (StrUtil.isNotEmpty(alarmImage) ? alarmImage.substring(0,50) : "null") + '\'' + + ", alarmContent='" + alarmContent + '\'' + + '}'; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java new file mode 100644 index 0000000..ea518d9 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.modular.system.entity.Device; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("DeviceDetailDTO") +@Data +public class DeviceDetailDTO extends Device { + + @ApiModelProperty(value = "摄像头编号") + private String cameraCode; + + @ApiModelProperty(value = "摄像头IP") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + + @ApiModelProperty(value = "激甲编号") + private String gasCode; + + @ApiModelProperty(value = "激甲IP") + private String gasIp; + + @ApiModelProperty(value = "激甲端口") + private String gasPort; + + @ApiModelProperty(value = "智能帽衬编号") + private String hatLiningCode; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java new file mode 100644 index 0000000..29378ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("WorkSiteDetailDTO") +public class WorkSiteDetailDTO extends WorkSiteInfo { + + @ApiModelProperty(value = "安全树列表",dataType = "ProjectDevice") + private List deviceList; + + @ApiModelProperty(value = "人员列表",dataType = "ProjectWorker") + private List workerList; + + + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java new file mode 100644 index 0000000..6fd7b24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java @@ -0,0 +1,68 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "WorkerLocationDTO",description = "人员位置列表(首页)") +@Data +public class WorkerLocationDTO { + + @ApiModelProperty("人员ID") + private Long workerId; + + @ApiModelProperty("人员姓名") + private String workerName; + + @ApiModelProperty("安全帽编号") + private String hatCode; + + @ApiModelProperty("安全帽ID") + private Long hatId; + + @ApiModelProperty("背心编号") + private String vastCode; + + @ApiModelProperty("手环编号") + private String braceletCode; + + @ApiModelProperty("位置") + private String location; + + @ApiModelProperty("时间") + private String time; + + @ApiModelProperty("经度") + private String lng; + + @ApiModelProperty("纬度") + private String lat; + + @ApiModelProperty("心率") + private String heartRate; + + @ApiModelProperty("血氧") + private String bloodOxygen; + + @ApiModelProperty("一氧化碳") + private String co; + + @ApiModelProperty("甲烷") + private String gas; + + @ApiModelProperty("硫化氢") + private String h2s; + + @ApiModelProperty("氧气") + private String o2; + + @ApiModelProperty("信号") + private String signal; + + @ApiModelProperty("电量") + private String cell; + + @ApiModelProperty("是否报警") + private boolean alarmFlag; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java new file mode 100644 index 0000000..efb4a23 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java @@ -0,0 +1,159 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 报警记录表 + *

+ * + * @author zyj + * @since 2023-05-16 + */ +@Data +@ApiModel("Alarm") +@TableName("br_bus_alarm") +public class BusAlarm implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @ApiModelProperty(value = "设备ID") + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 报警类型 + */ + @ApiModelProperty(value = "报警类型") + @TableField("ALARM_TYPE") + private String alarmType; + + /** + * 报警状态 + */ + @ApiModelProperty(value = "报警状态") + @TableField("ALARM_STATUS") + private String alarmStatus; + + /** + * 报警值 + */ + @ApiModelProperty(value = "报警值") + @TableField("ALARM_VALUE") + private String alarmValue; + + /** + * 报警图片 + */ + @ApiModelProperty(value = "报警图片") + @TableField("ALARM_IMAGE") + private String alarmImage; + + /** + * 报警内容 + */ + @ApiModelProperty(value = "报警内容") + @TableField("ALARM_CONTENT") + private String alarmContent; + + /** + * 报警时间 + */ + @ApiModelProperty(value = "报警时间") + @TableField("ALARM_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date alarmTime; + + /** + * 消警时间 + */ + @ApiModelProperty(value = "消警时间") + @TableField("CANCEL_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + /** + * 报警位置经度 + */ + @ApiModelProperty(value = "报警位置经度") + @TableField("ALARM_LNG") + private String alarmLng; + + /** + * 报警位置纬度 + */ + @ApiModelProperty(value = "报警位置纬度") + @TableField("ALARM_LAT") + private String alarmLat; + + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmStatusName; + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmTypeName; + @ApiModelProperty("作业名称") + @TableField(exist = false) + private String workTitle; + @ApiModelProperty("所属道路") + @TableField(exist = false) + private String workRoad; + @ApiModelProperty("作业状态") + @TableField(exist = false) + private String projectState; + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + @ApiModelProperty("负责人姓名") + @TableField(exist = false) + private String workPersonName; + @ApiModelProperty("负责人联系方式") + @TableField(exist = false) + private String workPersonPhoneNumber; + + + @Override + public String toString() { + return "BusAlarm{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + ", alarmType=" + alarmType + + ", alarmValue=" + alarmValue + + ", alarmStatus=" + alarmStatus + + ", alarmImage=" + alarmImage + + ", alarmContent=" + alarmContent + + ", alarmTime=" + alarmTime + + ", cancelTime=" + cancelTime + + ", alarmLng=" + alarmLng + + ", alarmLat=" + alarmLat + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java new file mode 100644 index 0000000..a0b7543 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + *

+ * 事件表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event") +@Data +@ApiModel("BusEvent") +public class BusEvent implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("事件ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件标题 + */ + @ApiModelProperty("事件名称") + @TableField("EVENT_TITLE") + private String eventTitle; + + /** + * 上报人员 + */ + @ApiModelProperty("上报人员") + @TableField("UPLOAD_NAME") + private String uploadName; + + /** + * 联系方式 + */ + @ApiModelProperty("联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 事件描述 + */ + @ApiModelProperty("事件描述") + @TableField("EVENT_DESCRIPTION") + private String eventDescription; + + @ApiModelProperty("经度") + @TableField("LNG") + private String lng; + + @ApiModelProperty("纬度") + @TableField("LAT") + private String lat; + + /** + * 事件上传时间 + */ + @ApiModelProperty("事件上传时间") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty("事件照片") + @TableField(exist = false) + private List imageList; + + + + @Override + public String toString() { + return "BusEvent{" + + "id=" + id + + ", eventTitle=" + eventTitle + + ", uploadName=" + uploadName + + ", phoneNumber=" + phoneNumber + + ", eventDescription=" + eventDescription + + ", lng=" + lng + + ", lat=" + lat + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java new file mode 100644 index 0000000..1e75245 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 事件图片表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event_image") +@Data +@ApiModel("BusEventImage") +public class BusEventImage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件ID + */ + @TableField("EVENT_ID") + private Long eventId; + + /** + * 报警图片 + */ + @TableField("IMAGE") + @ApiModelProperty("图片url") + private String image; + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java new file mode 100644 index 0000000..df89c70 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.core.base.json.DateDeserializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Device") +@TableName("br_device") +@Data +public class Device implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "设备ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty(value = "设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + /** + * 设备类型 + */ + @ApiModelProperty(value = "设备类型") + @TableField("DEVICE_TYPE") + private String deviceType; + + /** + * 设备批次 + */ + @ApiModelProperty(value = "设备批次") + @TableField("DEVICE_BATCH") + private String deviceBatch; + + /** + * 厂家 + */ + @ApiModelProperty(value = "厂家") + @TableField("MANUFACTURER") + private String manufacturer; + + /** + * 是否供电 + */ + @ApiModelProperty(value = "是否供电") + @TableField("IS_POWER_SUPPLY") + private String isPowerSupply; + + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间",dataType = "Date") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty(value = "设备类型名称") + @TableField(exist = false) + private String deviceTypeName; + + @ApiModelProperty(value = "是否供电名称") + @TableField(exist = false) + private String isPowerSupplyName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", deviceCode=" + deviceCode + + ", deviceType=" + deviceType + + ", deviceBatch=" + deviceBatch + + ", manufacturer=" + manufacturer + + ", isPowerSupply=" + isPowerSupply + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java new file mode 100644 index 0000000..5ee7015 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java @@ -0,0 +1,99 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 设备扩展信息表(安全树) + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Data +@TableName("br_device_ext") +public class DeviceExt implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 摄像头编号 + */ + @TableField("CAMERA_CODE") + private String cameraCode; + + /** + * 摄像头IP + */ + @TableField("CAMERA_IP") + private String cameraIp; + + /** + * 摄像头端口 + */ + @TableField("CAMERA_PORT") + private String cameraPort; + + /** + * 激甲编号 + */ + @TableField("GAS_CODE") + private String gasCode; + + /** + * 激甲IP + */ + @TableField("GAS_IP") + private String gasIp; + + /** + * 激甲端口 + */ + @TableField("GAS_PORT") + private String gasPort; + + /** + * 甲烷报警阈值 + */ + @TableField("GAS_THRESHOLD") + private String gasThreshold; + + @TableField(value = "HAT_LINING_CODE") + private String hatLiningCode; + + + @Override + public String toString() { + return "DeviceExt{" + + "id=" + id + + ", deviceId=" + deviceId + + ", cameraCode=" + cameraCode + + ", cameraIp=" + cameraIp + + ", cameraPort=" + cameraPort + + ", gasCode=" + gasCode + + ", gasIp=" + gasIp + + ", gasPort=" + gasPort + + ", gasThreshold=" + gasThreshold + + ", hatLiningCode=" + hatLiningCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java new file mode 100644 index 0000000..c4f3472 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java @@ -0,0 +1,62 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Data +@ApiModel("ProjectDevice") +@TableName("br_project_device") +public class ProjectDevice implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + @ApiModelProperty("设备ID(新增编辑时传)") + private Long deviceId; + + /** + * 设备编号 + */ + @TableField(exist = false) + @ApiModelProperty("设备编号(详情中展示,新增编辑不用传)") + private String deviceCode; + + @Override + public String toString() { + return "ProjectDevice{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java new file mode 100644 index 0000000..10b23c4 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java @@ -0,0 +1,104 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("ProjectWorker") +@TableName("br_project_worker") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ProjectWorker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 人员ID + */ + @ApiModelProperty("人员ID") + @TableField("WORKER_ID") + private Long workerId; + + /** + * 安全帽编号 + */ + @ApiModelProperty("安全帽编号") + @TableField("HAT_CODE") + private String hatCode; + + /** + * 背心编号 + */ + @ApiModelProperty("背心编号") + @TableField("VAST_CODE") + private String vastCode; + + /** + * 手环编号 + */ + @ApiModelProperty("手环编号") + @TableField("BRACELET_CODE") + private String braceletCode; + + @ApiModelProperty("人员姓名(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerName; + + @ApiModelProperty("人员部门ID(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptId; + + @ApiModelProperty("人员部门名称(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptName; + + @ApiModelProperty("人员联系方式(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerPhoneNumber; + + public ProjectWorker(Long projectId, Long workerId) { + this.projectId = projectId; + this.workerId = workerId; + } + + @Override + public String toString() { + return "ProjectWorker{" + + "id=" + id + + ", projectId=" + projectId + + ", workerId=" + workerId + + ", hatCode=" + hatCode + + ", vastCode=" + vastCode + + ", braceletCode=" + braceletCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java new file mode 100644 index 0000000..fa6f41d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 作业现场表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("WorkSiteInfo") +@TableName("br_work_site_info") +@Data +public class WorkSiteInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("作业现场ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业名称 + */ + @ApiModelProperty("作业名称") + @TableField("WORK_TITLE") + private String workTitle; + + /** + * 责任人 + */ + @ApiModelProperty("责任人(人员ID)") + @TableField("WORK_PERSON") + private Long workPerson; + + /** + * 作业描述 + */ + @ApiModelProperty("作业描述") + @TableField("WORK_SITE_DESC") + private String workSiteDesc; + + /** + * 作业状态 + */ + @ApiModelProperty("作业状态") + @TableField("PROJECT_STATE") + private String projectState; + + /** + * 所属道路 + */ + @ApiModelProperty("所属道路") + @TableField("WORK_ROAD") + private String workRoad; + + @TableField("IMAGE_URL") + private String imageUrl; + + @TableField("CREATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + @TableField("UPDATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("FINISH_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + @ApiModelProperty("负责人姓名(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonName; + + @ApiModelProperty("负责人联系方式(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonPhoneNumber; + + @ApiModelProperty("负责人所属部门ID(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private Long workPersonDeptId; + + @ApiModelProperty("负责人所属部门名称(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonDeptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + + @Override + public String toString() { + return "WorkSiteInfo{" + + "id=" + id + + ", workTitle=" + workTitle + + ", workPerson=" + workPerson + + ", workSiteDesc=" + workSiteDesc + + ", projectState=" + projectState + + ", imageUrl=" + imageUrl + + ", updateTime=" + updateTime + + ", workRoad=" + workRoad + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java new file mode 100644 index 0000000..28a4daa --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java @@ -0,0 +1,147 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Worker") +@TableName("br_worker") +@Data +public class Worker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "人员ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 姓名 + */ + @ApiModelProperty(value = "姓名") + @TableField("WORKER_NAME") + private String workerName; + + /** + * 性别 + */ + @ApiModelProperty(value = "性别") + @TableField("GENDER") + private String gender; + + /** + * 所属部门 + */ + @ApiModelProperty(value = "所属部门(人员管理)") + @TableField("DEPT_ID") + private Long deptId; + + /** + * 所属单位 + */ + @ApiModelProperty(value = "所属单位(入场申请中使用)") + @TableField("OWNER_SHIP") + private String ownerShip; + + /** + * 联系方式 + */ + @ApiModelProperty(value = "联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 证件号 + */ + @ApiModelProperty(value = "证件号") + @TableField("ID_CARD_NUMBER") + private String idCardNumber; + + /** + * 入场原因 + */ + @ApiModelProperty(value = "入场原因(入场申请中使用)") + @TableField("ENTER_REASON") + private String enterReason; + + /** + * 入场人脸照片 + */ + @ApiModelProperty(value = "人脸照片(照片路径)") + @TableField("WORKER_AVATAR") + private String workerAvatar; + + /** + * 申请入场时间 + */ + @ApiModelProperty(value = "注册时间/申请入场时间") + @TableField("CREATE_TIME") + private Date createTime; + + /** + * 人员类型 + */ + @ApiModelProperty(value = "人员类型(区分人员管理和入场申请)") + @TableField("WORKER_TYPE") + private String workerType; + + @ApiModelProperty(value = "性别名称") + @TableField(exist = false) + private String genderName; + + @ApiModelProperty(value = "部门名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @ApiModelProperty(value = "是否注册(0未注册;1已注册)",allowableValues = "0,1") + @TableField(exist = false) + private String isRegister; + + @Override + public String toString() { + return "Worker{" + + "id=" + id + + ", workerName=" + workerName + + ", gender=" + gender + + ", deptId=" + deptId + + ", ownerShip=" + ownerShip + + ", phoneNumber=" + phoneNumber + + ", idCardNumber=" + idCardNumber + + ", enterReason=" + enterReason + + ", workerAvatar=" + workerAvatar + + ", createTime=" + createTime + + ", workerType=" + workerType + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java new file mode 100644 index 0000000..9801742 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警记录表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusAlarmMapper extends BaseMapper { + + Page listPage(Page page,@Param("ew") QueryWrapper queryWrapper); + + void cancelAlarm(@Param("deviceId")Long deviceId,@Param("alarmType") String alarmType); + + List alarmCount(@Param("projectId")Long projectId, @Param("alarmStatus")String alarmStatus); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java new file mode 100644 index 0000000..9590b7d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件图片表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventImageMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java new file mode 100644 index 0000000..3c85edf --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java new file mode 100644 index 0000000..4ca9212 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 设备扩展信息表(安全树) Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface DeviceExtMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java new file mode 100644 index 0000000..444c0c5 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Mapper +public interface DeviceMapper extends BaseMapper { + + Page listDetailPage(Page page,@Param("ew") QueryWrapper ew); + + List selectProjectDevice(@Param("projectId") Long projectId); + + List selectHelmetList(@Param("deviceType")String deviceType); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java new file mode 100644 index 0000000..1d0c14e --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectDeviceMapper extends BaseMapper { + List selectDetailByProjectId(@Param("projectId") Long projectId); + + List selectDeviceLocationList(@Param("projectId") Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java new file mode 100644 index 0000000..58583d1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectWorkerMapper extends BaseMapper { + + List selectDetailByProjectId(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + + List selectWorkerLocationList(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java new file mode 100644 index 0000000..a4934d2 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +/** + *

+ * 作业现场表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkSiteInfoMapper extends BaseMapper { + + Page selectListPage(Page page,@Param("ew") QueryWrapper ew); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java new file mode 100644 index 0000000..258fb12 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkerMapper extends BaseMapper { + + + Page selectListPage(Page page, @Param("ew") QueryWrapper ew); + + List selectWorkerAvatars(@Param("projectId")Long projectId); + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml new file mode 100644 index 0000000..595088a --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml @@ -0,0 +1,58 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml new file mode 100644 index 0000000..fbc3db3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml new file mode 100644 index 0000000..627d573 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml new file mode 100644 index 0000000..5321d1c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml new file mode 100644 index 0000000..94262e1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml @@ -0,0 +1,97 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml new file mode 100644 index 0000000..c6d1c24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml @@ -0,0 +1,29 @@ + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml new file mode 100644 index 0000000..8d2de10 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml new file mode 100644 index 0000000..8f01326 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml @@ -0,0 +1,26 @@ + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml new file mode 100644 index 0000000..3e28b39 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml @@ -0,0 +1,56 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java new file mode 100644 index 0000000..f63c19c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 报警记录表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusAlarmService extends IService { + + boolean alarmUpload(AlarmUpload alarmUpload); + + Page listPage(Page page,QueryWrapper queryWrapper); + + List alarmCount(Long projectId,String alarmStatus); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java new file mode 100644 index 0000000..b1187ed --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 事件图片表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusEventImageService extends IService { + + boolean saveBusEventImages(Long eventId, List imageList); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java new file mode 100644 index 0000000..85c48d0 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 事件表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusEventService extends IService { + + boolean saveBusEvent(BusEvent busEvent); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java new file mode 100644 index 0000000..6fc5361 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 设备扩展信息表(安全树) 服务类 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface IDeviceExtService extends IService { + + boolean saveDeviceExt(DeviceDetailDTO deviceDetailDTO); + + boolean updateDeviceExt(DeviceDetailDTO deviceDetailDTO); + + boolean removeByDeviceIds(List deviceIds); + + boolean setGasThreshold(String gasIp,String gasPort,String threshold); + + String getGasThreshold(String gasIp,String gasPort); + + Long selectByGasIpPort(String gasIp,String gasPort); + + Long selectByCameraIpPort(String cameraIp,String cameraPort); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java new file mode 100644 index 0000000..9e62756 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java @@ -0,0 +1,32 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IDeviceService extends IService { + + boolean saveDevice(DeviceDetailDTO deviceDetailDTO); + + boolean updateDevice(DeviceDetailDTO deviceDetailDTO); + + boolean deleteDevices(List deviceIds); + + Page listPage(Page page, QueryWrapper queryWrapper, String status,Long projectId); + + List selectProjectDevice(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java new file mode 100644 index 0000000..8599411 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IProjectDeviceService extends IService { + + boolean saveProjectDeviceList(Long projectId, List projectDeviceList); + + boolean updateProjectDeviceList(Long projectId, List projectDeviceList); + + boolean deleteByProjectId(Long projectId); + + boolean deleteByProjectIds(List projectIds); + + List selectDetailByProjectId(Long projectId); + + Long selectProjectIdByDevice(Long deviceId); + + List selectDeviceLocationList(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java new file mode 100644 index 0000000..e921bc3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IProjectWorkerService extends IService { + + boolean saveProjectWorkerList(Long projectId, List projectWorkerList); + + boolean updateProjectWorkerList(Long projectId, List projectWorkerList); + + boolean deleteByProjectId(Long projectId); + + boolean deleteByProjectIds(List projectIds); + + List selectDetailByProjectId(Long projectId,String workerType); + + List selectWorkerLocationDTO(Long projectId); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java new file mode 100644 index 0000000..58a8590 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; +/** + *

+ * 作业现场表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IWorkSiteInfoService extends IService { + + boolean addWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO); + + boolean updateWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO); + + boolean deleteProjects(List projectIds); + + WorkSiteDetailDTO getWorkSiteDetail(Long projectId); + + Page selectListPage(Page page, QueryWrapper queryWrapper); + + boolean start(Long projectId); + + boolean finish(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java new file mode 100644 index 0000000..6c6ee98 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.extension.service.IService; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IWorkerService extends IService { + + boolean addWorker(Worker worker,Long projectId); + + Page selectListPage(Page page,QueryWrapper ew); + + Worker selectWorkerDetail(Long workerId); + + List faceRegister(String cameraIp,String cameraPort); + + List projectTempWorker(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java new file mode 100644 index 0000000..b44de1d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.consts.AlarmTypeEnum; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.entity.DataTreeLocation; +import com.casic.missiles.modular.system.mapper.BusAlarmMapper; +import com.casic.missiles.modular.system.service.*; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +/** + *

+ * 报警记录表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +@Slf4j +public class BusAlarmServiceImpl extends ServiceImpl implements IBusAlarmService { + + private final IDeviceExtService deviceExtService; + private final IDeviceService deviceService; + private final IProjectDeviceService projectDeviceService; + + private final ICasicFileService fileService; + + private final AbstractDictService dictService; + private final IDataSupportService dataSupportService; + + @Override + @Transactional + public boolean alarmUpload(AlarmUpload alarmUpload) { + log.info("alarm upload ==> {}",alarmUpload.toString()); + Long deviceId = null; + if(StrUtil.isAllNotBlank(alarmUpload.getGasIp(),alarmUpload.getGasPort())){ + deviceId = deviceExtService.selectByGasIpPort(alarmUpload.getGasIp(),alarmUpload.getGasPort()); + } + if(ObjectUtil.isEmpty(deviceId) && StrUtil.isAllNotBlank(alarmUpload.getCameraIp(),alarmUpload.getCameraPort())){ + deviceId = deviceExtService.selectByCameraIpPort(alarmUpload.getCameraIp(),alarmUpload.getCameraPort()); + } + + if(ObjectUtil.isEmpty(deviceId)){ + return false; + } + + BusAlarm alarm = new BusAlarm(); + alarm.setDeviceId(deviceId); + alarm.setProjectId(projectDeviceService.selectProjectIdByDevice(deviceId)); + alarm.setAlarmValue(alarmUpload.getAlarmValue()); + if(StrUtil.isNotEmpty(alarmUpload.getAlarmTime())){ + alarm.setAlarmTime(DateUtil.parseDateTime(alarmUpload.getAlarmTime())); + }else { + alarm.setAlarmTime(new Date()); + } + + alarm.setAlarmType(alarmUpload.getAlarmType()); + alarm.setAlarmContent(alarmUpload.getAlarmContent()); + if(StrUtil.isNotEmpty(alarmUpload.getAlarmImage())){ + String imgBase64 = "data:image/jpeg;base64," + alarmUpload.getAlarmImage(); + String imageUrl = fileService.saveFile(imgBase64); + alarm.setAlarmImage(imageUrl); + } + alarm.setAlarmStatus(ALARM_STATUS_ON); + + DataTreeLocation treeLocation = dataSupportService.getTreeLocation(deviceId); + if(ObjectUtil.isNotEmpty(treeLocation)){ + alarm.setAlarmLng(treeLocation.getGdLng()); + alarm.setAlarmLat(treeLocation.getGdLat()); + } + + //自动消警 + AlarmTypeEnum alarmTypeEnum = AlarmTypeEnum.getByAlarmType(alarm.getAlarmType()); + if(ObjectUtil.isNotEmpty(alarmTypeEnum) && alarmTypeEnum.isAutoCancel()){ + this.baseMapper.cancelAlarm(deviceId,alarm.getAlarmType()); + } + return this.save(alarm); + } + + @Override + public Page listPage(Page page, QueryWrapper queryWrapper) { + page = this.baseMapper.listPage(page, queryWrapper); + for (BusAlarm alarm : page.getRecords()) { + alarm.setAlarmTypeName(dictService.getDictNameByCode("alarmType",alarm.getAlarmType())); + alarm.setAlarmStatusName(dictService.getDictNameByCode("alarmStatus",alarm.getAlarmStatus())); + if(StrUtil.isNotEmpty(alarm.getProjectState())){ + alarm.setProjectStateName(dictService.getDictNameByCode("projectStatus",alarm.getProjectState())); + } + } + return page; + } + + @Override + public List alarmCount(Long projectId, String alarmStatus) { + List list = this.baseMapper.alarmCount(projectId, alarmStatus); + list = list.stream().filter(i->StrUtil.isNotEmpty(i.getAlarmType())).collect(Collectors.toList()); + for (AlarmTypeCountDTO countDTO : list) { + countDTO.setAlarmTypeName(dictService.getDictNameByCode("alarmType",countDTO.getAlarmType())); + } + return list; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java new file mode 100644 index 0000000..a43f7c1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.casic.missiles.modular.system.mapper.BusEventImageMapper; +import com.casic.missiles.modular.system.service.IBusEventImageService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 事件图片表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +public class BusEventImageServiceImpl extends ServiceImpl implements IBusEventImageService { + + @Override + public boolean saveBusEventImages(Long eventId, List imageList) { + imageList.forEach(i->i.setEventId(eventId)); + return this.saveBatch(imageList); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java new file mode 100644 index 0000000..21e511c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java @@ -0,0 +1,39 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.mapper.BusEventMapper; +import com.casic.missiles.modular.system.service.IBusEventImageService; +import com.casic.missiles.modular.system.service.IBusEventService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; + +/** + *

+ * 事件表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class BusEventServiceImpl extends ServiceImpl implements IBusEventService { + + private final IBusEventImageService busEventImageService; + + + @Override + @Transactional + public boolean saveBusEvent(BusEvent busEvent) { + busEvent.setCreateTime(new Date()); + boolean res = this.save(busEvent); + if(res){ + res = busEventImageService.saveBusEventImages(busEvent.getId(),busEvent.getImageList()); + } + return res; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java new file mode 100644 index 0000000..2bdb63d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java @@ -0,0 +1,102 @@ +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.core.conditions.update.UpdateWrapper; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.casic.missiles.modular.system.mapper.DeviceExtMapper; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 设备扩展信息表(安全树) 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Service +public class DeviceExtServiceImpl extends ServiceImpl implements IDeviceExtService { + + + @Override + public boolean saveDeviceExt(DeviceDetailDTO deviceDetailDTO) { + DeviceExt ext = new DeviceExt(); + ext.setDeviceId(deviceDetailDTO.getId()); + ext.setCameraCode(deviceDetailDTO.getCameraCode()); + ext.setCameraIp(deviceDetailDTO.getCameraIp()); + ext.setCameraPort(deviceDetailDTO.getCameraPort()); + ext.setGasCode(deviceDetailDTO.getGasCode()); + ext.setGasIp(deviceDetailDTO.getGasIp()); + ext.setGasPort(deviceDetailDTO.getGasPort()); + ext.setHatLiningCode(deviceDetailDTO.getHatLiningCode()); + return this.save(ext); + } + + @Override + public boolean updateDeviceExt(DeviceDetailDTO deviceDetailDTO) { + DeviceExt ext = this.selectByDeviceId(deviceDetailDTO.getId()); + ext.setCameraCode(deviceDetailDTO.getCameraCode()); + ext.setCameraIp(deviceDetailDTO.getCameraIp()); + ext.setCameraPort(deviceDetailDTO.getCameraPort()); + ext.setGasCode(deviceDetailDTO.getGasCode()); + ext.setGasIp(deviceDetailDTO.getGasIp()); + ext.setGasPort(deviceDetailDTO.getGasPort()); + ext.setHatLiningCode(deviceDetailDTO.getHatLiningCode()); + return this.updateById(ext); + } + + @Override + public boolean removeByDeviceIds(List deviceIds) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("DEVICE_ID",deviceIds); + return this.remove(queryWrapper); + } + + @Override + public boolean setGasThreshold(String gasIp, String gasPort, String threshold) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.set("GAS_THRESHOLD",threshold); + updateWrapper.eq("GAS_IP",gasIp); + updateWrapper.eq("GAS_PORT",gasPort); + return this.update(updateWrapper); + } + + @Override + public String getGasThreshold(String gasIp, String gasPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("GAS_IP",gasIp); + queryWrapper.eq("GAS_PORT",gasPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getGasThreshold() : null; + } + + private DeviceExt selectByDeviceId(Long deviceId){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVICE_ID",deviceId); + return this.getOne(queryWrapper); + } + + @Override + public Long selectByGasIpPort(String gasIp, String gasPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("GAS_IP",gasIp); + queryWrapper.eq("GAS_PORT",gasPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getDeviceId() : null; + } + + @Override + public Long selectByCameraIpPort(String cameraIp, String cameraPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("CAMERA_IP",cameraIp); + queryWrapper.eq("CAMERA_PORT",cameraPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getDeviceId() : null; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java new file mode 100644 index 0000000..9df79ef --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.mapper.DeviceMapper; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.modular.system.consts.DeviceConst.*; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class DeviceServiceImpl extends ServiceImpl implements IDeviceService { + + private final AbstractDictService dictService; + private final IDeviceExtService deviceExtService; + + private final IProjectDeviceService projectDeviceService; + + @Transactional + @Override + public boolean saveDevice(DeviceDetailDTO deviceDetailDTO) { + deviceDetailDTO.setCreateTime(new Date()); + boolean deviceRes = this.save(deviceDetailDTO); + if(deviceRes && DEVICE_TYPE_TREE.equals(deviceDetailDTO.getDeviceType())){ + deviceRes = deviceExtService.saveDeviceExt(deviceDetailDTO); + } + return deviceRes; + } + + @Transactional + @Override + public boolean updateDevice(DeviceDetailDTO deviceDetailDTO) { + boolean deviceRes = this.updateById(deviceDetailDTO); + if(deviceRes && DEVICE_TYPE_TREE.equals(deviceDetailDTO.getDeviceType())){ + deviceRes = deviceExtService.updateDeviceExt(deviceDetailDTO); + } + return deviceRes; + } + + @Transactional + @Override + public boolean deleteDevices(List deviceIds) { + return this.removeByIds(deviceIds) & deviceExtService.removeByDeviceIds(deviceIds); + } + + @Override + public Page listPage(Page page, QueryWrapper queryWrapper,String status,Long projectId) { + String ID_COLUMN_NAME = "br_device.ID"; + List useDevices = this.selectProjectDevice(null); + List projectDevices; + if(ObjectUtil.isNotEmpty(projectId)){ + projectDevices = this.selectProjectDevice(projectId); + } else { + projectDevices = null; + } + + // 查询使用中的设备(如果传了 projectId,查询 使用中&&此现场) + if(DEVICE_STATUS_USE.equals(status)){ + if(CollUtil.isEmpty(useDevices)){ + return page; + } + if(ObjectUtil.isNotEmpty(projectId) && CollUtil.isEmpty(projectDevices)){ + return page; + } + queryWrapper.in(ID_COLUMN_NAME,useDevices); + if(CollUtil.isNotEmpty(projectDevices)){ + queryWrapper.in(ID_COLUMN_NAME,projectDevices); + } + + } + + // 查询未使用的设备(如果传了 projectId,查询 未使用||此现场) + if(DEVICE_STATUS_NORMAL.equals(status)) { + if (CollUtil.isNotEmpty(useDevices)) { + if (CollUtil.isEmpty(projectDevices)) { + queryWrapper.notIn(ID_COLUMN_NAME, useDevices); + } else { + queryWrapper.and(i -> i.notIn(ID_COLUMN_NAME, useDevices).or().in(ID_COLUMN_NAME, projectDevices)); + } + } + } + + page = this.baseMapper.listDetailPage(page, queryWrapper); + for (DeviceDetailDTO record : page.getRecords()) { + record.setDeviceTypeName(dictService.getDictNameByCode("deviceType",record.getDeviceType())); + record.setIsPowerSupplyName(dictService.getDictNameByCode("isPowerSupply",record.getIsPowerSupply())); + record.setRegisterTime(DateUtil.formatDate(record.getCreateTime())); + record.setStatus(useDevices.contains(record.getId()) ? DEVICE_STATUS_USE : DEVICE_STATUS_NORMAL); + record.setStatusName(dictService.getDictNameByCode("deviceStatus",record.getStatus())); + } + return page; + } + + @Override + public List selectProjectDevice(Long projectId) { + return this.baseMapper.selectProjectDevice(projectId); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceSupportServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceSupportServiceImpl.java new file mode 100644 index 0000000..ffd01ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceSupportServiceImpl.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.mapper.DeviceMapper; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceSupportService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; + +import static com.casic.missiles.modular.system.consts.DeviceConst.DEVICE_TYPE_HAT; + +@Service +@RequiredArgsConstructor +public class DeviceSupportServiceImpl implements IDeviceSupportService { + + private final IDeviceExtService deviceExtService; + + private final DeviceMapper deviceMapper; + + @Override + public Long selectByGasIpPort(String gasIp, String gasPort) { + return deviceExtService.selectByGasIpPort(gasIp, gasPort); + } + + @Override + public List selectHelmetList() { + return deviceMapper.selectHelmetList(DEVICE_TYPE_HAT); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectDeviceServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectDeviceServiceImpl.java new file mode 100644 index 0000000..965f55c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectDeviceServiceImpl.java @@ -0,0 +1,96 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.DataGas; +import com.casic.missiles.modular.system.entity.DataTreeLocation; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.mapper.ProjectDeviceMapper; +import com.casic.missiles.modular.system.service.IDataSupportService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.utils.LngLatUtil; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.stream.Collectors; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class ProjectDeviceServiceImpl extends ServiceImpl implements IProjectDeviceService { + + private final IDataSupportService dataSupportService; + + @Override + public boolean saveProjectDeviceList(Long projectId, List projectDeviceList) { + projectDeviceList.forEach(i->i.setProjectId(projectId)); + return this.saveBatch(projectDeviceList); + } + + @Transactional + @Override + public boolean updateProjectDeviceList(Long projectId, List projectDeviceList) { + return this.deleteByProjectId(projectId) && this.saveProjectDeviceList(projectId, projectDeviceList); + } + + @Override + public boolean deleteByProjectId(Long projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("PROJECT_ID",projectId); + return this.remove(queryWrapper); + } + + @Override + public boolean deleteByProjectIds(List projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("PROJECT_ID",projectId); + return this.remove(queryWrapper); + } + + @Override + public List selectDetailByProjectId(Long projectId) { + return this.baseMapper.selectDetailByProjectId(projectId); + } + + @Override + public Long selectProjectIdByDevice(Long deviceId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVICE_ID",deviceId); + queryWrapper.exists("(select Id FROM br_work_site_info p where p.ID = br_project_device.PROJECT_ID AND p.PROJECT_STATE != '3')"); + ProjectDevice projectDevice = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(projectDevice) ? projectDevice.getProjectId() : null; + } + + @Override + public List selectDeviceLocationList(Long projectId) { + List list = this.baseMapper.selectDeviceLocationList(projectId); + for (DeviceLocationDTO locationDTO : list) { + DataGas dataGas = dataSupportService.getGasData(locationDTO.getDeviceId()); + DataTreeLocation location = dataSupportService.getTreeLocation(locationDTO.getDeviceId(),true); + if(ObjectUtil.isNotEmpty(dataGas)){ + locationDTO.setGasValue(dataGas.getGasValue()); + locationDTO.setTime(DateUtil.formatDateTime(dataGas.getTs())); + } + if(ObjectUtil.isNotEmpty(location)){ + locationDTO.setLng(location.getGdLng()); + locationDTO.setLat(location.getGdLat()); + locationDTO.setLocation(location.getLocation()); + } + } + list = list.stream().filter(i-> StrUtil.isAllNotEmpty(i.getLng(),i.getLat())).collect(Collectors.toList()); + return LngLatUtil.sort(list); + } +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java new file mode 100644 index 0000000..73d7799 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.dto; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "AlarmUpload",description = "报警上传") +@Data +public class AlarmUpload { + + @ApiModelProperty(value = "摄像头ip") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + @ApiModelProperty(value = "安全树甲烷设备ip") + private String gasIp; + @ApiModelProperty(value = "安全树甲烷设备端口") + private String gasPort; + @ApiModelProperty(value = "报警值") + private String alarmValue; + @ApiModelProperty(value = "报警时间") + private String alarmTime; + @ApiModelProperty(value = "报警类型") + private String alarmType; + @ApiModelProperty(value = "报警图片") + private String alarmImage; + @ApiModelProperty(value = "报警内容") + private String alarmContent; + + @Override + public String toString() { + return "AlarmUpload{" + + "cameraIp='" + cameraIp + '\'' + + ", cameraPort='" + cameraPort + '\'' + + ", gasIp='" + gasIp + '\'' + + ", gasPort='" + gasPort + '\'' + + ", alarmValue='" + alarmValue + '\'' + + ", alarmTime='" + alarmTime + '\'' + + ", alarmType='" + alarmType + '\'' + + ", alarmImage='" + (StrUtil.isNotEmpty(alarmImage) ? alarmImage.substring(0,50) : "null") + '\'' + + ", alarmContent='" + alarmContent + '\'' + + '}'; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java new file mode 100644 index 0000000..ea518d9 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.modular.system.entity.Device; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("DeviceDetailDTO") +@Data +public class DeviceDetailDTO extends Device { + + @ApiModelProperty(value = "摄像头编号") + private String cameraCode; + + @ApiModelProperty(value = "摄像头IP") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + + @ApiModelProperty(value = "激甲编号") + private String gasCode; + + @ApiModelProperty(value = "激甲IP") + private String gasIp; + + @ApiModelProperty(value = "激甲端口") + private String gasPort; + + @ApiModelProperty(value = "智能帽衬编号") + private String hatLiningCode; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java new file mode 100644 index 0000000..29378ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("WorkSiteDetailDTO") +public class WorkSiteDetailDTO extends WorkSiteInfo { + + @ApiModelProperty(value = "安全树列表",dataType = "ProjectDevice") + private List deviceList; + + @ApiModelProperty(value = "人员列表",dataType = "ProjectWorker") + private List workerList; + + + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java new file mode 100644 index 0000000..6fd7b24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java @@ -0,0 +1,68 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "WorkerLocationDTO",description = "人员位置列表(首页)") +@Data +public class WorkerLocationDTO { + + @ApiModelProperty("人员ID") + private Long workerId; + + @ApiModelProperty("人员姓名") + private String workerName; + + @ApiModelProperty("安全帽编号") + private String hatCode; + + @ApiModelProperty("安全帽ID") + private Long hatId; + + @ApiModelProperty("背心编号") + private String vastCode; + + @ApiModelProperty("手环编号") + private String braceletCode; + + @ApiModelProperty("位置") + private String location; + + @ApiModelProperty("时间") + private String time; + + @ApiModelProperty("经度") + private String lng; + + @ApiModelProperty("纬度") + private String lat; + + @ApiModelProperty("心率") + private String heartRate; + + @ApiModelProperty("血氧") + private String bloodOxygen; + + @ApiModelProperty("一氧化碳") + private String co; + + @ApiModelProperty("甲烷") + private String gas; + + @ApiModelProperty("硫化氢") + private String h2s; + + @ApiModelProperty("氧气") + private String o2; + + @ApiModelProperty("信号") + private String signal; + + @ApiModelProperty("电量") + private String cell; + + @ApiModelProperty("是否报警") + private boolean alarmFlag; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java new file mode 100644 index 0000000..efb4a23 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java @@ -0,0 +1,159 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 报警记录表 + *

+ * + * @author zyj + * @since 2023-05-16 + */ +@Data +@ApiModel("Alarm") +@TableName("br_bus_alarm") +public class BusAlarm implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @ApiModelProperty(value = "设备ID") + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 报警类型 + */ + @ApiModelProperty(value = "报警类型") + @TableField("ALARM_TYPE") + private String alarmType; + + /** + * 报警状态 + */ + @ApiModelProperty(value = "报警状态") + @TableField("ALARM_STATUS") + private String alarmStatus; + + /** + * 报警值 + */ + @ApiModelProperty(value = "报警值") + @TableField("ALARM_VALUE") + private String alarmValue; + + /** + * 报警图片 + */ + @ApiModelProperty(value = "报警图片") + @TableField("ALARM_IMAGE") + private String alarmImage; + + /** + * 报警内容 + */ + @ApiModelProperty(value = "报警内容") + @TableField("ALARM_CONTENT") + private String alarmContent; + + /** + * 报警时间 + */ + @ApiModelProperty(value = "报警时间") + @TableField("ALARM_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date alarmTime; + + /** + * 消警时间 + */ + @ApiModelProperty(value = "消警时间") + @TableField("CANCEL_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + /** + * 报警位置经度 + */ + @ApiModelProperty(value = "报警位置经度") + @TableField("ALARM_LNG") + private String alarmLng; + + /** + * 报警位置纬度 + */ + @ApiModelProperty(value = "报警位置纬度") + @TableField("ALARM_LAT") + private String alarmLat; + + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmStatusName; + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmTypeName; + @ApiModelProperty("作业名称") + @TableField(exist = false) + private String workTitle; + @ApiModelProperty("所属道路") + @TableField(exist = false) + private String workRoad; + @ApiModelProperty("作业状态") + @TableField(exist = false) + private String projectState; + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + @ApiModelProperty("负责人姓名") + @TableField(exist = false) + private String workPersonName; + @ApiModelProperty("负责人联系方式") + @TableField(exist = false) + private String workPersonPhoneNumber; + + + @Override + public String toString() { + return "BusAlarm{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + ", alarmType=" + alarmType + + ", alarmValue=" + alarmValue + + ", alarmStatus=" + alarmStatus + + ", alarmImage=" + alarmImage + + ", alarmContent=" + alarmContent + + ", alarmTime=" + alarmTime + + ", cancelTime=" + cancelTime + + ", alarmLng=" + alarmLng + + ", alarmLat=" + alarmLat + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java new file mode 100644 index 0000000..a0b7543 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + *

+ * 事件表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event") +@Data +@ApiModel("BusEvent") +public class BusEvent implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("事件ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件标题 + */ + @ApiModelProperty("事件名称") + @TableField("EVENT_TITLE") + private String eventTitle; + + /** + * 上报人员 + */ + @ApiModelProperty("上报人员") + @TableField("UPLOAD_NAME") + private String uploadName; + + /** + * 联系方式 + */ + @ApiModelProperty("联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 事件描述 + */ + @ApiModelProperty("事件描述") + @TableField("EVENT_DESCRIPTION") + private String eventDescription; + + @ApiModelProperty("经度") + @TableField("LNG") + private String lng; + + @ApiModelProperty("纬度") + @TableField("LAT") + private String lat; + + /** + * 事件上传时间 + */ + @ApiModelProperty("事件上传时间") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty("事件照片") + @TableField(exist = false) + private List imageList; + + + + @Override + public String toString() { + return "BusEvent{" + + "id=" + id + + ", eventTitle=" + eventTitle + + ", uploadName=" + uploadName + + ", phoneNumber=" + phoneNumber + + ", eventDescription=" + eventDescription + + ", lng=" + lng + + ", lat=" + lat + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java new file mode 100644 index 0000000..1e75245 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 事件图片表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event_image") +@Data +@ApiModel("BusEventImage") +public class BusEventImage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件ID + */ + @TableField("EVENT_ID") + private Long eventId; + + /** + * 报警图片 + */ + @TableField("IMAGE") + @ApiModelProperty("图片url") + private String image; + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java new file mode 100644 index 0000000..df89c70 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.core.base.json.DateDeserializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Device") +@TableName("br_device") +@Data +public class Device implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "设备ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty(value = "设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + /** + * 设备类型 + */ + @ApiModelProperty(value = "设备类型") + @TableField("DEVICE_TYPE") + private String deviceType; + + /** + * 设备批次 + */ + @ApiModelProperty(value = "设备批次") + @TableField("DEVICE_BATCH") + private String deviceBatch; + + /** + * 厂家 + */ + @ApiModelProperty(value = "厂家") + @TableField("MANUFACTURER") + private String manufacturer; + + /** + * 是否供电 + */ + @ApiModelProperty(value = "是否供电") + @TableField("IS_POWER_SUPPLY") + private String isPowerSupply; + + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间",dataType = "Date") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty(value = "设备类型名称") + @TableField(exist = false) + private String deviceTypeName; + + @ApiModelProperty(value = "是否供电名称") + @TableField(exist = false) + private String isPowerSupplyName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", deviceCode=" + deviceCode + + ", deviceType=" + deviceType + + ", deviceBatch=" + deviceBatch + + ", manufacturer=" + manufacturer + + ", isPowerSupply=" + isPowerSupply + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java new file mode 100644 index 0000000..5ee7015 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java @@ -0,0 +1,99 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 设备扩展信息表(安全树) + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Data +@TableName("br_device_ext") +public class DeviceExt implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 摄像头编号 + */ + @TableField("CAMERA_CODE") + private String cameraCode; + + /** + * 摄像头IP + */ + @TableField("CAMERA_IP") + private String cameraIp; + + /** + * 摄像头端口 + */ + @TableField("CAMERA_PORT") + private String cameraPort; + + /** + * 激甲编号 + */ + @TableField("GAS_CODE") + private String gasCode; + + /** + * 激甲IP + */ + @TableField("GAS_IP") + private String gasIp; + + /** + * 激甲端口 + */ + @TableField("GAS_PORT") + private String gasPort; + + /** + * 甲烷报警阈值 + */ + @TableField("GAS_THRESHOLD") + private String gasThreshold; + + @TableField(value = "HAT_LINING_CODE") + private String hatLiningCode; + + + @Override + public String toString() { + return "DeviceExt{" + + "id=" + id + + ", deviceId=" + deviceId + + ", cameraCode=" + cameraCode + + ", cameraIp=" + cameraIp + + ", cameraPort=" + cameraPort + + ", gasCode=" + gasCode + + ", gasIp=" + gasIp + + ", gasPort=" + gasPort + + ", gasThreshold=" + gasThreshold + + ", hatLiningCode=" + hatLiningCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java new file mode 100644 index 0000000..c4f3472 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java @@ -0,0 +1,62 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Data +@ApiModel("ProjectDevice") +@TableName("br_project_device") +public class ProjectDevice implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + @ApiModelProperty("设备ID(新增编辑时传)") + private Long deviceId; + + /** + * 设备编号 + */ + @TableField(exist = false) + @ApiModelProperty("设备编号(详情中展示,新增编辑不用传)") + private String deviceCode; + + @Override + public String toString() { + return "ProjectDevice{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java new file mode 100644 index 0000000..10b23c4 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java @@ -0,0 +1,104 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("ProjectWorker") +@TableName("br_project_worker") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ProjectWorker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 人员ID + */ + @ApiModelProperty("人员ID") + @TableField("WORKER_ID") + private Long workerId; + + /** + * 安全帽编号 + */ + @ApiModelProperty("安全帽编号") + @TableField("HAT_CODE") + private String hatCode; + + /** + * 背心编号 + */ + @ApiModelProperty("背心编号") + @TableField("VAST_CODE") + private String vastCode; + + /** + * 手环编号 + */ + @ApiModelProperty("手环编号") + @TableField("BRACELET_CODE") + private String braceletCode; + + @ApiModelProperty("人员姓名(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerName; + + @ApiModelProperty("人员部门ID(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptId; + + @ApiModelProperty("人员部门名称(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptName; + + @ApiModelProperty("人员联系方式(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerPhoneNumber; + + public ProjectWorker(Long projectId, Long workerId) { + this.projectId = projectId; + this.workerId = workerId; + } + + @Override + public String toString() { + return "ProjectWorker{" + + "id=" + id + + ", projectId=" + projectId + + ", workerId=" + workerId + + ", hatCode=" + hatCode + + ", vastCode=" + vastCode + + ", braceletCode=" + braceletCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java new file mode 100644 index 0000000..fa6f41d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 作业现场表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("WorkSiteInfo") +@TableName("br_work_site_info") +@Data +public class WorkSiteInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("作业现场ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业名称 + */ + @ApiModelProperty("作业名称") + @TableField("WORK_TITLE") + private String workTitle; + + /** + * 责任人 + */ + @ApiModelProperty("责任人(人员ID)") + @TableField("WORK_PERSON") + private Long workPerson; + + /** + * 作业描述 + */ + @ApiModelProperty("作业描述") + @TableField("WORK_SITE_DESC") + private String workSiteDesc; + + /** + * 作业状态 + */ + @ApiModelProperty("作业状态") + @TableField("PROJECT_STATE") + private String projectState; + + /** + * 所属道路 + */ + @ApiModelProperty("所属道路") + @TableField("WORK_ROAD") + private String workRoad; + + @TableField("IMAGE_URL") + private String imageUrl; + + @TableField("CREATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + @TableField("UPDATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("FINISH_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + @ApiModelProperty("负责人姓名(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonName; + + @ApiModelProperty("负责人联系方式(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonPhoneNumber; + + @ApiModelProperty("负责人所属部门ID(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private Long workPersonDeptId; + + @ApiModelProperty("负责人所属部门名称(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonDeptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + + @Override + public String toString() { + return "WorkSiteInfo{" + + "id=" + id + + ", workTitle=" + workTitle + + ", workPerson=" + workPerson + + ", workSiteDesc=" + workSiteDesc + + ", projectState=" + projectState + + ", imageUrl=" + imageUrl + + ", updateTime=" + updateTime + + ", workRoad=" + workRoad + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java new file mode 100644 index 0000000..28a4daa --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java @@ -0,0 +1,147 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Worker") +@TableName("br_worker") +@Data +public class Worker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "人员ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 姓名 + */ + @ApiModelProperty(value = "姓名") + @TableField("WORKER_NAME") + private String workerName; + + /** + * 性别 + */ + @ApiModelProperty(value = "性别") + @TableField("GENDER") + private String gender; + + /** + * 所属部门 + */ + @ApiModelProperty(value = "所属部门(人员管理)") + @TableField("DEPT_ID") + private Long deptId; + + /** + * 所属单位 + */ + @ApiModelProperty(value = "所属单位(入场申请中使用)") + @TableField("OWNER_SHIP") + private String ownerShip; + + /** + * 联系方式 + */ + @ApiModelProperty(value = "联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 证件号 + */ + @ApiModelProperty(value = "证件号") + @TableField("ID_CARD_NUMBER") + private String idCardNumber; + + /** + * 入场原因 + */ + @ApiModelProperty(value = "入场原因(入场申请中使用)") + @TableField("ENTER_REASON") + private String enterReason; + + /** + * 入场人脸照片 + */ + @ApiModelProperty(value = "人脸照片(照片路径)") + @TableField("WORKER_AVATAR") + private String workerAvatar; + + /** + * 申请入场时间 + */ + @ApiModelProperty(value = "注册时间/申请入场时间") + @TableField("CREATE_TIME") + private Date createTime; + + /** + * 人员类型 + */ + @ApiModelProperty(value = "人员类型(区分人员管理和入场申请)") + @TableField("WORKER_TYPE") + private String workerType; + + @ApiModelProperty(value = "性别名称") + @TableField(exist = false) + private String genderName; + + @ApiModelProperty(value = "部门名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @ApiModelProperty(value = "是否注册(0未注册;1已注册)",allowableValues = "0,1") + @TableField(exist = false) + private String isRegister; + + @Override + public String toString() { + return "Worker{" + + "id=" + id + + ", workerName=" + workerName + + ", gender=" + gender + + ", deptId=" + deptId + + ", ownerShip=" + ownerShip + + ", phoneNumber=" + phoneNumber + + ", idCardNumber=" + idCardNumber + + ", enterReason=" + enterReason + + ", workerAvatar=" + workerAvatar + + ", createTime=" + createTime + + ", workerType=" + workerType + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java new file mode 100644 index 0000000..9801742 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警记录表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusAlarmMapper extends BaseMapper { + + Page listPage(Page page,@Param("ew") QueryWrapper queryWrapper); + + void cancelAlarm(@Param("deviceId")Long deviceId,@Param("alarmType") String alarmType); + + List alarmCount(@Param("projectId")Long projectId, @Param("alarmStatus")String alarmStatus); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java new file mode 100644 index 0000000..9590b7d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件图片表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventImageMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java new file mode 100644 index 0000000..3c85edf --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java new file mode 100644 index 0000000..4ca9212 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 设备扩展信息表(安全树) Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface DeviceExtMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java new file mode 100644 index 0000000..444c0c5 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Mapper +public interface DeviceMapper extends BaseMapper { + + Page listDetailPage(Page page,@Param("ew") QueryWrapper ew); + + List selectProjectDevice(@Param("projectId") Long projectId); + + List selectHelmetList(@Param("deviceType")String deviceType); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java new file mode 100644 index 0000000..1d0c14e --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectDeviceMapper extends BaseMapper { + List selectDetailByProjectId(@Param("projectId") Long projectId); + + List selectDeviceLocationList(@Param("projectId") Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java new file mode 100644 index 0000000..58583d1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectWorkerMapper extends BaseMapper { + + List selectDetailByProjectId(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + + List selectWorkerLocationList(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java new file mode 100644 index 0000000..a4934d2 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +/** + *

+ * 作业现场表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkSiteInfoMapper extends BaseMapper { + + Page selectListPage(Page page,@Param("ew") QueryWrapper ew); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java new file mode 100644 index 0000000..258fb12 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkerMapper extends BaseMapper { + + + Page selectListPage(Page page, @Param("ew") QueryWrapper ew); + + List selectWorkerAvatars(@Param("projectId")Long projectId); + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml new file mode 100644 index 0000000..595088a --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml @@ -0,0 +1,58 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml new file mode 100644 index 0000000..fbc3db3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml new file mode 100644 index 0000000..627d573 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml new file mode 100644 index 0000000..5321d1c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml new file mode 100644 index 0000000..94262e1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml @@ -0,0 +1,97 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml new file mode 100644 index 0000000..c6d1c24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml @@ -0,0 +1,29 @@ + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml new file mode 100644 index 0000000..8d2de10 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml new file mode 100644 index 0000000..8f01326 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml @@ -0,0 +1,26 @@ + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml new file mode 100644 index 0000000..3e28b39 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml @@ -0,0 +1,56 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java new file mode 100644 index 0000000..f63c19c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 报警记录表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusAlarmService extends IService { + + boolean alarmUpload(AlarmUpload alarmUpload); + + Page listPage(Page page,QueryWrapper queryWrapper); + + List alarmCount(Long projectId,String alarmStatus); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java new file mode 100644 index 0000000..b1187ed --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 事件图片表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusEventImageService extends IService { + + boolean saveBusEventImages(Long eventId, List imageList); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java new file mode 100644 index 0000000..85c48d0 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 事件表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusEventService extends IService { + + boolean saveBusEvent(BusEvent busEvent); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java new file mode 100644 index 0000000..6fc5361 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 设备扩展信息表(安全树) 服务类 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface IDeviceExtService extends IService { + + boolean saveDeviceExt(DeviceDetailDTO deviceDetailDTO); + + boolean updateDeviceExt(DeviceDetailDTO deviceDetailDTO); + + boolean removeByDeviceIds(List deviceIds); + + boolean setGasThreshold(String gasIp,String gasPort,String threshold); + + String getGasThreshold(String gasIp,String gasPort); + + Long selectByGasIpPort(String gasIp,String gasPort); + + Long selectByCameraIpPort(String cameraIp,String cameraPort); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java new file mode 100644 index 0000000..9e62756 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java @@ -0,0 +1,32 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IDeviceService extends IService { + + boolean saveDevice(DeviceDetailDTO deviceDetailDTO); + + boolean updateDevice(DeviceDetailDTO deviceDetailDTO); + + boolean deleteDevices(List deviceIds); + + Page listPage(Page page, QueryWrapper queryWrapper, String status,Long projectId); + + List selectProjectDevice(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java new file mode 100644 index 0000000..8599411 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IProjectDeviceService extends IService { + + boolean saveProjectDeviceList(Long projectId, List projectDeviceList); + + boolean updateProjectDeviceList(Long projectId, List projectDeviceList); + + boolean deleteByProjectId(Long projectId); + + boolean deleteByProjectIds(List projectIds); + + List selectDetailByProjectId(Long projectId); + + Long selectProjectIdByDevice(Long deviceId); + + List selectDeviceLocationList(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java new file mode 100644 index 0000000..e921bc3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IProjectWorkerService extends IService { + + boolean saveProjectWorkerList(Long projectId, List projectWorkerList); + + boolean updateProjectWorkerList(Long projectId, List projectWorkerList); + + boolean deleteByProjectId(Long projectId); + + boolean deleteByProjectIds(List projectIds); + + List selectDetailByProjectId(Long projectId,String workerType); + + List selectWorkerLocationDTO(Long projectId); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java new file mode 100644 index 0000000..58a8590 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; +/** + *

+ * 作业现场表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IWorkSiteInfoService extends IService { + + boolean addWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO); + + boolean updateWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO); + + boolean deleteProjects(List projectIds); + + WorkSiteDetailDTO getWorkSiteDetail(Long projectId); + + Page selectListPage(Page page, QueryWrapper queryWrapper); + + boolean start(Long projectId); + + boolean finish(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java new file mode 100644 index 0000000..6c6ee98 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.extension.service.IService; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IWorkerService extends IService { + + boolean addWorker(Worker worker,Long projectId); + + Page selectListPage(Page page,QueryWrapper ew); + + Worker selectWorkerDetail(Long workerId); + + List faceRegister(String cameraIp,String cameraPort); + + List projectTempWorker(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java new file mode 100644 index 0000000..b44de1d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.consts.AlarmTypeEnum; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.entity.DataTreeLocation; +import com.casic.missiles.modular.system.mapper.BusAlarmMapper; +import com.casic.missiles.modular.system.service.*; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +/** + *

+ * 报警记录表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +@Slf4j +public class BusAlarmServiceImpl extends ServiceImpl implements IBusAlarmService { + + private final IDeviceExtService deviceExtService; + private final IDeviceService deviceService; + private final IProjectDeviceService projectDeviceService; + + private final ICasicFileService fileService; + + private final AbstractDictService dictService; + private final IDataSupportService dataSupportService; + + @Override + @Transactional + public boolean alarmUpload(AlarmUpload alarmUpload) { + log.info("alarm upload ==> {}",alarmUpload.toString()); + Long deviceId = null; + if(StrUtil.isAllNotBlank(alarmUpload.getGasIp(),alarmUpload.getGasPort())){ + deviceId = deviceExtService.selectByGasIpPort(alarmUpload.getGasIp(),alarmUpload.getGasPort()); + } + if(ObjectUtil.isEmpty(deviceId) && StrUtil.isAllNotBlank(alarmUpload.getCameraIp(),alarmUpload.getCameraPort())){ + deviceId = deviceExtService.selectByCameraIpPort(alarmUpload.getCameraIp(),alarmUpload.getCameraPort()); + } + + if(ObjectUtil.isEmpty(deviceId)){ + return false; + } + + BusAlarm alarm = new BusAlarm(); + alarm.setDeviceId(deviceId); + alarm.setProjectId(projectDeviceService.selectProjectIdByDevice(deviceId)); + alarm.setAlarmValue(alarmUpload.getAlarmValue()); + if(StrUtil.isNotEmpty(alarmUpload.getAlarmTime())){ + alarm.setAlarmTime(DateUtil.parseDateTime(alarmUpload.getAlarmTime())); + }else { + alarm.setAlarmTime(new Date()); + } + + alarm.setAlarmType(alarmUpload.getAlarmType()); + alarm.setAlarmContent(alarmUpload.getAlarmContent()); + if(StrUtil.isNotEmpty(alarmUpload.getAlarmImage())){ + String imgBase64 = "data:image/jpeg;base64," + alarmUpload.getAlarmImage(); + String imageUrl = fileService.saveFile(imgBase64); + alarm.setAlarmImage(imageUrl); + } + alarm.setAlarmStatus(ALARM_STATUS_ON); + + DataTreeLocation treeLocation = dataSupportService.getTreeLocation(deviceId); + if(ObjectUtil.isNotEmpty(treeLocation)){ + alarm.setAlarmLng(treeLocation.getGdLng()); + alarm.setAlarmLat(treeLocation.getGdLat()); + } + + //自动消警 + AlarmTypeEnum alarmTypeEnum = AlarmTypeEnum.getByAlarmType(alarm.getAlarmType()); + if(ObjectUtil.isNotEmpty(alarmTypeEnum) && alarmTypeEnum.isAutoCancel()){ + this.baseMapper.cancelAlarm(deviceId,alarm.getAlarmType()); + } + return this.save(alarm); + } + + @Override + public Page listPage(Page page, QueryWrapper queryWrapper) { + page = this.baseMapper.listPage(page, queryWrapper); + for (BusAlarm alarm : page.getRecords()) { + alarm.setAlarmTypeName(dictService.getDictNameByCode("alarmType",alarm.getAlarmType())); + alarm.setAlarmStatusName(dictService.getDictNameByCode("alarmStatus",alarm.getAlarmStatus())); + if(StrUtil.isNotEmpty(alarm.getProjectState())){ + alarm.setProjectStateName(dictService.getDictNameByCode("projectStatus",alarm.getProjectState())); + } + } + return page; + } + + @Override + public List alarmCount(Long projectId, String alarmStatus) { + List list = this.baseMapper.alarmCount(projectId, alarmStatus); + list = list.stream().filter(i->StrUtil.isNotEmpty(i.getAlarmType())).collect(Collectors.toList()); + for (AlarmTypeCountDTO countDTO : list) { + countDTO.setAlarmTypeName(dictService.getDictNameByCode("alarmType",countDTO.getAlarmType())); + } + return list; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java new file mode 100644 index 0000000..a43f7c1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.casic.missiles.modular.system.mapper.BusEventImageMapper; +import com.casic.missiles.modular.system.service.IBusEventImageService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 事件图片表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +public class BusEventImageServiceImpl extends ServiceImpl implements IBusEventImageService { + + @Override + public boolean saveBusEventImages(Long eventId, List imageList) { + imageList.forEach(i->i.setEventId(eventId)); + return this.saveBatch(imageList); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java new file mode 100644 index 0000000..21e511c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java @@ -0,0 +1,39 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.mapper.BusEventMapper; +import com.casic.missiles.modular.system.service.IBusEventImageService; +import com.casic.missiles.modular.system.service.IBusEventService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; + +/** + *

+ * 事件表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class BusEventServiceImpl extends ServiceImpl implements IBusEventService { + + private final IBusEventImageService busEventImageService; + + + @Override + @Transactional + public boolean saveBusEvent(BusEvent busEvent) { + busEvent.setCreateTime(new Date()); + boolean res = this.save(busEvent); + if(res){ + res = busEventImageService.saveBusEventImages(busEvent.getId(),busEvent.getImageList()); + } + return res; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java new file mode 100644 index 0000000..2bdb63d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java @@ -0,0 +1,102 @@ +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.core.conditions.update.UpdateWrapper; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.casic.missiles.modular.system.mapper.DeviceExtMapper; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 设备扩展信息表(安全树) 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Service +public class DeviceExtServiceImpl extends ServiceImpl implements IDeviceExtService { + + + @Override + public boolean saveDeviceExt(DeviceDetailDTO deviceDetailDTO) { + DeviceExt ext = new DeviceExt(); + ext.setDeviceId(deviceDetailDTO.getId()); + ext.setCameraCode(deviceDetailDTO.getCameraCode()); + ext.setCameraIp(deviceDetailDTO.getCameraIp()); + ext.setCameraPort(deviceDetailDTO.getCameraPort()); + ext.setGasCode(deviceDetailDTO.getGasCode()); + ext.setGasIp(deviceDetailDTO.getGasIp()); + ext.setGasPort(deviceDetailDTO.getGasPort()); + ext.setHatLiningCode(deviceDetailDTO.getHatLiningCode()); + return this.save(ext); + } + + @Override + public boolean updateDeviceExt(DeviceDetailDTO deviceDetailDTO) { + DeviceExt ext = this.selectByDeviceId(deviceDetailDTO.getId()); + ext.setCameraCode(deviceDetailDTO.getCameraCode()); + ext.setCameraIp(deviceDetailDTO.getCameraIp()); + ext.setCameraPort(deviceDetailDTO.getCameraPort()); + ext.setGasCode(deviceDetailDTO.getGasCode()); + ext.setGasIp(deviceDetailDTO.getGasIp()); + ext.setGasPort(deviceDetailDTO.getGasPort()); + ext.setHatLiningCode(deviceDetailDTO.getHatLiningCode()); + return this.updateById(ext); + } + + @Override + public boolean removeByDeviceIds(List deviceIds) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("DEVICE_ID",deviceIds); + return this.remove(queryWrapper); + } + + @Override + public boolean setGasThreshold(String gasIp, String gasPort, String threshold) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.set("GAS_THRESHOLD",threshold); + updateWrapper.eq("GAS_IP",gasIp); + updateWrapper.eq("GAS_PORT",gasPort); + return this.update(updateWrapper); + } + + @Override + public String getGasThreshold(String gasIp, String gasPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("GAS_IP",gasIp); + queryWrapper.eq("GAS_PORT",gasPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getGasThreshold() : null; + } + + private DeviceExt selectByDeviceId(Long deviceId){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVICE_ID",deviceId); + return this.getOne(queryWrapper); + } + + @Override + public Long selectByGasIpPort(String gasIp, String gasPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("GAS_IP",gasIp); + queryWrapper.eq("GAS_PORT",gasPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getDeviceId() : null; + } + + @Override + public Long selectByCameraIpPort(String cameraIp, String cameraPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("CAMERA_IP",cameraIp); + queryWrapper.eq("CAMERA_PORT",cameraPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getDeviceId() : null; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java new file mode 100644 index 0000000..9df79ef --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.mapper.DeviceMapper; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.modular.system.consts.DeviceConst.*; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class DeviceServiceImpl extends ServiceImpl implements IDeviceService { + + private final AbstractDictService dictService; + private final IDeviceExtService deviceExtService; + + private final IProjectDeviceService projectDeviceService; + + @Transactional + @Override + public boolean saveDevice(DeviceDetailDTO deviceDetailDTO) { + deviceDetailDTO.setCreateTime(new Date()); + boolean deviceRes = this.save(deviceDetailDTO); + if(deviceRes && DEVICE_TYPE_TREE.equals(deviceDetailDTO.getDeviceType())){ + deviceRes = deviceExtService.saveDeviceExt(deviceDetailDTO); + } + return deviceRes; + } + + @Transactional + @Override + public boolean updateDevice(DeviceDetailDTO deviceDetailDTO) { + boolean deviceRes = this.updateById(deviceDetailDTO); + if(deviceRes && DEVICE_TYPE_TREE.equals(deviceDetailDTO.getDeviceType())){ + deviceRes = deviceExtService.updateDeviceExt(deviceDetailDTO); + } + return deviceRes; + } + + @Transactional + @Override + public boolean deleteDevices(List deviceIds) { + return this.removeByIds(deviceIds) & deviceExtService.removeByDeviceIds(deviceIds); + } + + @Override + public Page listPage(Page page, QueryWrapper queryWrapper,String status,Long projectId) { + String ID_COLUMN_NAME = "br_device.ID"; + List useDevices = this.selectProjectDevice(null); + List projectDevices; + if(ObjectUtil.isNotEmpty(projectId)){ + projectDevices = this.selectProjectDevice(projectId); + } else { + projectDevices = null; + } + + // 查询使用中的设备(如果传了 projectId,查询 使用中&&此现场) + if(DEVICE_STATUS_USE.equals(status)){ + if(CollUtil.isEmpty(useDevices)){ + return page; + } + if(ObjectUtil.isNotEmpty(projectId) && CollUtil.isEmpty(projectDevices)){ + return page; + } + queryWrapper.in(ID_COLUMN_NAME,useDevices); + if(CollUtil.isNotEmpty(projectDevices)){ + queryWrapper.in(ID_COLUMN_NAME,projectDevices); + } + + } + + // 查询未使用的设备(如果传了 projectId,查询 未使用||此现场) + if(DEVICE_STATUS_NORMAL.equals(status)) { + if (CollUtil.isNotEmpty(useDevices)) { + if (CollUtil.isEmpty(projectDevices)) { + queryWrapper.notIn(ID_COLUMN_NAME, useDevices); + } else { + queryWrapper.and(i -> i.notIn(ID_COLUMN_NAME, useDevices).or().in(ID_COLUMN_NAME, projectDevices)); + } + } + } + + page = this.baseMapper.listDetailPage(page, queryWrapper); + for (DeviceDetailDTO record : page.getRecords()) { + record.setDeviceTypeName(dictService.getDictNameByCode("deviceType",record.getDeviceType())); + record.setIsPowerSupplyName(dictService.getDictNameByCode("isPowerSupply",record.getIsPowerSupply())); + record.setRegisterTime(DateUtil.formatDate(record.getCreateTime())); + record.setStatus(useDevices.contains(record.getId()) ? DEVICE_STATUS_USE : DEVICE_STATUS_NORMAL); + record.setStatusName(dictService.getDictNameByCode("deviceStatus",record.getStatus())); + } + return page; + } + + @Override + public List selectProjectDevice(Long projectId) { + return this.baseMapper.selectProjectDevice(projectId); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceSupportServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceSupportServiceImpl.java new file mode 100644 index 0000000..ffd01ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceSupportServiceImpl.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.mapper.DeviceMapper; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceSupportService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; + +import static com.casic.missiles.modular.system.consts.DeviceConst.DEVICE_TYPE_HAT; + +@Service +@RequiredArgsConstructor +public class DeviceSupportServiceImpl implements IDeviceSupportService { + + private final IDeviceExtService deviceExtService; + + private final DeviceMapper deviceMapper; + + @Override + public Long selectByGasIpPort(String gasIp, String gasPort) { + return deviceExtService.selectByGasIpPort(gasIp, gasPort); + } + + @Override + public List selectHelmetList() { + return deviceMapper.selectHelmetList(DEVICE_TYPE_HAT); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectDeviceServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectDeviceServiceImpl.java new file mode 100644 index 0000000..965f55c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectDeviceServiceImpl.java @@ -0,0 +1,96 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.DataGas; +import com.casic.missiles.modular.system.entity.DataTreeLocation; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.mapper.ProjectDeviceMapper; +import com.casic.missiles.modular.system.service.IDataSupportService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.utils.LngLatUtil; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.stream.Collectors; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class ProjectDeviceServiceImpl extends ServiceImpl implements IProjectDeviceService { + + private final IDataSupportService dataSupportService; + + @Override + public boolean saveProjectDeviceList(Long projectId, List projectDeviceList) { + projectDeviceList.forEach(i->i.setProjectId(projectId)); + return this.saveBatch(projectDeviceList); + } + + @Transactional + @Override + public boolean updateProjectDeviceList(Long projectId, List projectDeviceList) { + return this.deleteByProjectId(projectId) && this.saveProjectDeviceList(projectId, projectDeviceList); + } + + @Override + public boolean deleteByProjectId(Long projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("PROJECT_ID",projectId); + return this.remove(queryWrapper); + } + + @Override + public boolean deleteByProjectIds(List projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("PROJECT_ID",projectId); + return this.remove(queryWrapper); + } + + @Override + public List selectDetailByProjectId(Long projectId) { + return this.baseMapper.selectDetailByProjectId(projectId); + } + + @Override + public Long selectProjectIdByDevice(Long deviceId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVICE_ID",deviceId); + queryWrapper.exists("(select Id FROM br_work_site_info p where p.ID = br_project_device.PROJECT_ID AND p.PROJECT_STATE != '3')"); + ProjectDevice projectDevice = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(projectDevice) ? projectDevice.getProjectId() : null; + } + + @Override + public List selectDeviceLocationList(Long projectId) { + List list = this.baseMapper.selectDeviceLocationList(projectId); + for (DeviceLocationDTO locationDTO : list) { + DataGas dataGas = dataSupportService.getGasData(locationDTO.getDeviceId()); + DataTreeLocation location = dataSupportService.getTreeLocation(locationDTO.getDeviceId(),true); + if(ObjectUtil.isNotEmpty(dataGas)){ + locationDTO.setGasValue(dataGas.getGasValue()); + locationDTO.setTime(DateUtil.formatDateTime(dataGas.getTs())); + } + if(ObjectUtil.isNotEmpty(location)){ + locationDTO.setLng(location.getGdLng()); + locationDTO.setLat(location.getGdLat()); + locationDTO.setLocation(location.getLocation()); + } + } + list = list.stream().filter(i-> StrUtil.isAllNotEmpty(i.getLng(),i.getLat())).collect(Collectors.toList()); + return LngLatUtil.sort(list); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectWorkerServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectWorkerServiceImpl.java new file mode 100644 index 0000000..c3ec86c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectWorkerServiceImpl.java @@ -0,0 +1,101 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.DataHelmetHealth; +import com.casic.missiles.modular.system.entity.DataHelmetLocation; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.mapper.ProjectWorkerMapper; +import com.casic.missiles.modular.system.service.IHelmetSupportService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.system.consts.ProjectConst.WORKER_TYPE_NORMAL; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class ProjectWorkerServiceImpl extends ServiceImpl implements IProjectWorkerService { + + private final AbstractDeptService deptService; + private final IHelmetSupportService helmetSupportService; + + @Override + public boolean saveProjectWorkerList(Long projectId, List projectWorkerList) { + projectWorkerList.forEach(i->i.setProjectId(projectId)); + return this.saveBatch(projectWorkerList); + } + + @Transactional + @Override + public boolean updateProjectWorkerList(Long projectId, List projectWorkerList) { + return this.deleteByProjectId(projectId) && this.saveProjectWorkerList(projectId, projectWorkerList) ; + } + + @Override + public boolean deleteByProjectId(Long projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("PROJECT_ID",projectId); + return this.remove(queryWrapper); + } + + @Override + public boolean deleteByProjectIds(List projectIds) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("PROJECT_ID",projectIds); + return this.remove(queryWrapper); + } + + + @Override + public List selectDetailByProjectId(Long projectId,String workerType) { + List projectWorkerList = this.baseMapper.selectDetailByProjectId(projectId,workerType); + for (ProjectWorker projectWorker : projectWorkerList) { + if(ObjectUtil.isNotEmpty(projectWorker.getWorkerDeptId())){ + projectWorker.setWorkerDeptName(deptService.getDeptName(projectWorker.getWorkerDeptId())); + } + } + return projectWorkerList; + } + + @Override + public List selectWorkerLocationDTO(Long projectId) { + List projectWorkerList = this.baseMapper.selectWorkerLocationList(projectId,WORKER_TYPE_NORMAL); + for (WorkerLocationDTO workerLocationDTO : projectWorkerList) { + if(ObjectUtil.isNotEmpty(workerLocationDTO.getHatId())){ + DataHelmetLocation location = helmetSupportService.getHelmetLocation(workerLocationDTO.getHatId(),true); + if(ObjectUtil.isNotEmpty(location)){ + workerLocationDTO.setLng(location.getGdLng()); + workerLocationDTO.setLat(location.getGdLat()); + workerLocationDTO.setLocation(location.getLocation()); + } + + DataHelmetHealth health = helmetSupportService.getHelmetHealth(workerLocationDTO.getHatId()); + if(ObjectUtil.isNotEmpty(health)){ + workerLocationDTO.setBloodOxygen(health.getBloodOxygen()); + workerLocationDTO.setHeartRate(health.getHeartRate()); + workerLocationDTO.setTime(DateUtil.formatDateTime(health.getTs())); + } + } + } + projectWorkerList = projectWorkerList.stream().filter(i-> StrUtil.isAllNotEmpty(i.getLng(),i.getLat())).collect(Collectors.toList()); + return projectWorkerList; + } +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java new file mode 100644 index 0000000..73d7799 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.dto; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "AlarmUpload",description = "报警上传") +@Data +public class AlarmUpload { + + @ApiModelProperty(value = "摄像头ip") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + @ApiModelProperty(value = "安全树甲烷设备ip") + private String gasIp; + @ApiModelProperty(value = "安全树甲烷设备端口") + private String gasPort; + @ApiModelProperty(value = "报警值") + private String alarmValue; + @ApiModelProperty(value = "报警时间") + private String alarmTime; + @ApiModelProperty(value = "报警类型") + private String alarmType; + @ApiModelProperty(value = "报警图片") + private String alarmImage; + @ApiModelProperty(value = "报警内容") + private String alarmContent; + + @Override + public String toString() { + return "AlarmUpload{" + + "cameraIp='" + cameraIp + '\'' + + ", cameraPort='" + cameraPort + '\'' + + ", gasIp='" + gasIp + '\'' + + ", gasPort='" + gasPort + '\'' + + ", alarmValue='" + alarmValue + '\'' + + ", alarmTime='" + alarmTime + '\'' + + ", alarmType='" + alarmType + '\'' + + ", alarmImage='" + (StrUtil.isNotEmpty(alarmImage) ? alarmImage.substring(0,50) : "null") + '\'' + + ", alarmContent='" + alarmContent + '\'' + + '}'; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java new file mode 100644 index 0000000..ea518d9 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.modular.system.entity.Device; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("DeviceDetailDTO") +@Data +public class DeviceDetailDTO extends Device { + + @ApiModelProperty(value = "摄像头编号") + private String cameraCode; + + @ApiModelProperty(value = "摄像头IP") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + + @ApiModelProperty(value = "激甲编号") + private String gasCode; + + @ApiModelProperty(value = "激甲IP") + private String gasIp; + + @ApiModelProperty(value = "激甲端口") + private String gasPort; + + @ApiModelProperty(value = "智能帽衬编号") + private String hatLiningCode; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java new file mode 100644 index 0000000..29378ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("WorkSiteDetailDTO") +public class WorkSiteDetailDTO extends WorkSiteInfo { + + @ApiModelProperty(value = "安全树列表",dataType = "ProjectDevice") + private List deviceList; + + @ApiModelProperty(value = "人员列表",dataType = "ProjectWorker") + private List workerList; + + + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java new file mode 100644 index 0000000..6fd7b24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java @@ -0,0 +1,68 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "WorkerLocationDTO",description = "人员位置列表(首页)") +@Data +public class WorkerLocationDTO { + + @ApiModelProperty("人员ID") + private Long workerId; + + @ApiModelProperty("人员姓名") + private String workerName; + + @ApiModelProperty("安全帽编号") + private String hatCode; + + @ApiModelProperty("安全帽ID") + private Long hatId; + + @ApiModelProperty("背心编号") + private String vastCode; + + @ApiModelProperty("手环编号") + private String braceletCode; + + @ApiModelProperty("位置") + private String location; + + @ApiModelProperty("时间") + private String time; + + @ApiModelProperty("经度") + private String lng; + + @ApiModelProperty("纬度") + private String lat; + + @ApiModelProperty("心率") + private String heartRate; + + @ApiModelProperty("血氧") + private String bloodOxygen; + + @ApiModelProperty("一氧化碳") + private String co; + + @ApiModelProperty("甲烷") + private String gas; + + @ApiModelProperty("硫化氢") + private String h2s; + + @ApiModelProperty("氧气") + private String o2; + + @ApiModelProperty("信号") + private String signal; + + @ApiModelProperty("电量") + private String cell; + + @ApiModelProperty("是否报警") + private boolean alarmFlag; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java new file mode 100644 index 0000000..efb4a23 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java @@ -0,0 +1,159 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 报警记录表 + *

+ * + * @author zyj + * @since 2023-05-16 + */ +@Data +@ApiModel("Alarm") +@TableName("br_bus_alarm") +public class BusAlarm implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @ApiModelProperty(value = "设备ID") + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 报警类型 + */ + @ApiModelProperty(value = "报警类型") + @TableField("ALARM_TYPE") + private String alarmType; + + /** + * 报警状态 + */ + @ApiModelProperty(value = "报警状态") + @TableField("ALARM_STATUS") + private String alarmStatus; + + /** + * 报警值 + */ + @ApiModelProperty(value = "报警值") + @TableField("ALARM_VALUE") + private String alarmValue; + + /** + * 报警图片 + */ + @ApiModelProperty(value = "报警图片") + @TableField("ALARM_IMAGE") + private String alarmImage; + + /** + * 报警内容 + */ + @ApiModelProperty(value = "报警内容") + @TableField("ALARM_CONTENT") + private String alarmContent; + + /** + * 报警时间 + */ + @ApiModelProperty(value = "报警时间") + @TableField("ALARM_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date alarmTime; + + /** + * 消警时间 + */ + @ApiModelProperty(value = "消警时间") + @TableField("CANCEL_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + /** + * 报警位置经度 + */ + @ApiModelProperty(value = "报警位置经度") + @TableField("ALARM_LNG") + private String alarmLng; + + /** + * 报警位置纬度 + */ + @ApiModelProperty(value = "报警位置纬度") + @TableField("ALARM_LAT") + private String alarmLat; + + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmStatusName; + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmTypeName; + @ApiModelProperty("作业名称") + @TableField(exist = false) + private String workTitle; + @ApiModelProperty("所属道路") + @TableField(exist = false) + private String workRoad; + @ApiModelProperty("作业状态") + @TableField(exist = false) + private String projectState; + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + @ApiModelProperty("负责人姓名") + @TableField(exist = false) + private String workPersonName; + @ApiModelProperty("负责人联系方式") + @TableField(exist = false) + private String workPersonPhoneNumber; + + + @Override + public String toString() { + return "BusAlarm{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + ", alarmType=" + alarmType + + ", alarmValue=" + alarmValue + + ", alarmStatus=" + alarmStatus + + ", alarmImage=" + alarmImage + + ", alarmContent=" + alarmContent + + ", alarmTime=" + alarmTime + + ", cancelTime=" + cancelTime + + ", alarmLng=" + alarmLng + + ", alarmLat=" + alarmLat + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java new file mode 100644 index 0000000..a0b7543 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + *

+ * 事件表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event") +@Data +@ApiModel("BusEvent") +public class BusEvent implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("事件ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件标题 + */ + @ApiModelProperty("事件名称") + @TableField("EVENT_TITLE") + private String eventTitle; + + /** + * 上报人员 + */ + @ApiModelProperty("上报人员") + @TableField("UPLOAD_NAME") + private String uploadName; + + /** + * 联系方式 + */ + @ApiModelProperty("联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 事件描述 + */ + @ApiModelProperty("事件描述") + @TableField("EVENT_DESCRIPTION") + private String eventDescription; + + @ApiModelProperty("经度") + @TableField("LNG") + private String lng; + + @ApiModelProperty("纬度") + @TableField("LAT") + private String lat; + + /** + * 事件上传时间 + */ + @ApiModelProperty("事件上传时间") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty("事件照片") + @TableField(exist = false) + private List imageList; + + + + @Override + public String toString() { + return "BusEvent{" + + "id=" + id + + ", eventTitle=" + eventTitle + + ", uploadName=" + uploadName + + ", phoneNumber=" + phoneNumber + + ", eventDescription=" + eventDescription + + ", lng=" + lng + + ", lat=" + lat + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java new file mode 100644 index 0000000..1e75245 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 事件图片表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event_image") +@Data +@ApiModel("BusEventImage") +public class BusEventImage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件ID + */ + @TableField("EVENT_ID") + private Long eventId; + + /** + * 报警图片 + */ + @TableField("IMAGE") + @ApiModelProperty("图片url") + private String image; + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java new file mode 100644 index 0000000..df89c70 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.core.base.json.DateDeserializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Device") +@TableName("br_device") +@Data +public class Device implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "设备ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty(value = "设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + /** + * 设备类型 + */ + @ApiModelProperty(value = "设备类型") + @TableField("DEVICE_TYPE") + private String deviceType; + + /** + * 设备批次 + */ + @ApiModelProperty(value = "设备批次") + @TableField("DEVICE_BATCH") + private String deviceBatch; + + /** + * 厂家 + */ + @ApiModelProperty(value = "厂家") + @TableField("MANUFACTURER") + private String manufacturer; + + /** + * 是否供电 + */ + @ApiModelProperty(value = "是否供电") + @TableField("IS_POWER_SUPPLY") + private String isPowerSupply; + + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间",dataType = "Date") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty(value = "设备类型名称") + @TableField(exist = false) + private String deviceTypeName; + + @ApiModelProperty(value = "是否供电名称") + @TableField(exist = false) + private String isPowerSupplyName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", deviceCode=" + deviceCode + + ", deviceType=" + deviceType + + ", deviceBatch=" + deviceBatch + + ", manufacturer=" + manufacturer + + ", isPowerSupply=" + isPowerSupply + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java new file mode 100644 index 0000000..5ee7015 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java @@ -0,0 +1,99 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 设备扩展信息表(安全树) + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Data +@TableName("br_device_ext") +public class DeviceExt implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 摄像头编号 + */ + @TableField("CAMERA_CODE") + private String cameraCode; + + /** + * 摄像头IP + */ + @TableField("CAMERA_IP") + private String cameraIp; + + /** + * 摄像头端口 + */ + @TableField("CAMERA_PORT") + private String cameraPort; + + /** + * 激甲编号 + */ + @TableField("GAS_CODE") + private String gasCode; + + /** + * 激甲IP + */ + @TableField("GAS_IP") + private String gasIp; + + /** + * 激甲端口 + */ + @TableField("GAS_PORT") + private String gasPort; + + /** + * 甲烷报警阈值 + */ + @TableField("GAS_THRESHOLD") + private String gasThreshold; + + @TableField(value = "HAT_LINING_CODE") + private String hatLiningCode; + + + @Override + public String toString() { + return "DeviceExt{" + + "id=" + id + + ", deviceId=" + deviceId + + ", cameraCode=" + cameraCode + + ", cameraIp=" + cameraIp + + ", cameraPort=" + cameraPort + + ", gasCode=" + gasCode + + ", gasIp=" + gasIp + + ", gasPort=" + gasPort + + ", gasThreshold=" + gasThreshold + + ", hatLiningCode=" + hatLiningCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java new file mode 100644 index 0000000..c4f3472 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java @@ -0,0 +1,62 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Data +@ApiModel("ProjectDevice") +@TableName("br_project_device") +public class ProjectDevice implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + @ApiModelProperty("设备ID(新增编辑时传)") + private Long deviceId; + + /** + * 设备编号 + */ + @TableField(exist = false) + @ApiModelProperty("设备编号(详情中展示,新增编辑不用传)") + private String deviceCode; + + @Override + public String toString() { + return "ProjectDevice{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java new file mode 100644 index 0000000..10b23c4 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java @@ -0,0 +1,104 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("ProjectWorker") +@TableName("br_project_worker") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ProjectWorker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 人员ID + */ + @ApiModelProperty("人员ID") + @TableField("WORKER_ID") + private Long workerId; + + /** + * 安全帽编号 + */ + @ApiModelProperty("安全帽编号") + @TableField("HAT_CODE") + private String hatCode; + + /** + * 背心编号 + */ + @ApiModelProperty("背心编号") + @TableField("VAST_CODE") + private String vastCode; + + /** + * 手环编号 + */ + @ApiModelProperty("手环编号") + @TableField("BRACELET_CODE") + private String braceletCode; + + @ApiModelProperty("人员姓名(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerName; + + @ApiModelProperty("人员部门ID(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptId; + + @ApiModelProperty("人员部门名称(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptName; + + @ApiModelProperty("人员联系方式(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerPhoneNumber; + + public ProjectWorker(Long projectId, Long workerId) { + this.projectId = projectId; + this.workerId = workerId; + } + + @Override + public String toString() { + return "ProjectWorker{" + + "id=" + id + + ", projectId=" + projectId + + ", workerId=" + workerId + + ", hatCode=" + hatCode + + ", vastCode=" + vastCode + + ", braceletCode=" + braceletCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java new file mode 100644 index 0000000..fa6f41d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 作业现场表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("WorkSiteInfo") +@TableName("br_work_site_info") +@Data +public class WorkSiteInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("作业现场ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业名称 + */ + @ApiModelProperty("作业名称") + @TableField("WORK_TITLE") + private String workTitle; + + /** + * 责任人 + */ + @ApiModelProperty("责任人(人员ID)") + @TableField("WORK_PERSON") + private Long workPerson; + + /** + * 作业描述 + */ + @ApiModelProperty("作业描述") + @TableField("WORK_SITE_DESC") + private String workSiteDesc; + + /** + * 作业状态 + */ + @ApiModelProperty("作业状态") + @TableField("PROJECT_STATE") + private String projectState; + + /** + * 所属道路 + */ + @ApiModelProperty("所属道路") + @TableField("WORK_ROAD") + private String workRoad; + + @TableField("IMAGE_URL") + private String imageUrl; + + @TableField("CREATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + @TableField("UPDATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("FINISH_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + @ApiModelProperty("负责人姓名(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonName; + + @ApiModelProperty("负责人联系方式(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonPhoneNumber; + + @ApiModelProperty("负责人所属部门ID(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private Long workPersonDeptId; + + @ApiModelProperty("负责人所属部门名称(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonDeptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + + @Override + public String toString() { + return "WorkSiteInfo{" + + "id=" + id + + ", workTitle=" + workTitle + + ", workPerson=" + workPerson + + ", workSiteDesc=" + workSiteDesc + + ", projectState=" + projectState + + ", imageUrl=" + imageUrl + + ", updateTime=" + updateTime + + ", workRoad=" + workRoad + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java new file mode 100644 index 0000000..28a4daa --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java @@ -0,0 +1,147 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Worker") +@TableName("br_worker") +@Data +public class Worker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "人员ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 姓名 + */ + @ApiModelProperty(value = "姓名") + @TableField("WORKER_NAME") + private String workerName; + + /** + * 性别 + */ + @ApiModelProperty(value = "性别") + @TableField("GENDER") + private String gender; + + /** + * 所属部门 + */ + @ApiModelProperty(value = "所属部门(人员管理)") + @TableField("DEPT_ID") + private Long deptId; + + /** + * 所属单位 + */ + @ApiModelProperty(value = "所属单位(入场申请中使用)") + @TableField("OWNER_SHIP") + private String ownerShip; + + /** + * 联系方式 + */ + @ApiModelProperty(value = "联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 证件号 + */ + @ApiModelProperty(value = "证件号") + @TableField("ID_CARD_NUMBER") + private String idCardNumber; + + /** + * 入场原因 + */ + @ApiModelProperty(value = "入场原因(入场申请中使用)") + @TableField("ENTER_REASON") + private String enterReason; + + /** + * 入场人脸照片 + */ + @ApiModelProperty(value = "人脸照片(照片路径)") + @TableField("WORKER_AVATAR") + private String workerAvatar; + + /** + * 申请入场时间 + */ + @ApiModelProperty(value = "注册时间/申请入场时间") + @TableField("CREATE_TIME") + private Date createTime; + + /** + * 人员类型 + */ + @ApiModelProperty(value = "人员类型(区分人员管理和入场申请)") + @TableField("WORKER_TYPE") + private String workerType; + + @ApiModelProperty(value = "性别名称") + @TableField(exist = false) + private String genderName; + + @ApiModelProperty(value = "部门名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @ApiModelProperty(value = "是否注册(0未注册;1已注册)",allowableValues = "0,1") + @TableField(exist = false) + private String isRegister; + + @Override + public String toString() { + return "Worker{" + + "id=" + id + + ", workerName=" + workerName + + ", gender=" + gender + + ", deptId=" + deptId + + ", ownerShip=" + ownerShip + + ", phoneNumber=" + phoneNumber + + ", idCardNumber=" + idCardNumber + + ", enterReason=" + enterReason + + ", workerAvatar=" + workerAvatar + + ", createTime=" + createTime + + ", workerType=" + workerType + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java new file mode 100644 index 0000000..9801742 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警记录表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusAlarmMapper extends BaseMapper { + + Page listPage(Page page,@Param("ew") QueryWrapper queryWrapper); + + void cancelAlarm(@Param("deviceId")Long deviceId,@Param("alarmType") String alarmType); + + List alarmCount(@Param("projectId")Long projectId, @Param("alarmStatus")String alarmStatus); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java new file mode 100644 index 0000000..9590b7d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件图片表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventImageMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java new file mode 100644 index 0000000..3c85edf --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java new file mode 100644 index 0000000..4ca9212 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 设备扩展信息表(安全树) Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface DeviceExtMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java new file mode 100644 index 0000000..444c0c5 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Mapper +public interface DeviceMapper extends BaseMapper { + + Page listDetailPage(Page page,@Param("ew") QueryWrapper ew); + + List selectProjectDevice(@Param("projectId") Long projectId); + + List selectHelmetList(@Param("deviceType")String deviceType); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java new file mode 100644 index 0000000..1d0c14e --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectDeviceMapper extends BaseMapper { + List selectDetailByProjectId(@Param("projectId") Long projectId); + + List selectDeviceLocationList(@Param("projectId") Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java new file mode 100644 index 0000000..58583d1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectWorkerMapper extends BaseMapper { + + List selectDetailByProjectId(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + + List selectWorkerLocationList(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java new file mode 100644 index 0000000..a4934d2 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +/** + *

+ * 作业现场表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkSiteInfoMapper extends BaseMapper { + + Page selectListPage(Page page,@Param("ew") QueryWrapper ew); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java new file mode 100644 index 0000000..258fb12 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkerMapper extends BaseMapper { + + + Page selectListPage(Page page, @Param("ew") QueryWrapper ew); + + List selectWorkerAvatars(@Param("projectId")Long projectId); + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml new file mode 100644 index 0000000..595088a --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml @@ -0,0 +1,58 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml new file mode 100644 index 0000000..fbc3db3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml new file mode 100644 index 0000000..627d573 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml new file mode 100644 index 0000000..5321d1c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml new file mode 100644 index 0000000..94262e1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml @@ -0,0 +1,97 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml new file mode 100644 index 0000000..c6d1c24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml @@ -0,0 +1,29 @@ + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml new file mode 100644 index 0000000..8d2de10 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml new file mode 100644 index 0000000..8f01326 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml @@ -0,0 +1,26 @@ + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml new file mode 100644 index 0000000..3e28b39 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml @@ -0,0 +1,56 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java new file mode 100644 index 0000000..f63c19c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 报警记录表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusAlarmService extends IService { + + boolean alarmUpload(AlarmUpload alarmUpload); + + Page listPage(Page page,QueryWrapper queryWrapper); + + List alarmCount(Long projectId,String alarmStatus); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java new file mode 100644 index 0000000..b1187ed --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 事件图片表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusEventImageService extends IService { + + boolean saveBusEventImages(Long eventId, List imageList); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java new file mode 100644 index 0000000..85c48d0 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 事件表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusEventService extends IService { + + boolean saveBusEvent(BusEvent busEvent); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java new file mode 100644 index 0000000..6fc5361 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 设备扩展信息表(安全树) 服务类 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface IDeviceExtService extends IService { + + boolean saveDeviceExt(DeviceDetailDTO deviceDetailDTO); + + boolean updateDeviceExt(DeviceDetailDTO deviceDetailDTO); + + boolean removeByDeviceIds(List deviceIds); + + boolean setGasThreshold(String gasIp,String gasPort,String threshold); + + String getGasThreshold(String gasIp,String gasPort); + + Long selectByGasIpPort(String gasIp,String gasPort); + + Long selectByCameraIpPort(String cameraIp,String cameraPort); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java new file mode 100644 index 0000000..9e62756 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java @@ -0,0 +1,32 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IDeviceService extends IService { + + boolean saveDevice(DeviceDetailDTO deviceDetailDTO); + + boolean updateDevice(DeviceDetailDTO deviceDetailDTO); + + boolean deleteDevices(List deviceIds); + + Page listPage(Page page, QueryWrapper queryWrapper, String status,Long projectId); + + List selectProjectDevice(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java new file mode 100644 index 0000000..8599411 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IProjectDeviceService extends IService { + + boolean saveProjectDeviceList(Long projectId, List projectDeviceList); + + boolean updateProjectDeviceList(Long projectId, List projectDeviceList); + + boolean deleteByProjectId(Long projectId); + + boolean deleteByProjectIds(List projectIds); + + List selectDetailByProjectId(Long projectId); + + Long selectProjectIdByDevice(Long deviceId); + + List selectDeviceLocationList(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java new file mode 100644 index 0000000..e921bc3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IProjectWorkerService extends IService { + + boolean saveProjectWorkerList(Long projectId, List projectWorkerList); + + boolean updateProjectWorkerList(Long projectId, List projectWorkerList); + + boolean deleteByProjectId(Long projectId); + + boolean deleteByProjectIds(List projectIds); + + List selectDetailByProjectId(Long projectId,String workerType); + + List selectWorkerLocationDTO(Long projectId); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java new file mode 100644 index 0000000..58a8590 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; +/** + *

+ * 作业现场表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IWorkSiteInfoService extends IService { + + boolean addWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO); + + boolean updateWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO); + + boolean deleteProjects(List projectIds); + + WorkSiteDetailDTO getWorkSiteDetail(Long projectId); + + Page selectListPage(Page page, QueryWrapper queryWrapper); + + boolean start(Long projectId); + + boolean finish(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java new file mode 100644 index 0000000..6c6ee98 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.extension.service.IService; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IWorkerService extends IService { + + boolean addWorker(Worker worker,Long projectId); + + Page selectListPage(Page page,QueryWrapper ew); + + Worker selectWorkerDetail(Long workerId); + + List faceRegister(String cameraIp,String cameraPort); + + List projectTempWorker(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java new file mode 100644 index 0000000..b44de1d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.consts.AlarmTypeEnum; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.entity.DataTreeLocation; +import com.casic.missiles.modular.system.mapper.BusAlarmMapper; +import com.casic.missiles.modular.system.service.*; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +/** + *

+ * 报警记录表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +@Slf4j +public class BusAlarmServiceImpl extends ServiceImpl implements IBusAlarmService { + + private final IDeviceExtService deviceExtService; + private final IDeviceService deviceService; + private final IProjectDeviceService projectDeviceService; + + private final ICasicFileService fileService; + + private final AbstractDictService dictService; + private final IDataSupportService dataSupportService; + + @Override + @Transactional + public boolean alarmUpload(AlarmUpload alarmUpload) { + log.info("alarm upload ==> {}",alarmUpload.toString()); + Long deviceId = null; + if(StrUtil.isAllNotBlank(alarmUpload.getGasIp(),alarmUpload.getGasPort())){ + deviceId = deviceExtService.selectByGasIpPort(alarmUpload.getGasIp(),alarmUpload.getGasPort()); + } + if(ObjectUtil.isEmpty(deviceId) && StrUtil.isAllNotBlank(alarmUpload.getCameraIp(),alarmUpload.getCameraPort())){ + deviceId = deviceExtService.selectByCameraIpPort(alarmUpload.getCameraIp(),alarmUpload.getCameraPort()); + } + + if(ObjectUtil.isEmpty(deviceId)){ + return false; + } + + BusAlarm alarm = new BusAlarm(); + alarm.setDeviceId(deviceId); + alarm.setProjectId(projectDeviceService.selectProjectIdByDevice(deviceId)); + alarm.setAlarmValue(alarmUpload.getAlarmValue()); + if(StrUtil.isNotEmpty(alarmUpload.getAlarmTime())){ + alarm.setAlarmTime(DateUtil.parseDateTime(alarmUpload.getAlarmTime())); + }else { + alarm.setAlarmTime(new Date()); + } + + alarm.setAlarmType(alarmUpload.getAlarmType()); + alarm.setAlarmContent(alarmUpload.getAlarmContent()); + if(StrUtil.isNotEmpty(alarmUpload.getAlarmImage())){ + String imgBase64 = "data:image/jpeg;base64," + alarmUpload.getAlarmImage(); + String imageUrl = fileService.saveFile(imgBase64); + alarm.setAlarmImage(imageUrl); + } + alarm.setAlarmStatus(ALARM_STATUS_ON); + + DataTreeLocation treeLocation = dataSupportService.getTreeLocation(deviceId); + if(ObjectUtil.isNotEmpty(treeLocation)){ + alarm.setAlarmLng(treeLocation.getGdLng()); + alarm.setAlarmLat(treeLocation.getGdLat()); + } + + //自动消警 + AlarmTypeEnum alarmTypeEnum = AlarmTypeEnum.getByAlarmType(alarm.getAlarmType()); + if(ObjectUtil.isNotEmpty(alarmTypeEnum) && alarmTypeEnum.isAutoCancel()){ + this.baseMapper.cancelAlarm(deviceId,alarm.getAlarmType()); + } + return this.save(alarm); + } + + @Override + public Page listPage(Page page, QueryWrapper queryWrapper) { + page = this.baseMapper.listPage(page, queryWrapper); + for (BusAlarm alarm : page.getRecords()) { + alarm.setAlarmTypeName(dictService.getDictNameByCode("alarmType",alarm.getAlarmType())); + alarm.setAlarmStatusName(dictService.getDictNameByCode("alarmStatus",alarm.getAlarmStatus())); + if(StrUtil.isNotEmpty(alarm.getProjectState())){ + alarm.setProjectStateName(dictService.getDictNameByCode("projectStatus",alarm.getProjectState())); + } + } + return page; + } + + @Override + public List alarmCount(Long projectId, String alarmStatus) { + List list = this.baseMapper.alarmCount(projectId, alarmStatus); + list = list.stream().filter(i->StrUtil.isNotEmpty(i.getAlarmType())).collect(Collectors.toList()); + for (AlarmTypeCountDTO countDTO : list) { + countDTO.setAlarmTypeName(dictService.getDictNameByCode("alarmType",countDTO.getAlarmType())); + } + return list; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java new file mode 100644 index 0000000..a43f7c1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.casic.missiles.modular.system.mapper.BusEventImageMapper; +import com.casic.missiles.modular.system.service.IBusEventImageService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 事件图片表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +public class BusEventImageServiceImpl extends ServiceImpl implements IBusEventImageService { + + @Override + public boolean saveBusEventImages(Long eventId, List imageList) { + imageList.forEach(i->i.setEventId(eventId)); + return this.saveBatch(imageList); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java new file mode 100644 index 0000000..21e511c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java @@ -0,0 +1,39 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.mapper.BusEventMapper; +import com.casic.missiles.modular.system.service.IBusEventImageService; +import com.casic.missiles.modular.system.service.IBusEventService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; + +/** + *

+ * 事件表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class BusEventServiceImpl extends ServiceImpl implements IBusEventService { + + private final IBusEventImageService busEventImageService; + + + @Override + @Transactional + public boolean saveBusEvent(BusEvent busEvent) { + busEvent.setCreateTime(new Date()); + boolean res = this.save(busEvent); + if(res){ + res = busEventImageService.saveBusEventImages(busEvent.getId(),busEvent.getImageList()); + } + return res; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java new file mode 100644 index 0000000..2bdb63d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java @@ -0,0 +1,102 @@ +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.core.conditions.update.UpdateWrapper; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.casic.missiles.modular.system.mapper.DeviceExtMapper; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 设备扩展信息表(安全树) 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Service +public class DeviceExtServiceImpl extends ServiceImpl implements IDeviceExtService { + + + @Override + public boolean saveDeviceExt(DeviceDetailDTO deviceDetailDTO) { + DeviceExt ext = new DeviceExt(); + ext.setDeviceId(deviceDetailDTO.getId()); + ext.setCameraCode(deviceDetailDTO.getCameraCode()); + ext.setCameraIp(deviceDetailDTO.getCameraIp()); + ext.setCameraPort(deviceDetailDTO.getCameraPort()); + ext.setGasCode(deviceDetailDTO.getGasCode()); + ext.setGasIp(deviceDetailDTO.getGasIp()); + ext.setGasPort(deviceDetailDTO.getGasPort()); + ext.setHatLiningCode(deviceDetailDTO.getHatLiningCode()); + return this.save(ext); + } + + @Override + public boolean updateDeviceExt(DeviceDetailDTO deviceDetailDTO) { + DeviceExt ext = this.selectByDeviceId(deviceDetailDTO.getId()); + ext.setCameraCode(deviceDetailDTO.getCameraCode()); + ext.setCameraIp(deviceDetailDTO.getCameraIp()); + ext.setCameraPort(deviceDetailDTO.getCameraPort()); + ext.setGasCode(deviceDetailDTO.getGasCode()); + ext.setGasIp(deviceDetailDTO.getGasIp()); + ext.setGasPort(deviceDetailDTO.getGasPort()); + ext.setHatLiningCode(deviceDetailDTO.getHatLiningCode()); + return this.updateById(ext); + } + + @Override + public boolean removeByDeviceIds(List deviceIds) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("DEVICE_ID",deviceIds); + return this.remove(queryWrapper); + } + + @Override + public boolean setGasThreshold(String gasIp, String gasPort, String threshold) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.set("GAS_THRESHOLD",threshold); + updateWrapper.eq("GAS_IP",gasIp); + updateWrapper.eq("GAS_PORT",gasPort); + return this.update(updateWrapper); + } + + @Override + public String getGasThreshold(String gasIp, String gasPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("GAS_IP",gasIp); + queryWrapper.eq("GAS_PORT",gasPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getGasThreshold() : null; + } + + private DeviceExt selectByDeviceId(Long deviceId){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVICE_ID",deviceId); + return this.getOne(queryWrapper); + } + + @Override + public Long selectByGasIpPort(String gasIp, String gasPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("GAS_IP",gasIp); + queryWrapper.eq("GAS_PORT",gasPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getDeviceId() : null; + } + + @Override + public Long selectByCameraIpPort(String cameraIp, String cameraPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("CAMERA_IP",cameraIp); + queryWrapper.eq("CAMERA_PORT",cameraPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getDeviceId() : null; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java new file mode 100644 index 0000000..9df79ef --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.mapper.DeviceMapper; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.modular.system.consts.DeviceConst.*; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class DeviceServiceImpl extends ServiceImpl implements IDeviceService { + + private final AbstractDictService dictService; + private final IDeviceExtService deviceExtService; + + private final IProjectDeviceService projectDeviceService; + + @Transactional + @Override + public boolean saveDevice(DeviceDetailDTO deviceDetailDTO) { + deviceDetailDTO.setCreateTime(new Date()); + boolean deviceRes = this.save(deviceDetailDTO); + if(deviceRes && DEVICE_TYPE_TREE.equals(deviceDetailDTO.getDeviceType())){ + deviceRes = deviceExtService.saveDeviceExt(deviceDetailDTO); + } + return deviceRes; + } + + @Transactional + @Override + public boolean updateDevice(DeviceDetailDTO deviceDetailDTO) { + boolean deviceRes = this.updateById(deviceDetailDTO); + if(deviceRes && DEVICE_TYPE_TREE.equals(deviceDetailDTO.getDeviceType())){ + deviceRes = deviceExtService.updateDeviceExt(deviceDetailDTO); + } + return deviceRes; + } + + @Transactional + @Override + public boolean deleteDevices(List deviceIds) { + return this.removeByIds(deviceIds) & deviceExtService.removeByDeviceIds(deviceIds); + } + + @Override + public Page listPage(Page page, QueryWrapper queryWrapper,String status,Long projectId) { + String ID_COLUMN_NAME = "br_device.ID"; + List useDevices = this.selectProjectDevice(null); + List projectDevices; + if(ObjectUtil.isNotEmpty(projectId)){ + projectDevices = this.selectProjectDevice(projectId); + } else { + projectDevices = null; + } + + // 查询使用中的设备(如果传了 projectId,查询 使用中&&此现场) + if(DEVICE_STATUS_USE.equals(status)){ + if(CollUtil.isEmpty(useDevices)){ + return page; + } + if(ObjectUtil.isNotEmpty(projectId) && CollUtil.isEmpty(projectDevices)){ + return page; + } + queryWrapper.in(ID_COLUMN_NAME,useDevices); + if(CollUtil.isNotEmpty(projectDevices)){ + queryWrapper.in(ID_COLUMN_NAME,projectDevices); + } + + } + + // 查询未使用的设备(如果传了 projectId,查询 未使用||此现场) + if(DEVICE_STATUS_NORMAL.equals(status)) { + if (CollUtil.isNotEmpty(useDevices)) { + if (CollUtil.isEmpty(projectDevices)) { + queryWrapper.notIn(ID_COLUMN_NAME, useDevices); + } else { + queryWrapper.and(i -> i.notIn(ID_COLUMN_NAME, useDevices).or().in(ID_COLUMN_NAME, projectDevices)); + } + } + } + + page = this.baseMapper.listDetailPage(page, queryWrapper); + for (DeviceDetailDTO record : page.getRecords()) { + record.setDeviceTypeName(dictService.getDictNameByCode("deviceType",record.getDeviceType())); + record.setIsPowerSupplyName(dictService.getDictNameByCode("isPowerSupply",record.getIsPowerSupply())); + record.setRegisterTime(DateUtil.formatDate(record.getCreateTime())); + record.setStatus(useDevices.contains(record.getId()) ? DEVICE_STATUS_USE : DEVICE_STATUS_NORMAL); + record.setStatusName(dictService.getDictNameByCode("deviceStatus",record.getStatus())); + } + return page; + } + + @Override + public List selectProjectDevice(Long projectId) { + return this.baseMapper.selectProjectDevice(projectId); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceSupportServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceSupportServiceImpl.java new file mode 100644 index 0000000..ffd01ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceSupportServiceImpl.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.mapper.DeviceMapper; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceSupportService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; + +import static com.casic.missiles.modular.system.consts.DeviceConst.DEVICE_TYPE_HAT; + +@Service +@RequiredArgsConstructor +public class DeviceSupportServiceImpl implements IDeviceSupportService { + + private final IDeviceExtService deviceExtService; + + private final DeviceMapper deviceMapper; + + @Override + public Long selectByGasIpPort(String gasIp, String gasPort) { + return deviceExtService.selectByGasIpPort(gasIp, gasPort); + } + + @Override + public List selectHelmetList() { + return deviceMapper.selectHelmetList(DEVICE_TYPE_HAT); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectDeviceServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectDeviceServiceImpl.java new file mode 100644 index 0000000..965f55c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectDeviceServiceImpl.java @@ -0,0 +1,96 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.DataGas; +import com.casic.missiles.modular.system.entity.DataTreeLocation; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.mapper.ProjectDeviceMapper; +import com.casic.missiles.modular.system.service.IDataSupportService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.utils.LngLatUtil; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.stream.Collectors; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class ProjectDeviceServiceImpl extends ServiceImpl implements IProjectDeviceService { + + private final IDataSupportService dataSupportService; + + @Override + public boolean saveProjectDeviceList(Long projectId, List projectDeviceList) { + projectDeviceList.forEach(i->i.setProjectId(projectId)); + return this.saveBatch(projectDeviceList); + } + + @Transactional + @Override + public boolean updateProjectDeviceList(Long projectId, List projectDeviceList) { + return this.deleteByProjectId(projectId) && this.saveProjectDeviceList(projectId, projectDeviceList); + } + + @Override + public boolean deleteByProjectId(Long projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("PROJECT_ID",projectId); + return this.remove(queryWrapper); + } + + @Override + public boolean deleteByProjectIds(List projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("PROJECT_ID",projectId); + return this.remove(queryWrapper); + } + + @Override + public List selectDetailByProjectId(Long projectId) { + return this.baseMapper.selectDetailByProjectId(projectId); + } + + @Override + public Long selectProjectIdByDevice(Long deviceId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVICE_ID",deviceId); + queryWrapper.exists("(select Id FROM br_work_site_info p where p.ID = br_project_device.PROJECT_ID AND p.PROJECT_STATE != '3')"); + ProjectDevice projectDevice = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(projectDevice) ? projectDevice.getProjectId() : null; + } + + @Override + public List selectDeviceLocationList(Long projectId) { + List list = this.baseMapper.selectDeviceLocationList(projectId); + for (DeviceLocationDTO locationDTO : list) { + DataGas dataGas = dataSupportService.getGasData(locationDTO.getDeviceId()); + DataTreeLocation location = dataSupportService.getTreeLocation(locationDTO.getDeviceId(),true); + if(ObjectUtil.isNotEmpty(dataGas)){ + locationDTO.setGasValue(dataGas.getGasValue()); + locationDTO.setTime(DateUtil.formatDateTime(dataGas.getTs())); + } + if(ObjectUtil.isNotEmpty(location)){ + locationDTO.setLng(location.getGdLng()); + locationDTO.setLat(location.getGdLat()); + locationDTO.setLocation(location.getLocation()); + } + } + list = list.stream().filter(i-> StrUtil.isAllNotEmpty(i.getLng(),i.getLat())).collect(Collectors.toList()); + return LngLatUtil.sort(list); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectWorkerServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectWorkerServiceImpl.java new file mode 100644 index 0000000..c3ec86c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectWorkerServiceImpl.java @@ -0,0 +1,101 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.DataHelmetHealth; +import com.casic.missiles.modular.system.entity.DataHelmetLocation; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.mapper.ProjectWorkerMapper; +import com.casic.missiles.modular.system.service.IHelmetSupportService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.system.consts.ProjectConst.WORKER_TYPE_NORMAL; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class ProjectWorkerServiceImpl extends ServiceImpl implements IProjectWorkerService { + + private final AbstractDeptService deptService; + private final IHelmetSupportService helmetSupportService; + + @Override + public boolean saveProjectWorkerList(Long projectId, List projectWorkerList) { + projectWorkerList.forEach(i->i.setProjectId(projectId)); + return this.saveBatch(projectWorkerList); + } + + @Transactional + @Override + public boolean updateProjectWorkerList(Long projectId, List projectWorkerList) { + return this.deleteByProjectId(projectId) && this.saveProjectWorkerList(projectId, projectWorkerList) ; + } + + @Override + public boolean deleteByProjectId(Long projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("PROJECT_ID",projectId); + return this.remove(queryWrapper); + } + + @Override + public boolean deleteByProjectIds(List projectIds) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("PROJECT_ID",projectIds); + return this.remove(queryWrapper); + } + + + @Override + public List selectDetailByProjectId(Long projectId,String workerType) { + List projectWorkerList = this.baseMapper.selectDetailByProjectId(projectId,workerType); + for (ProjectWorker projectWorker : projectWorkerList) { + if(ObjectUtil.isNotEmpty(projectWorker.getWorkerDeptId())){ + projectWorker.setWorkerDeptName(deptService.getDeptName(projectWorker.getWorkerDeptId())); + } + } + return projectWorkerList; + } + + @Override + public List selectWorkerLocationDTO(Long projectId) { + List projectWorkerList = this.baseMapper.selectWorkerLocationList(projectId,WORKER_TYPE_NORMAL); + for (WorkerLocationDTO workerLocationDTO : projectWorkerList) { + if(ObjectUtil.isNotEmpty(workerLocationDTO.getHatId())){ + DataHelmetLocation location = helmetSupportService.getHelmetLocation(workerLocationDTO.getHatId(),true); + if(ObjectUtil.isNotEmpty(location)){ + workerLocationDTO.setLng(location.getGdLng()); + workerLocationDTO.setLat(location.getGdLat()); + workerLocationDTO.setLocation(location.getLocation()); + } + + DataHelmetHealth health = helmetSupportService.getHelmetHealth(workerLocationDTO.getHatId()); + if(ObjectUtil.isNotEmpty(health)){ + workerLocationDTO.setBloodOxygen(health.getBloodOxygen()); + workerLocationDTO.setHeartRate(health.getHeartRate()); + workerLocationDTO.setTime(DateUtil.formatDateTime(health.getTs())); + } + } + } + projectWorkerList = projectWorkerList.stream().filter(i-> StrUtil.isAllNotEmpty(i.getLng(),i.getLat())).collect(Collectors.toList()); + return projectWorkerList; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkSiteInfoServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkSiteInfoServiceImpl.java new file mode 100644 index 0000000..5068da2 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkSiteInfoServiceImpl.java @@ -0,0 +1,151 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.mapper.WorkSiteInfoMapper; +import com.casic.missiles.modular.system.service.*; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.system.consts.ProjectConst.*; + +/** + *

+ * 作业现场表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class WorkSiteInfoServiceImpl extends ServiceImpl implements IWorkSiteInfoService { + + private final IProjectWorkerService projectWorkerService; + private final IProjectDeviceService projectDeviceService; + + private final IWorkerService workerService; + private final IBraceletService braceletService; + + private final AbstractDeptService deptService; + private final AbstractDictService dictService; + @Override + @Transactional + public boolean addWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO) { + workSiteDetailDTO.setCreateTime(new Date()); + workSiteDetailDTO.setUpdateTime(new Date()); + workSiteDetailDTO.setProjectState(PROJECT_STATE_PREPARE); + boolean res = this.save(workSiteDetailDTO); + if(res){ + res = projectDeviceService.saveProjectDeviceList(workSiteDetailDTO.getId(), workSiteDetailDTO.getDeviceList()); + res = res & projectWorkerService.saveProjectWorkerList(workSiteDetailDTO.getId(), workSiteDetailDTO.getWorkerList()); + } + return res; + } + + @Override + @Transactional + public boolean updateWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO) { + workSiteDetailDTO.setUpdateTime(new Date()); + boolean res = this.updateById(workSiteDetailDTO); + if(res){ + res = projectDeviceService.updateProjectDeviceList(workSiteDetailDTO.getId(), workSiteDetailDTO.getDeviceList()); + res = res & projectWorkerService.updateProjectWorkerList(workSiteDetailDTO.getId(), workSiteDetailDTO.getWorkerList()); + } + return res; + } + + @Override + public boolean deleteProjects(List projectIds) { + if(CollUtil.isNotEmpty(projectIds)) { + projectDeviceService.deleteByProjectIds(projectIds); + projectWorkerService.deleteByProjectIds(projectIds); + return this.removeByIds(projectIds); + } + return true; + } + + @Override + public WorkSiteDetailDTO getWorkSiteDetail(Long projectId) { + WorkSiteInfo workSiteInfo = this.getById(projectId); + WorkSiteDetailDTO workSiteDetailDTO = new WorkSiteDetailDTO(); + BeanUtil.copyProperties(workSiteInfo,workSiteDetailDTO,true); + workSiteDetailDTO.setDeviceList(projectDeviceService.selectDetailByProjectId(projectId)); + workSiteDetailDTO.setWorkerList(projectWorkerService.selectDetailByProjectId(projectId,WORKER_TYPE_NORMAL)); + + Worker responseWorker = workerService.selectWorkerDetail(workSiteDetailDTO.getWorkPerson()); + if(ObjectUtil.isNotEmpty(responseWorker)){ + workSiteDetailDTO.setWorkPersonName(responseWorker.getWorkerName()); + workSiteDetailDTO.setWorkPersonPhoneNumber(responseWorker.getPhoneNumber()); + workSiteDetailDTO.setWorkPersonDeptId(responseWorker.getDeptId()); + workSiteDetailDTO.setWorkPersonDeptName(responseWorker.getDeptName()); + } + return workSiteDetailDTO; + } + + @Override + public Page selectListPage(Page page, QueryWrapper queryWrapper) { + page = this.baseMapper.selectListPage(page, queryWrapper); + for (WorkSiteInfo workSiteInfo : page.getRecords()) { + workSiteInfo.setProjectStateName(dictService.getDictNameByCode("projectState", workSiteInfo.getProjectState())); + if(ObjectUtil.isNotEmpty(workSiteInfo.getWorkPersonDeptId())){ + workSiteInfo.setWorkPersonDeptName(deptService.getDeptName(workSiteInfo.getWorkPersonDeptId())); + } + workSiteInfo.setRegisterTime(DateUtil.formatDate(workSiteInfo.getCreateTime())); + } + return page; + } + + @Override + public boolean start(Long projectId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",projectId); + updateWrapper.set("PROJECT_STATE",PROJECT_STATE_WORKING); + updateWrapper.set("START_TIME",new Date()); + boolean res = this.update(updateWrapper); + //braceletService.enableBracelet(selectProjectBracelets(projectId)); + return res; + } + + @Override + public boolean finish(Long projectId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",projectId); + updateWrapper.set("PROJECT_STATE",PROJECT_STATE_FINISH); + updateWrapper.set("FINISH_TIME",new Date()); + boolean res = this.update(updateWrapper); + //braceletService.disableBracelet(selectProjectBracelets(projectId)); + return res; + } + + private List selectProjectBracelets(Long projectId){ + List deviceCodes = new ArrayList<>(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("PROJECT_ID",projectId); + queryWrapper.isNotNull("BRACELET_CODE"); + queryWrapper.select("BRACELET_CODE"); + List res = projectWorkerService.listObjs(queryWrapper); + if(CollUtil.isNotEmpty(res)){ + deviceCodes = res.stream().map(Object::toString).distinct().collect(Collectors.toList()); + } + return deviceCodes; + } +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java new file mode 100644 index 0000000..73d7799 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.dto; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "AlarmUpload",description = "报警上传") +@Data +public class AlarmUpload { + + @ApiModelProperty(value = "摄像头ip") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + @ApiModelProperty(value = "安全树甲烷设备ip") + private String gasIp; + @ApiModelProperty(value = "安全树甲烷设备端口") + private String gasPort; + @ApiModelProperty(value = "报警值") + private String alarmValue; + @ApiModelProperty(value = "报警时间") + private String alarmTime; + @ApiModelProperty(value = "报警类型") + private String alarmType; + @ApiModelProperty(value = "报警图片") + private String alarmImage; + @ApiModelProperty(value = "报警内容") + private String alarmContent; + + @Override + public String toString() { + return "AlarmUpload{" + + "cameraIp='" + cameraIp + '\'' + + ", cameraPort='" + cameraPort + '\'' + + ", gasIp='" + gasIp + '\'' + + ", gasPort='" + gasPort + '\'' + + ", alarmValue='" + alarmValue + '\'' + + ", alarmTime='" + alarmTime + '\'' + + ", alarmType='" + alarmType + '\'' + + ", alarmImage='" + (StrUtil.isNotEmpty(alarmImage) ? alarmImage.substring(0,50) : "null") + '\'' + + ", alarmContent='" + alarmContent + '\'' + + '}'; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java new file mode 100644 index 0000000..ea518d9 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.modular.system.entity.Device; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("DeviceDetailDTO") +@Data +public class DeviceDetailDTO extends Device { + + @ApiModelProperty(value = "摄像头编号") + private String cameraCode; + + @ApiModelProperty(value = "摄像头IP") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + + @ApiModelProperty(value = "激甲编号") + private String gasCode; + + @ApiModelProperty(value = "激甲IP") + private String gasIp; + + @ApiModelProperty(value = "激甲端口") + private String gasPort; + + @ApiModelProperty(value = "智能帽衬编号") + private String hatLiningCode; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java new file mode 100644 index 0000000..29378ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("WorkSiteDetailDTO") +public class WorkSiteDetailDTO extends WorkSiteInfo { + + @ApiModelProperty(value = "安全树列表",dataType = "ProjectDevice") + private List deviceList; + + @ApiModelProperty(value = "人员列表",dataType = "ProjectWorker") + private List workerList; + + + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java new file mode 100644 index 0000000..6fd7b24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java @@ -0,0 +1,68 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "WorkerLocationDTO",description = "人员位置列表(首页)") +@Data +public class WorkerLocationDTO { + + @ApiModelProperty("人员ID") + private Long workerId; + + @ApiModelProperty("人员姓名") + private String workerName; + + @ApiModelProperty("安全帽编号") + private String hatCode; + + @ApiModelProperty("安全帽ID") + private Long hatId; + + @ApiModelProperty("背心编号") + private String vastCode; + + @ApiModelProperty("手环编号") + private String braceletCode; + + @ApiModelProperty("位置") + private String location; + + @ApiModelProperty("时间") + private String time; + + @ApiModelProperty("经度") + private String lng; + + @ApiModelProperty("纬度") + private String lat; + + @ApiModelProperty("心率") + private String heartRate; + + @ApiModelProperty("血氧") + private String bloodOxygen; + + @ApiModelProperty("一氧化碳") + private String co; + + @ApiModelProperty("甲烷") + private String gas; + + @ApiModelProperty("硫化氢") + private String h2s; + + @ApiModelProperty("氧气") + private String o2; + + @ApiModelProperty("信号") + private String signal; + + @ApiModelProperty("电量") + private String cell; + + @ApiModelProperty("是否报警") + private boolean alarmFlag; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java new file mode 100644 index 0000000..efb4a23 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java @@ -0,0 +1,159 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 报警记录表 + *

+ * + * @author zyj + * @since 2023-05-16 + */ +@Data +@ApiModel("Alarm") +@TableName("br_bus_alarm") +public class BusAlarm implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @ApiModelProperty(value = "设备ID") + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 报警类型 + */ + @ApiModelProperty(value = "报警类型") + @TableField("ALARM_TYPE") + private String alarmType; + + /** + * 报警状态 + */ + @ApiModelProperty(value = "报警状态") + @TableField("ALARM_STATUS") + private String alarmStatus; + + /** + * 报警值 + */ + @ApiModelProperty(value = "报警值") + @TableField("ALARM_VALUE") + private String alarmValue; + + /** + * 报警图片 + */ + @ApiModelProperty(value = "报警图片") + @TableField("ALARM_IMAGE") + private String alarmImage; + + /** + * 报警内容 + */ + @ApiModelProperty(value = "报警内容") + @TableField("ALARM_CONTENT") + private String alarmContent; + + /** + * 报警时间 + */ + @ApiModelProperty(value = "报警时间") + @TableField("ALARM_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date alarmTime; + + /** + * 消警时间 + */ + @ApiModelProperty(value = "消警时间") + @TableField("CANCEL_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + /** + * 报警位置经度 + */ + @ApiModelProperty(value = "报警位置经度") + @TableField("ALARM_LNG") + private String alarmLng; + + /** + * 报警位置纬度 + */ + @ApiModelProperty(value = "报警位置纬度") + @TableField("ALARM_LAT") + private String alarmLat; + + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmStatusName; + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmTypeName; + @ApiModelProperty("作业名称") + @TableField(exist = false) + private String workTitle; + @ApiModelProperty("所属道路") + @TableField(exist = false) + private String workRoad; + @ApiModelProperty("作业状态") + @TableField(exist = false) + private String projectState; + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + @ApiModelProperty("负责人姓名") + @TableField(exist = false) + private String workPersonName; + @ApiModelProperty("负责人联系方式") + @TableField(exist = false) + private String workPersonPhoneNumber; + + + @Override + public String toString() { + return "BusAlarm{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + ", alarmType=" + alarmType + + ", alarmValue=" + alarmValue + + ", alarmStatus=" + alarmStatus + + ", alarmImage=" + alarmImage + + ", alarmContent=" + alarmContent + + ", alarmTime=" + alarmTime + + ", cancelTime=" + cancelTime + + ", alarmLng=" + alarmLng + + ", alarmLat=" + alarmLat + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java new file mode 100644 index 0000000..a0b7543 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + *

+ * 事件表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event") +@Data +@ApiModel("BusEvent") +public class BusEvent implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("事件ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件标题 + */ + @ApiModelProperty("事件名称") + @TableField("EVENT_TITLE") + private String eventTitle; + + /** + * 上报人员 + */ + @ApiModelProperty("上报人员") + @TableField("UPLOAD_NAME") + private String uploadName; + + /** + * 联系方式 + */ + @ApiModelProperty("联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 事件描述 + */ + @ApiModelProperty("事件描述") + @TableField("EVENT_DESCRIPTION") + private String eventDescription; + + @ApiModelProperty("经度") + @TableField("LNG") + private String lng; + + @ApiModelProperty("纬度") + @TableField("LAT") + private String lat; + + /** + * 事件上传时间 + */ + @ApiModelProperty("事件上传时间") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty("事件照片") + @TableField(exist = false) + private List imageList; + + + + @Override + public String toString() { + return "BusEvent{" + + "id=" + id + + ", eventTitle=" + eventTitle + + ", uploadName=" + uploadName + + ", phoneNumber=" + phoneNumber + + ", eventDescription=" + eventDescription + + ", lng=" + lng + + ", lat=" + lat + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java new file mode 100644 index 0000000..1e75245 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 事件图片表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event_image") +@Data +@ApiModel("BusEventImage") +public class BusEventImage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件ID + */ + @TableField("EVENT_ID") + private Long eventId; + + /** + * 报警图片 + */ + @TableField("IMAGE") + @ApiModelProperty("图片url") + private String image; + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java new file mode 100644 index 0000000..df89c70 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.core.base.json.DateDeserializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Device") +@TableName("br_device") +@Data +public class Device implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "设备ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty(value = "设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + /** + * 设备类型 + */ + @ApiModelProperty(value = "设备类型") + @TableField("DEVICE_TYPE") + private String deviceType; + + /** + * 设备批次 + */ + @ApiModelProperty(value = "设备批次") + @TableField("DEVICE_BATCH") + private String deviceBatch; + + /** + * 厂家 + */ + @ApiModelProperty(value = "厂家") + @TableField("MANUFACTURER") + private String manufacturer; + + /** + * 是否供电 + */ + @ApiModelProperty(value = "是否供电") + @TableField("IS_POWER_SUPPLY") + private String isPowerSupply; + + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间",dataType = "Date") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty(value = "设备类型名称") + @TableField(exist = false) + private String deviceTypeName; + + @ApiModelProperty(value = "是否供电名称") + @TableField(exist = false) + private String isPowerSupplyName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", deviceCode=" + deviceCode + + ", deviceType=" + deviceType + + ", deviceBatch=" + deviceBatch + + ", manufacturer=" + manufacturer + + ", isPowerSupply=" + isPowerSupply + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java new file mode 100644 index 0000000..5ee7015 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java @@ -0,0 +1,99 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 设备扩展信息表(安全树) + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Data +@TableName("br_device_ext") +public class DeviceExt implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 摄像头编号 + */ + @TableField("CAMERA_CODE") + private String cameraCode; + + /** + * 摄像头IP + */ + @TableField("CAMERA_IP") + private String cameraIp; + + /** + * 摄像头端口 + */ + @TableField("CAMERA_PORT") + private String cameraPort; + + /** + * 激甲编号 + */ + @TableField("GAS_CODE") + private String gasCode; + + /** + * 激甲IP + */ + @TableField("GAS_IP") + private String gasIp; + + /** + * 激甲端口 + */ + @TableField("GAS_PORT") + private String gasPort; + + /** + * 甲烷报警阈值 + */ + @TableField("GAS_THRESHOLD") + private String gasThreshold; + + @TableField(value = "HAT_LINING_CODE") + private String hatLiningCode; + + + @Override + public String toString() { + return "DeviceExt{" + + "id=" + id + + ", deviceId=" + deviceId + + ", cameraCode=" + cameraCode + + ", cameraIp=" + cameraIp + + ", cameraPort=" + cameraPort + + ", gasCode=" + gasCode + + ", gasIp=" + gasIp + + ", gasPort=" + gasPort + + ", gasThreshold=" + gasThreshold + + ", hatLiningCode=" + hatLiningCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java new file mode 100644 index 0000000..c4f3472 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java @@ -0,0 +1,62 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Data +@ApiModel("ProjectDevice") +@TableName("br_project_device") +public class ProjectDevice implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + @ApiModelProperty("设备ID(新增编辑时传)") + private Long deviceId; + + /** + * 设备编号 + */ + @TableField(exist = false) + @ApiModelProperty("设备编号(详情中展示,新增编辑不用传)") + private String deviceCode; + + @Override + public String toString() { + return "ProjectDevice{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java new file mode 100644 index 0000000..10b23c4 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java @@ -0,0 +1,104 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("ProjectWorker") +@TableName("br_project_worker") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ProjectWorker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 人员ID + */ + @ApiModelProperty("人员ID") + @TableField("WORKER_ID") + private Long workerId; + + /** + * 安全帽编号 + */ + @ApiModelProperty("安全帽编号") + @TableField("HAT_CODE") + private String hatCode; + + /** + * 背心编号 + */ + @ApiModelProperty("背心编号") + @TableField("VAST_CODE") + private String vastCode; + + /** + * 手环编号 + */ + @ApiModelProperty("手环编号") + @TableField("BRACELET_CODE") + private String braceletCode; + + @ApiModelProperty("人员姓名(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerName; + + @ApiModelProperty("人员部门ID(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptId; + + @ApiModelProperty("人员部门名称(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptName; + + @ApiModelProperty("人员联系方式(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerPhoneNumber; + + public ProjectWorker(Long projectId, Long workerId) { + this.projectId = projectId; + this.workerId = workerId; + } + + @Override + public String toString() { + return "ProjectWorker{" + + "id=" + id + + ", projectId=" + projectId + + ", workerId=" + workerId + + ", hatCode=" + hatCode + + ", vastCode=" + vastCode + + ", braceletCode=" + braceletCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java new file mode 100644 index 0000000..fa6f41d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 作业现场表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("WorkSiteInfo") +@TableName("br_work_site_info") +@Data +public class WorkSiteInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("作业现场ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业名称 + */ + @ApiModelProperty("作业名称") + @TableField("WORK_TITLE") + private String workTitle; + + /** + * 责任人 + */ + @ApiModelProperty("责任人(人员ID)") + @TableField("WORK_PERSON") + private Long workPerson; + + /** + * 作业描述 + */ + @ApiModelProperty("作业描述") + @TableField("WORK_SITE_DESC") + private String workSiteDesc; + + /** + * 作业状态 + */ + @ApiModelProperty("作业状态") + @TableField("PROJECT_STATE") + private String projectState; + + /** + * 所属道路 + */ + @ApiModelProperty("所属道路") + @TableField("WORK_ROAD") + private String workRoad; + + @TableField("IMAGE_URL") + private String imageUrl; + + @TableField("CREATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + @TableField("UPDATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("FINISH_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + @ApiModelProperty("负责人姓名(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonName; + + @ApiModelProperty("负责人联系方式(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonPhoneNumber; + + @ApiModelProperty("负责人所属部门ID(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private Long workPersonDeptId; + + @ApiModelProperty("负责人所属部门名称(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonDeptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + + @Override + public String toString() { + return "WorkSiteInfo{" + + "id=" + id + + ", workTitle=" + workTitle + + ", workPerson=" + workPerson + + ", workSiteDesc=" + workSiteDesc + + ", projectState=" + projectState + + ", imageUrl=" + imageUrl + + ", updateTime=" + updateTime + + ", workRoad=" + workRoad + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java new file mode 100644 index 0000000..28a4daa --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java @@ -0,0 +1,147 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Worker") +@TableName("br_worker") +@Data +public class Worker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "人员ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 姓名 + */ + @ApiModelProperty(value = "姓名") + @TableField("WORKER_NAME") + private String workerName; + + /** + * 性别 + */ + @ApiModelProperty(value = "性别") + @TableField("GENDER") + private String gender; + + /** + * 所属部门 + */ + @ApiModelProperty(value = "所属部门(人员管理)") + @TableField("DEPT_ID") + private Long deptId; + + /** + * 所属单位 + */ + @ApiModelProperty(value = "所属单位(入场申请中使用)") + @TableField("OWNER_SHIP") + private String ownerShip; + + /** + * 联系方式 + */ + @ApiModelProperty(value = "联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 证件号 + */ + @ApiModelProperty(value = "证件号") + @TableField("ID_CARD_NUMBER") + private String idCardNumber; + + /** + * 入场原因 + */ + @ApiModelProperty(value = "入场原因(入场申请中使用)") + @TableField("ENTER_REASON") + private String enterReason; + + /** + * 入场人脸照片 + */ + @ApiModelProperty(value = "人脸照片(照片路径)") + @TableField("WORKER_AVATAR") + private String workerAvatar; + + /** + * 申请入场时间 + */ + @ApiModelProperty(value = "注册时间/申请入场时间") + @TableField("CREATE_TIME") + private Date createTime; + + /** + * 人员类型 + */ + @ApiModelProperty(value = "人员类型(区分人员管理和入场申请)") + @TableField("WORKER_TYPE") + private String workerType; + + @ApiModelProperty(value = "性别名称") + @TableField(exist = false) + private String genderName; + + @ApiModelProperty(value = "部门名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @ApiModelProperty(value = "是否注册(0未注册;1已注册)",allowableValues = "0,1") + @TableField(exist = false) + private String isRegister; + + @Override + public String toString() { + return "Worker{" + + "id=" + id + + ", workerName=" + workerName + + ", gender=" + gender + + ", deptId=" + deptId + + ", ownerShip=" + ownerShip + + ", phoneNumber=" + phoneNumber + + ", idCardNumber=" + idCardNumber + + ", enterReason=" + enterReason + + ", workerAvatar=" + workerAvatar + + ", createTime=" + createTime + + ", workerType=" + workerType + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java new file mode 100644 index 0000000..9801742 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警记录表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusAlarmMapper extends BaseMapper { + + Page listPage(Page page,@Param("ew") QueryWrapper queryWrapper); + + void cancelAlarm(@Param("deviceId")Long deviceId,@Param("alarmType") String alarmType); + + List alarmCount(@Param("projectId")Long projectId, @Param("alarmStatus")String alarmStatus); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java new file mode 100644 index 0000000..9590b7d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件图片表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventImageMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java new file mode 100644 index 0000000..3c85edf --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java new file mode 100644 index 0000000..4ca9212 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 设备扩展信息表(安全树) Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface DeviceExtMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java new file mode 100644 index 0000000..444c0c5 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Mapper +public interface DeviceMapper extends BaseMapper { + + Page listDetailPage(Page page,@Param("ew") QueryWrapper ew); + + List selectProjectDevice(@Param("projectId") Long projectId); + + List selectHelmetList(@Param("deviceType")String deviceType); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java new file mode 100644 index 0000000..1d0c14e --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectDeviceMapper extends BaseMapper { + List selectDetailByProjectId(@Param("projectId") Long projectId); + + List selectDeviceLocationList(@Param("projectId") Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java new file mode 100644 index 0000000..58583d1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectWorkerMapper extends BaseMapper { + + List selectDetailByProjectId(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + + List selectWorkerLocationList(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java new file mode 100644 index 0000000..a4934d2 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +/** + *

+ * 作业现场表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkSiteInfoMapper extends BaseMapper { + + Page selectListPage(Page page,@Param("ew") QueryWrapper ew); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java new file mode 100644 index 0000000..258fb12 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkerMapper extends BaseMapper { + + + Page selectListPage(Page page, @Param("ew") QueryWrapper ew); + + List selectWorkerAvatars(@Param("projectId")Long projectId); + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml new file mode 100644 index 0000000..595088a --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml @@ -0,0 +1,58 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml new file mode 100644 index 0000000..fbc3db3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml new file mode 100644 index 0000000..627d573 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml new file mode 100644 index 0000000..5321d1c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml new file mode 100644 index 0000000..94262e1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml @@ -0,0 +1,97 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml new file mode 100644 index 0000000..c6d1c24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml @@ -0,0 +1,29 @@ + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml new file mode 100644 index 0000000..8d2de10 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml new file mode 100644 index 0000000..8f01326 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml @@ -0,0 +1,26 @@ + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml new file mode 100644 index 0000000..3e28b39 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml @@ -0,0 +1,56 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java new file mode 100644 index 0000000..f63c19c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 报警记录表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusAlarmService extends IService { + + boolean alarmUpload(AlarmUpload alarmUpload); + + Page listPage(Page page,QueryWrapper queryWrapper); + + List alarmCount(Long projectId,String alarmStatus); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java new file mode 100644 index 0000000..b1187ed --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 事件图片表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusEventImageService extends IService { + + boolean saveBusEventImages(Long eventId, List imageList); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java new file mode 100644 index 0000000..85c48d0 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 事件表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusEventService extends IService { + + boolean saveBusEvent(BusEvent busEvent); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java new file mode 100644 index 0000000..6fc5361 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 设备扩展信息表(安全树) 服务类 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface IDeviceExtService extends IService { + + boolean saveDeviceExt(DeviceDetailDTO deviceDetailDTO); + + boolean updateDeviceExt(DeviceDetailDTO deviceDetailDTO); + + boolean removeByDeviceIds(List deviceIds); + + boolean setGasThreshold(String gasIp,String gasPort,String threshold); + + String getGasThreshold(String gasIp,String gasPort); + + Long selectByGasIpPort(String gasIp,String gasPort); + + Long selectByCameraIpPort(String cameraIp,String cameraPort); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java new file mode 100644 index 0000000..9e62756 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java @@ -0,0 +1,32 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IDeviceService extends IService { + + boolean saveDevice(DeviceDetailDTO deviceDetailDTO); + + boolean updateDevice(DeviceDetailDTO deviceDetailDTO); + + boolean deleteDevices(List deviceIds); + + Page listPage(Page page, QueryWrapper queryWrapper, String status,Long projectId); + + List selectProjectDevice(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java new file mode 100644 index 0000000..8599411 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IProjectDeviceService extends IService { + + boolean saveProjectDeviceList(Long projectId, List projectDeviceList); + + boolean updateProjectDeviceList(Long projectId, List projectDeviceList); + + boolean deleteByProjectId(Long projectId); + + boolean deleteByProjectIds(List projectIds); + + List selectDetailByProjectId(Long projectId); + + Long selectProjectIdByDevice(Long deviceId); + + List selectDeviceLocationList(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java new file mode 100644 index 0000000..e921bc3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IProjectWorkerService extends IService { + + boolean saveProjectWorkerList(Long projectId, List projectWorkerList); + + boolean updateProjectWorkerList(Long projectId, List projectWorkerList); + + boolean deleteByProjectId(Long projectId); + + boolean deleteByProjectIds(List projectIds); + + List selectDetailByProjectId(Long projectId,String workerType); + + List selectWorkerLocationDTO(Long projectId); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java new file mode 100644 index 0000000..58a8590 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; +/** + *

+ * 作业现场表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IWorkSiteInfoService extends IService { + + boolean addWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO); + + boolean updateWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO); + + boolean deleteProjects(List projectIds); + + WorkSiteDetailDTO getWorkSiteDetail(Long projectId); + + Page selectListPage(Page page, QueryWrapper queryWrapper); + + boolean start(Long projectId); + + boolean finish(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java new file mode 100644 index 0000000..6c6ee98 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.extension.service.IService; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IWorkerService extends IService { + + boolean addWorker(Worker worker,Long projectId); + + Page selectListPage(Page page,QueryWrapper ew); + + Worker selectWorkerDetail(Long workerId); + + List faceRegister(String cameraIp,String cameraPort); + + List projectTempWorker(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java new file mode 100644 index 0000000..b44de1d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.consts.AlarmTypeEnum; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.entity.DataTreeLocation; +import com.casic.missiles.modular.system.mapper.BusAlarmMapper; +import com.casic.missiles.modular.system.service.*; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +/** + *

+ * 报警记录表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +@Slf4j +public class BusAlarmServiceImpl extends ServiceImpl implements IBusAlarmService { + + private final IDeviceExtService deviceExtService; + private final IDeviceService deviceService; + private final IProjectDeviceService projectDeviceService; + + private final ICasicFileService fileService; + + private final AbstractDictService dictService; + private final IDataSupportService dataSupportService; + + @Override + @Transactional + public boolean alarmUpload(AlarmUpload alarmUpload) { + log.info("alarm upload ==> {}",alarmUpload.toString()); + Long deviceId = null; + if(StrUtil.isAllNotBlank(alarmUpload.getGasIp(),alarmUpload.getGasPort())){ + deviceId = deviceExtService.selectByGasIpPort(alarmUpload.getGasIp(),alarmUpload.getGasPort()); + } + if(ObjectUtil.isEmpty(deviceId) && StrUtil.isAllNotBlank(alarmUpload.getCameraIp(),alarmUpload.getCameraPort())){ + deviceId = deviceExtService.selectByCameraIpPort(alarmUpload.getCameraIp(),alarmUpload.getCameraPort()); + } + + if(ObjectUtil.isEmpty(deviceId)){ + return false; + } + + BusAlarm alarm = new BusAlarm(); + alarm.setDeviceId(deviceId); + alarm.setProjectId(projectDeviceService.selectProjectIdByDevice(deviceId)); + alarm.setAlarmValue(alarmUpload.getAlarmValue()); + if(StrUtil.isNotEmpty(alarmUpload.getAlarmTime())){ + alarm.setAlarmTime(DateUtil.parseDateTime(alarmUpload.getAlarmTime())); + }else { + alarm.setAlarmTime(new Date()); + } + + alarm.setAlarmType(alarmUpload.getAlarmType()); + alarm.setAlarmContent(alarmUpload.getAlarmContent()); + if(StrUtil.isNotEmpty(alarmUpload.getAlarmImage())){ + String imgBase64 = "data:image/jpeg;base64," + alarmUpload.getAlarmImage(); + String imageUrl = fileService.saveFile(imgBase64); + alarm.setAlarmImage(imageUrl); + } + alarm.setAlarmStatus(ALARM_STATUS_ON); + + DataTreeLocation treeLocation = dataSupportService.getTreeLocation(deviceId); + if(ObjectUtil.isNotEmpty(treeLocation)){ + alarm.setAlarmLng(treeLocation.getGdLng()); + alarm.setAlarmLat(treeLocation.getGdLat()); + } + + //自动消警 + AlarmTypeEnum alarmTypeEnum = AlarmTypeEnum.getByAlarmType(alarm.getAlarmType()); + if(ObjectUtil.isNotEmpty(alarmTypeEnum) && alarmTypeEnum.isAutoCancel()){ + this.baseMapper.cancelAlarm(deviceId,alarm.getAlarmType()); + } + return this.save(alarm); + } + + @Override + public Page listPage(Page page, QueryWrapper queryWrapper) { + page = this.baseMapper.listPage(page, queryWrapper); + for (BusAlarm alarm : page.getRecords()) { + alarm.setAlarmTypeName(dictService.getDictNameByCode("alarmType",alarm.getAlarmType())); + alarm.setAlarmStatusName(dictService.getDictNameByCode("alarmStatus",alarm.getAlarmStatus())); + if(StrUtil.isNotEmpty(alarm.getProjectState())){ + alarm.setProjectStateName(dictService.getDictNameByCode("projectStatus",alarm.getProjectState())); + } + } + return page; + } + + @Override + public List alarmCount(Long projectId, String alarmStatus) { + List list = this.baseMapper.alarmCount(projectId, alarmStatus); + list = list.stream().filter(i->StrUtil.isNotEmpty(i.getAlarmType())).collect(Collectors.toList()); + for (AlarmTypeCountDTO countDTO : list) { + countDTO.setAlarmTypeName(dictService.getDictNameByCode("alarmType",countDTO.getAlarmType())); + } + return list; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java new file mode 100644 index 0000000..a43f7c1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.casic.missiles.modular.system.mapper.BusEventImageMapper; +import com.casic.missiles.modular.system.service.IBusEventImageService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 事件图片表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +public class BusEventImageServiceImpl extends ServiceImpl implements IBusEventImageService { + + @Override + public boolean saveBusEventImages(Long eventId, List imageList) { + imageList.forEach(i->i.setEventId(eventId)); + return this.saveBatch(imageList); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java new file mode 100644 index 0000000..21e511c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java @@ -0,0 +1,39 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.mapper.BusEventMapper; +import com.casic.missiles.modular.system.service.IBusEventImageService; +import com.casic.missiles.modular.system.service.IBusEventService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; + +/** + *

+ * 事件表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class BusEventServiceImpl extends ServiceImpl implements IBusEventService { + + private final IBusEventImageService busEventImageService; + + + @Override + @Transactional + public boolean saveBusEvent(BusEvent busEvent) { + busEvent.setCreateTime(new Date()); + boolean res = this.save(busEvent); + if(res){ + res = busEventImageService.saveBusEventImages(busEvent.getId(),busEvent.getImageList()); + } + return res; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java new file mode 100644 index 0000000..2bdb63d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java @@ -0,0 +1,102 @@ +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.core.conditions.update.UpdateWrapper; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.casic.missiles.modular.system.mapper.DeviceExtMapper; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 设备扩展信息表(安全树) 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Service +public class DeviceExtServiceImpl extends ServiceImpl implements IDeviceExtService { + + + @Override + public boolean saveDeviceExt(DeviceDetailDTO deviceDetailDTO) { + DeviceExt ext = new DeviceExt(); + ext.setDeviceId(deviceDetailDTO.getId()); + ext.setCameraCode(deviceDetailDTO.getCameraCode()); + ext.setCameraIp(deviceDetailDTO.getCameraIp()); + ext.setCameraPort(deviceDetailDTO.getCameraPort()); + ext.setGasCode(deviceDetailDTO.getGasCode()); + ext.setGasIp(deviceDetailDTO.getGasIp()); + ext.setGasPort(deviceDetailDTO.getGasPort()); + ext.setHatLiningCode(deviceDetailDTO.getHatLiningCode()); + return this.save(ext); + } + + @Override + public boolean updateDeviceExt(DeviceDetailDTO deviceDetailDTO) { + DeviceExt ext = this.selectByDeviceId(deviceDetailDTO.getId()); + ext.setCameraCode(deviceDetailDTO.getCameraCode()); + ext.setCameraIp(deviceDetailDTO.getCameraIp()); + ext.setCameraPort(deviceDetailDTO.getCameraPort()); + ext.setGasCode(deviceDetailDTO.getGasCode()); + ext.setGasIp(deviceDetailDTO.getGasIp()); + ext.setGasPort(deviceDetailDTO.getGasPort()); + ext.setHatLiningCode(deviceDetailDTO.getHatLiningCode()); + return this.updateById(ext); + } + + @Override + public boolean removeByDeviceIds(List deviceIds) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("DEVICE_ID",deviceIds); + return this.remove(queryWrapper); + } + + @Override + public boolean setGasThreshold(String gasIp, String gasPort, String threshold) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.set("GAS_THRESHOLD",threshold); + updateWrapper.eq("GAS_IP",gasIp); + updateWrapper.eq("GAS_PORT",gasPort); + return this.update(updateWrapper); + } + + @Override + public String getGasThreshold(String gasIp, String gasPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("GAS_IP",gasIp); + queryWrapper.eq("GAS_PORT",gasPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getGasThreshold() : null; + } + + private DeviceExt selectByDeviceId(Long deviceId){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVICE_ID",deviceId); + return this.getOne(queryWrapper); + } + + @Override + public Long selectByGasIpPort(String gasIp, String gasPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("GAS_IP",gasIp); + queryWrapper.eq("GAS_PORT",gasPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getDeviceId() : null; + } + + @Override + public Long selectByCameraIpPort(String cameraIp, String cameraPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("CAMERA_IP",cameraIp); + queryWrapper.eq("CAMERA_PORT",cameraPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getDeviceId() : null; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java new file mode 100644 index 0000000..9df79ef --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.mapper.DeviceMapper; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.modular.system.consts.DeviceConst.*; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class DeviceServiceImpl extends ServiceImpl implements IDeviceService { + + private final AbstractDictService dictService; + private final IDeviceExtService deviceExtService; + + private final IProjectDeviceService projectDeviceService; + + @Transactional + @Override + public boolean saveDevice(DeviceDetailDTO deviceDetailDTO) { + deviceDetailDTO.setCreateTime(new Date()); + boolean deviceRes = this.save(deviceDetailDTO); + if(deviceRes && DEVICE_TYPE_TREE.equals(deviceDetailDTO.getDeviceType())){ + deviceRes = deviceExtService.saveDeviceExt(deviceDetailDTO); + } + return deviceRes; + } + + @Transactional + @Override + public boolean updateDevice(DeviceDetailDTO deviceDetailDTO) { + boolean deviceRes = this.updateById(deviceDetailDTO); + if(deviceRes && DEVICE_TYPE_TREE.equals(deviceDetailDTO.getDeviceType())){ + deviceRes = deviceExtService.updateDeviceExt(deviceDetailDTO); + } + return deviceRes; + } + + @Transactional + @Override + public boolean deleteDevices(List deviceIds) { + return this.removeByIds(deviceIds) & deviceExtService.removeByDeviceIds(deviceIds); + } + + @Override + public Page listPage(Page page, QueryWrapper queryWrapper,String status,Long projectId) { + String ID_COLUMN_NAME = "br_device.ID"; + List useDevices = this.selectProjectDevice(null); + List projectDevices; + if(ObjectUtil.isNotEmpty(projectId)){ + projectDevices = this.selectProjectDevice(projectId); + } else { + projectDevices = null; + } + + // 查询使用中的设备(如果传了 projectId,查询 使用中&&此现场) + if(DEVICE_STATUS_USE.equals(status)){ + if(CollUtil.isEmpty(useDevices)){ + return page; + } + if(ObjectUtil.isNotEmpty(projectId) && CollUtil.isEmpty(projectDevices)){ + return page; + } + queryWrapper.in(ID_COLUMN_NAME,useDevices); + if(CollUtil.isNotEmpty(projectDevices)){ + queryWrapper.in(ID_COLUMN_NAME,projectDevices); + } + + } + + // 查询未使用的设备(如果传了 projectId,查询 未使用||此现场) + if(DEVICE_STATUS_NORMAL.equals(status)) { + if (CollUtil.isNotEmpty(useDevices)) { + if (CollUtil.isEmpty(projectDevices)) { + queryWrapper.notIn(ID_COLUMN_NAME, useDevices); + } else { + queryWrapper.and(i -> i.notIn(ID_COLUMN_NAME, useDevices).or().in(ID_COLUMN_NAME, projectDevices)); + } + } + } + + page = this.baseMapper.listDetailPage(page, queryWrapper); + for (DeviceDetailDTO record : page.getRecords()) { + record.setDeviceTypeName(dictService.getDictNameByCode("deviceType",record.getDeviceType())); + record.setIsPowerSupplyName(dictService.getDictNameByCode("isPowerSupply",record.getIsPowerSupply())); + record.setRegisterTime(DateUtil.formatDate(record.getCreateTime())); + record.setStatus(useDevices.contains(record.getId()) ? DEVICE_STATUS_USE : DEVICE_STATUS_NORMAL); + record.setStatusName(dictService.getDictNameByCode("deviceStatus",record.getStatus())); + } + return page; + } + + @Override + public List selectProjectDevice(Long projectId) { + return this.baseMapper.selectProjectDevice(projectId); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceSupportServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceSupportServiceImpl.java new file mode 100644 index 0000000..ffd01ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceSupportServiceImpl.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.mapper.DeviceMapper; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceSupportService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; + +import static com.casic.missiles.modular.system.consts.DeviceConst.DEVICE_TYPE_HAT; + +@Service +@RequiredArgsConstructor +public class DeviceSupportServiceImpl implements IDeviceSupportService { + + private final IDeviceExtService deviceExtService; + + private final DeviceMapper deviceMapper; + + @Override + public Long selectByGasIpPort(String gasIp, String gasPort) { + return deviceExtService.selectByGasIpPort(gasIp, gasPort); + } + + @Override + public List selectHelmetList() { + return deviceMapper.selectHelmetList(DEVICE_TYPE_HAT); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectDeviceServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectDeviceServiceImpl.java new file mode 100644 index 0000000..965f55c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectDeviceServiceImpl.java @@ -0,0 +1,96 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.DataGas; +import com.casic.missiles.modular.system.entity.DataTreeLocation; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.mapper.ProjectDeviceMapper; +import com.casic.missiles.modular.system.service.IDataSupportService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.utils.LngLatUtil; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.stream.Collectors; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class ProjectDeviceServiceImpl extends ServiceImpl implements IProjectDeviceService { + + private final IDataSupportService dataSupportService; + + @Override + public boolean saveProjectDeviceList(Long projectId, List projectDeviceList) { + projectDeviceList.forEach(i->i.setProjectId(projectId)); + return this.saveBatch(projectDeviceList); + } + + @Transactional + @Override + public boolean updateProjectDeviceList(Long projectId, List projectDeviceList) { + return this.deleteByProjectId(projectId) && this.saveProjectDeviceList(projectId, projectDeviceList); + } + + @Override + public boolean deleteByProjectId(Long projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("PROJECT_ID",projectId); + return this.remove(queryWrapper); + } + + @Override + public boolean deleteByProjectIds(List projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("PROJECT_ID",projectId); + return this.remove(queryWrapper); + } + + @Override + public List selectDetailByProjectId(Long projectId) { + return this.baseMapper.selectDetailByProjectId(projectId); + } + + @Override + public Long selectProjectIdByDevice(Long deviceId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVICE_ID",deviceId); + queryWrapper.exists("(select Id FROM br_work_site_info p where p.ID = br_project_device.PROJECT_ID AND p.PROJECT_STATE != '3')"); + ProjectDevice projectDevice = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(projectDevice) ? projectDevice.getProjectId() : null; + } + + @Override + public List selectDeviceLocationList(Long projectId) { + List list = this.baseMapper.selectDeviceLocationList(projectId); + for (DeviceLocationDTO locationDTO : list) { + DataGas dataGas = dataSupportService.getGasData(locationDTO.getDeviceId()); + DataTreeLocation location = dataSupportService.getTreeLocation(locationDTO.getDeviceId(),true); + if(ObjectUtil.isNotEmpty(dataGas)){ + locationDTO.setGasValue(dataGas.getGasValue()); + locationDTO.setTime(DateUtil.formatDateTime(dataGas.getTs())); + } + if(ObjectUtil.isNotEmpty(location)){ + locationDTO.setLng(location.getGdLng()); + locationDTO.setLat(location.getGdLat()); + locationDTO.setLocation(location.getLocation()); + } + } + list = list.stream().filter(i-> StrUtil.isAllNotEmpty(i.getLng(),i.getLat())).collect(Collectors.toList()); + return LngLatUtil.sort(list); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectWorkerServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectWorkerServiceImpl.java new file mode 100644 index 0000000..c3ec86c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectWorkerServiceImpl.java @@ -0,0 +1,101 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.DataHelmetHealth; +import com.casic.missiles.modular.system.entity.DataHelmetLocation; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.mapper.ProjectWorkerMapper; +import com.casic.missiles.modular.system.service.IHelmetSupportService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.system.consts.ProjectConst.WORKER_TYPE_NORMAL; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class ProjectWorkerServiceImpl extends ServiceImpl implements IProjectWorkerService { + + private final AbstractDeptService deptService; + private final IHelmetSupportService helmetSupportService; + + @Override + public boolean saveProjectWorkerList(Long projectId, List projectWorkerList) { + projectWorkerList.forEach(i->i.setProjectId(projectId)); + return this.saveBatch(projectWorkerList); + } + + @Transactional + @Override + public boolean updateProjectWorkerList(Long projectId, List projectWorkerList) { + return this.deleteByProjectId(projectId) && this.saveProjectWorkerList(projectId, projectWorkerList) ; + } + + @Override + public boolean deleteByProjectId(Long projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("PROJECT_ID",projectId); + return this.remove(queryWrapper); + } + + @Override + public boolean deleteByProjectIds(List projectIds) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("PROJECT_ID",projectIds); + return this.remove(queryWrapper); + } + + + @Override + public List selectDetailByProjectId(Long projectId,String workerType) { + List projectWorkerList = this.baseMapper.selectDetailByProjectId(projectId,workerType); + for (ProjectWorker projectWorker : projectWorkerList) { + if(ObjectUtil.isNotEmpty(projectWorker.getWorkerDeptId())){ + projectWorker.setWorkerDeptName(deptService.getDeptName(projectWorker.getWorkerDeptId())); + } + } + return projectWorkerList; + } + + @Override + public List selectWorkerLocationDTO(Long projectId) { + List projectWorkerList = this.baseMapper.selectWorkerLocationList(projectId,WORKER_TYPE_NORMAL); + for (WorkerLocationDTO workerLocationDTO : projectWorkerList) { + if(ObjectUtil.isNotEmpty(workerLocationDTO.getHatId())){ + DataHelmetLocation location = helmetSupportService.getHelmetLocation(workerLocationDTO.getHatId(),true); + if(ObjectUtil.isNotEmpty(location)){ + workerLocationDTO.setLng(location.getGdLng()); + workerLocationDTO.setLat(location.getGdLat()); + workerLocationDTO.setLocation(location.getLocation()); + } + + DataHelmetHealth health = helmetSupportService.getHelmetHealth(workerLocationDTO.getHatId()); + if(ObjectUtil.isNotEmpty(health)){ + workerLocationDTO.setBloodOxygen(health.getBloodOxygen()); + workerLocationDTO.setHeartRate(health.getHeartRate()); + workerLocationDTO.setTime(DateUtil.formatDateTime(health.getTs())); + } + } + } + projectWorkerList = projectWorkerList.stream().filter(i-> StrUtil.isAllNotEmpty(i.getLng(),i.getLat())).collect(Collectors.toList()); + return projectWorkerList; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkSiteInfoServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkSiteInfoServiceImpl.java new file mode 100644 index 0000000..5068da2 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkSiteInfoServiceImpl.java @@ -0,0 +1,151 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.mapper.WorkSiteInfoMapper; +import com.casic.missiles.modular.system.service.*; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.system.consts.ProjectConst.*; + +/** + *

+ * 作业现场表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class WorkSiteInfoServiceImpl extends ServiceImpl implements IWorkSiteInfoService { + + private final IProjectWorkerService projectWorkerService; + private final IProjectDeviceService projectDeviceService; + + private final IWorkerService workerService; + private final IBraceletService braceletService; + + private final AbstractDeptService deptService; + private final AbstractDictService dictService; + @Override + @Transactional + public boolean addWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO) { + workSiteDetailDTO.setCreateTime(new Date()); + workSiteDetailDTO.setUpdateTime(new Date()); + workSiteDetailDTO.setProjectState(PROJECT_STATE_PREPARE); + boolean res = this.save(workSiteDetailDTO); + if(res){ + res = projectDeviceService.saveProjectDeviceList(workSiteDetailDTO.getId(), workSiteDetailDTO.getDeviceList()); + res = res & projectWorkerService.saveProjectWorkerList(workSiteDetailDTO.getId(), workSiteDetailDTO.getWorkerList()); + } + return res; + } + + @Override + @Transactional + public boolean updateWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO) { + workSiteDetailDTO.setUpdateTime(new Date()); + boolean res = this.updateById(workSiteDetailDTO); + if(res){ + res = projectDeviceService.updateProjectDeviceList(workSiteDetailDTO.getId(), workSiteDetailDTO.getDeviceList()); + res = res & projectWorkerService.updateProjectWorkerList(workSiteDetailDTO.getId(), workSiteDetailDTO.getWorkerList()); + } + return res; + } + + @Override + public boolean deleteProjects(List projectIds) { + if(CollUtil.isNotEmpty(projectIds)) { + projectDeviceService.deleteByProjectIds(projectIds); + projectWorkerService.deleteByProjectIds(projectIds); + return this.removeByIds(projectIds); + } + return true; + } + + @Override + public WorkSiteDetailDTO getWorkSiteDetail(Long projectId) { + WorkSiteInfo workSiteInfo = this.getById(projectId); + WorkSiteDetailDTO workSiteDetailDTO = new WorkSiteDetailDTO(); + BeanUtil.copyProperties(workSiteInfo,workSiteDetailDTO,true); + workSiteDetailDTO.setDeviceList(projectDeviceService.selectDetailByProjectId(projectId)); + workSiteDetailDTO.setWorkerList(projectWorkerService.selectDetailByProjectId(projectId,WORKER_TYPE_NORMAL)); + + Worker responseWorker = workerService.selectWorkerDetail(workSiteDetailDTO.getWorkPerson()); + if(ObjectUtil.isNotEmpty(responseWorker)){ + workSiteDetailDTO.setWorkPersonName(responseWorker.getWorkerName()); + workSiteDetailDTO.setWorkPersonPhoneNumber(responseWorker.getPhoneNumber()); + workSiteDetailDTO.setWorkPersonDeptId(responseWorker.getDeptId()); + workSiteDetailDTO.setWorkPersonDeptName(responseWorker.getDeptName()); + } + return workSiteDetailDTO; + } + + @Override + public Page selectListPage(Page page, QueryWrapper queryWrapper) { + page = this.baseMapper.selectListPage(page, queryWrapper); + for (WorkSiteInfo workSiteInfo : page.getRecords()) { + workSiteInfo.setProjectStateName(dictService.getDictNameByCode("projectState", workSiteInfo.getProjectState())); + if(ObjectUtil.isNotEmpty(workSiteInfo.getWorkPersonDeptId())){ + workSiteInfo.setWorkPersonDeptName(deptService.getDeptName(workSiteInfo.getWorkPersonDeptId())); + } + workSiteInfo.setRegisterTime(DateUtil.formatDate(workSiteInfo.getCreateTime())); + } + return page; + } + + @Override + public boolean start(Long projectId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",projectId); + updateWrapper.set("PROJECT_STATE",PROJECT_STATE_WORKING); + updateWrapper.set("START_TIME",new Date()); + boolean res = this.update(updateWrapper); + //braceletService.enableBracelet(selectProjectBracelets(projectId)); + return res; + } + + @Override + public boolean finish(Long projectId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",projectId); + updateWrapper.set("PROJECT_STATE",PROJECT_STATE_FINISH); + updateWrapper.set("FINISH_TIME",new Date()); + boolean res = this.update(updateWrapper); + //braceletService.disableBracelet(selectProjectBracelets(projectId)); + return res; + } + + private List selectProjectBracelets(Long projectId){ + List deviceCodes = new ArrayList<>(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("PROJECT_ID",projectId); + queryWrapper.isNotNull("BRACELET_CODE"); + queryWrapper.select("BRACELET_CODE"); + List res = projectWorkerService.listObjs(queryWrapper); + if(CollUtil.isNotEmpty(res)){ + deviceCodes = res.stream().map(Object::toString).distinct().collect(Collectors.toList()); + } + return deviceCodes; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkerServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkerServiceImpl.java new file mode 100644 index 0000000..6859cff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkerServiceImpl.java @@ -0,0 +1,110 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.mapper.WorkerMapper; +import com.casic.missiles.modular.system.service.*; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.modular.system.consts.ProjectConst.WORKER_TYPE_TEMP; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class WorkerServiceImpl extends ServiceImpl implements IWorkerService { + + private final IProjectWorkerService projectWorkerService; + + private final IProjectDeviceService projectDeviceService; + private final AbstractDictService dictService; + private final AbstractDeptService deptService; + private final IDeviceExtService deviceExtService; + + @Override + @Transactional + public boolean addWorker(Worker worker, Long projectId) { + worker.setCreateTime(new Date()); + boolean res = this.save(worker); + if(res && ObjectUtil.isNotEmpty(projectId)){ + res = projectWorkerService.save(new ProjectWorker(projectId, worker.getId())); + if(ObjectUtil.isNotEmpty(worker.getWorkerAvatar())){ + // todo 向一体机推送人脸图片 + } + } + return res; + } + + @Override + public Page selectListPage(Page page, QueryWrapper ew) { + page = this.baseMapper.selectListPage(page, ew); + for (Worker worker : page.getRecords()) { + wrapperWorker(worker); + } + return page; + } + + private void wrapperWorker(Worker worker) { + if(StrUtil.isNotEmpty(worker.getGender())){ + worker.setGenderName(dictService.getDictNameByCode("sysSex", worker.getGender())); + } + if(ObjectUtil.isNotEmpty(worker.getDeptId())){ + worker.setDeptName(deptService.getDeptName(worker.getDeptId())); + } + worker.setRegisterTime(DateUtil.formatDate(worker.getCreateTime())); + if(StrUtil.isNotEmpty(worker.getStatus())){ + worker.setStatusName(dictService.getDictNameByCode("workerStatus", worker.getStatus())); + } + } + + @Override + public Worker selectWorkerDetail(Long workerId) { + Worker worker = this.getById(workerId); + if(ObjectUtil.isNotEmpty(worker)){ + wrapperWorker(worker); + } + return worker; + } + + @Override + public List faceRegister(String cameraIp, String cameraPort) { + Long deviceId = deviceExtService.selectByCameraIpPort(cameraIp, cameraPort); + if(ObjectUtil.isNotEmpty(deviceId)){ + Long projectId = projectDeviceService.selectProjectIdByDevice(deviceId); + if(ObjectUtil.isNotEmpty(projectId)){ + return this.baseMapper.selectWorkerAvatars(projectId); + } + } + return null; + } + + @Override + public List projectTempWorker(Long projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("WORKER_TYPE",WORKER_TYPE_TEMP); + queryWrapper.exists("(select ID FROM br_project_worker WHERE PROJECT_ID = "+ projectId +")"); + List workers = this.list(queryWrapper); + workers.forEach(this::wrapperWorker); + return workers; + } +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java new file mode 100644 index 0000000..73d7799 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.dto; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "AlarmUpload",description = "报警上传") +@Data +public class AlarmUpload { + + @ApiModelProperty(value = "摄像头ip") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + @ApiModelProperty(value = "安全树甲烷设备ip") + private String gasIp; + @ApiModelProperty(value = "安全树甲烷设备端口") + private String gasPort; + @ApiModelProperty(value = "报警值") + private String alarmValue; + @ApiModelProperty(value = "报警时间") + private String alarmTime; + @ApiModelProperty(value = "报警类型") + private String alarmType; + @ApiModelProperty(value = "报警图片") + private String alarmImage; + @ApiModelProperty(value = "报警内容") + private String alarmContent; + + @Override + public String toString() { + return "AlarmUpload{" + + "cameraIp='" + cameraIp + '\'' + + ", cameraPort='" + cameraPort + '\'' + + ", gasIp='" + gasIp + '\'' + + ", gasPort='" + gasPort + '\'' + + ", alarmValue='" + alarmValue + '\'' + + ", alarmTime='" + alarmTime + '\'' + + ", alarmType='" + alarmType + '\'' + + ", alarmImage='" + (StrUtil.isNotEmpty(alarmImage) ? alarmImage.substring(0,50) : "null") + '\'' + + ", alarmContent='" + alarmContent + '\'' + + '}'; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java new file mode 100644 index 0000000..ea518d9 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.modular.system.entity.Device; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("DeviceDetailDTO") +@Data +public class DeviceDetailDTO extends Device { + + @ApiModelProperty(value = "摄像头编号") + private String cameraCode; + + @ApiModelProperty(value = "摄像头IP") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + + @ApiModelProperty(value = "激甲编号") + private String gasCode; + + @ApiModelProperty(value = "激甲IP") + private String gasIp; + + @ApiModelProperty(value = "激甲端口") + private String gasPort; + + @ApiModelProperty(value = "智能帽衬编号") + private String hatLiningCode; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java new file mode 100644 index 0000000..29378ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("WorkSiteDetailDTO") +public class WorkSiteDetailDTO extends WorkSiteInfo { + + @ApiModelProperty(value = "安全树列表",dataType = "ProjectDevice") + private List deviceList; + + @ApiModelProperty(value = "人员列表",dataType = "ProjectWorker") + private List workerList; + + + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java new file mode 100644 index 0000000..6fd7b24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java @@ -0,0 +1,68 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "WorkerLocationDTO",description = "人员位置列表(首页)") +@Data +public class WorkerLocationDTO { + + @ApiModelProperty("人员ID") + private Long workerId; + + @ApiModelProperty("人员姓名") + private String workerName; + + @ApiModelProperty("安全帽编号") + private String hatCode; + + @ApiModelProperty("安全帽ID") + private Long hatId; + + @ApiModelProperty("背心编号") + private String vastCode; + + @ApiModelProperty("手环编号") + private String braceletCode; + + @ApiModelProperty("位置") + private String location; + + @ApiModelProperty("时间") + private String time; + + @ApiModelProperty("经度") + private String lng; + + @ApiModelProperty("纬度") + private String lat; + + @ApiModelProperty("心率") + private String heartRate; + + @ApiModelProperty("血氧") + private String bloodOxygen; + + @ApiModelProperty("一氧化碳") + private String co; + + @ApiModelProperty("甲烷") + private String gas; + + @ApiModelProperty("硫化氢") + private String h2s; + + @ApiModelProperty("氧气") + private String o2; + + @ApiModelProperty("信号") + private String signal; + + @ApiModelProperty("电量") + private String cell; + + @ApiModelProperty("是否报警") + private boolean alarmFlag; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java new file mode 100644 index 0000000..efb4a23 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java @@ -0,0 +1,159 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 报警记录表 + *

+ * + * @author zyj + * @since 2023-05-16 + */ +@Data +@ApiModel("Alarm") +@TableName("br_bus_alarm") +public class BusAlarm implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @ApiModelProperty(value = "设备ID") + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 报警类型 + */ + @ApiModelProperty(value = "报警类型") + @TableField("ALARM_TYPE") + private String alarmType; + + /** + * 报警状态 + */ + @ApiModelProperty(value = "报警状态") + @TableField("ALARM_STATUS") + private String alarmStatus; + + /** + * 报警值 + */ + @ApiModelProperty(value = "报警值") + @TableField("ALARM_VALUE") + private String alarmValue; + + /** + * 报警图片 + */ + @ApiModelProperty(value = "报警图片") + @TableField("ALARM_IMAGE") + private String alarmImage; + + /** + * 报警内容 + */ + @ApiModelProperty(value = "报警内容") + @TableField("ALARM_CONTENT") + private String alarmContent; + + /** + * 报警时间 + */ + @ApiModelProperty(value = "报警时间") + @TableField("ALARM_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date alarmTime; + + /** + * 消警时间 + */ + @ApiModelProperty(value = "消警时间") + @TableField("CANCEL_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + /** + * 报警位置经度 + */ + @ApiModelProperty(value = "报警位置经度") + @TableField("ALARM_LNG") + private String alarmLng; + + /** + * 报警位置纬度 + */ + @ApiModelProperty(value = "报警位置纬度") + @TableField("ALARM_LAT") + private String alarmLat; + + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmStatusName; + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmTypeName; + @ApiModelProperty("作业名称") + @TableField(exist = false) + private String workTitle; + @ApiModelProperty("所属道路") + @TableField(exist = false) + private String workRoad; + @ApiModelProperty("作业状态") + @TableField(exist = false) + private String projectState; + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + @ApiModelProperty("负责人姓名") + @TableField(exist = false) + private String workPersonName; + @ApiModelProperty("负责人联系方式") + @TableField(exist = false) + private String workPersonPhoneNumber; + + + @Override + public String toString() { + return "BusAlarm{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + ", alarmType=" + alarmType + + ", alarmValue=" + alarmValue + + ", alarmStatus=" + alarmStatus + + ", alarmImage=" + alarmImage + + ", alarmContent=" + alarmContent + + ", alarmTime=" + alarmTime + + ", cancelTime=" + cancelTime + + ", alarmLng=" + alarmLng + + ", alarmLat=" + alarmLat + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java new file mode 100644 index 0000000..a0b7543 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + *

+ * 事件表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event") +@Data +@ApiModel("BusEvent") +public class BusEvent implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("事件ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件标题 + */ + @ApiModelProperty("事件名称") + @TableField("EVENT_TITLE") + private String eventTitle; + + /** + * 上报人员 + */ + @ApiModelProperty("上报人员") + @TableField("UPLOAD_NAME") + private String uploadName; + + /** + * 联系方式 + */ + @ApiModelProperty("联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 事件描述 + */ + @ApiModelProperty("事件描述") + @TableField("EVENT_DESCRIPTION") + private String eventDescription; + + @ApiModelProperty("经度") + @TableField("LNG") + private String lng; + + @ApiModelProperty("纬度") + @TableField("LAT") + private String lat; + + /** + * 事件上传时间 + */ + @ApiModelProperty("事件上传时间") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty("事件照片") + @TableField(exist = false) + private List imageList; + + + + @Override + public String toString() { + return "BusEvent{" + + "id=" + id + + ", eventTitle=" + eventTitle + + ", uploadName=" + uploadName + + ", phoneNumber=" + phoneNumber + + ", eventDescription=" + eventDescription + + ", lng=" + lng + + ", lat=" + lat + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java new file mode 100644 index 0000000..1e75245 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 事件图片表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event_image") +@Data +@ApiModel("BusEventImage") +public class BusEventImage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件ID + */ + @TableField("EVENT_ID") + private Long eventId; + + /** + * 报警图片 + */ + @TableField("IMAGE") + @ApiModelProperty("图片url") + private String image; + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java new file mode 100644 index 0000000..df89c70 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.core.base.json.DateDeserializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Device") +@TableName("br_device") +@Data +public class Device implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "设备ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty(value = "设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + /** + * 设备类型 + */ + @ApiModelProperty(value = "设备类型") + @TableField("DEVICE_TYPE") + private String deviceType; + + /** + * 设备批次 + */ + @ApiModelProperty(value = "设备批次") + @TableField("DEVICE_BATCH") + private String deviceBatch; + + /** + * 厂家 + */ + @ApiModelProperty(value = "厂家") + @TableField("MANUFACTURER") + private String manufacturer; + + /** + * 是否供电 + */ + @ApiModelProperty(value = "是否供电") + @TableField("IS_POWER_SUPPLY") + private String isPowerSupply; + + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间",dataType = "Date") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty(value = "设备类型名称") + @TableField(exist = false) + private String deviceTypeName; + + @ApiModelProperty(value = "是否供电名称") + @TableField(exist = false) + private String isPowerSupplyName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", deviceCode=" + deviceCode + + ", deviceType=" + deviceType + + ", deviceBatch=" + deviceBatch + + ", manufacturer=" + manufacturer + + ", isPowerSupply=" + isPowerSupply + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java new file mode 100644 index 0000000..5ee7015 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java @@ -0,0 +1,99 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 设备扩展信息表(安全树) + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Data +@TableName("br_device_ext") +public class DeviceExt implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 摄像头编号 + */ + @TableField("CAMERA_CODE") + private String cameraCode; + + /** + * 摄像头IP + */ + @TableField("CAMERA_IP") + private String cameraIp; + + /** + * 摄像头端口 + */ + @TableField("CAMERA_PORT") + private String cameraPort; + + /** + * 激甲编号 + */ + @TableField("GAS_CODE") + private String gasCode; + + /** + * 激甲IP + */ + @TableField("GAS_IP") + private String gasIp; + + /** + * 激甲端口 + */ + @TableField("GAS_PORT") + private String gasPort; + + /** + * 甲烷报警阈值 + */ + @TableField("GAS_THRESHOLD") + private String gasThreshold; + + @TableField(value = "HAT_LINING_CODE") + private String hatLiningCode; + + + @Override + public String toString() { + return "DeviceExt{" + + "id=" + id + + ", deviceId=" + deviceId + + ", cameraCode=" + cameraCode + + ", cameraIp=" + cameraIp + + ", cameraPort=" + cameraPort + + ", gasCode=" + gasCode + + ", gasIp=" + gasIp + + ", gasPort=" + gasPort + + ", gasThreshold=" + gasThreshold + + ", hatLiningCode=" + hatLiningCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java new file mode 100644 index 0000000..c4f3472 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java @@ -0,0 +1,62 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Data +@ApiModel("ProjectDevice") +@TableName("br_project_device") +public class ProjectDevice implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + @ApiModelProperty("设备ID(新增编辑时传)") + private Long deviceId; + + /** + * 设备编号 + */ + @TableField(exist = false) + @ApiModelProperty("设备编号(详情中展示,新增编辑不用传)") + private String deviceCode; + + @Override + public String toString() { + return "ProjectDevice{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java new file mode 100644 index 0000000..10b23c4 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java @@ -0,0 +1,104 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("ProjectWorker") +@TableName("br_project_worker") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ProjectWorker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 人员ID + */ + @ApiModelProperty("人员ID") + @TableField("WORKER_ID") + private Long workerId; + + /** + * 安全帽编号 + */ + @ApiModelProperty("安全帽编号") + @TableField("HAT_CODE") + private String hatCode; + + /** + * 背心编号 + */ + @ApiModelProperty("背心编号") + @TableField("VAST_CODE") + private String vastCode; + + /** + * 手环编号 + */ + @ApiModelProperty("手环编号") + @TableField("BRACELET_CODE") + private String braceletCode; + + @ApiModelProperty("人员姓名(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerName; + + @ApiModelProperty("人员部门ID(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptId; + + @ApiModelProperty("人员部门名称(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptName; + + @ApiModelProperty("人员联系方式(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerPhoneNumber; + + public ProjectWorker(Long projectId, Long workerId) { + this.projectId = projectId; + this.workerId = workerId; + } + + @Override + public String toString() { + return "ProjectWorker{" + + "id=" + id + + ", projectId=" + projectId + + ", workerId=" + workerId + + ", hatCode=" + hatCode + + ", vastCode=" + vastCode + + ", braceletCode=" + braceletCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java new file mode 100644 index 0000000..fa6f41d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 作业现场表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("WorkSiteInfo") +@TableName("br_work_site_info") +@Data +public class WorkSiteInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("作业现场ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业名称 + */ + @ApiModelProperty("作业名称") + @TableField("WORK_TITLE") + private String workTitle; + + /** + * 责任人 + */ + @ApiModelProperty("责任人(人员ID)") + @TableField("WORK_PERSON") + private Long workPerson; + + /** + * 作业描述 + */ + @ApiModelProperty("作业描述") + @TableField("WORK_SITE_DESC") + private String workSiteDesc; + + /** + * 作业状态 + */ + @ApiModelProperty("作业状态") + @TableField("PROJECT_STATE") + private String projectState; + + /** + * 所属道路 + */ + @ApiModelProperty("所属道路") + @TableField("WORK_ROAD") + private String workRoad; + + @TableField("IMAGE_URL") + private String imageUrl; + + @TableField("CREATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + @TableField("UPDATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("FINISH_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + @ApiModelProperty("负责人姓名(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonName; + + @ApiModelProperty("负责人联系方式(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonPhoneNumber; + + @ApiModelProperty("负责人所属部门ID(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private Long workPersonDeptId; + + @ApiModelProperty("负责人所属部门名称(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonDeptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + + @Override + public String toString() { + return "WorkSiteInfo{" + + "id=" + id + + ", workTitle=" + workTitle + + ", workPerson=" + workPerson + + ", workSiteDesc=" + workSiteDesc + + ", projectState=" + projectState + + ", imageUrl=" + imageUrl + + ", updateTime=" + updateTime + + ", workRoad=" + workRoad + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java new file mode 100644 index 0000000..28a4daa --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java @@ -0,0 +1,147 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Worker") +@TableName("br_worker") +@Data +public class Worker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "人员ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 姓名 + */ + @ApiModelProperty(value = "姓名") + @TableField("WORKER_NAME") + private String workerName; + + /** + * 性别 + */ + @ApiModelProperty(value = "性别") + @TableField("GENDER") + private String gender; + + /** + * 所属部门 + */ + @ApiModelProperty(value = "所属部门(人员管理)") + @TableField("DEPT_ID") + private Long deptId; + + /** + * 所属单位 + */ + @ApiModelProperty(value = "所属单位(入场申请中使用)") + @TableField("OWNER_SHIP") + private String ownerShip; + + /** + * 联系方式 + */ + @ApiModelProperty(value = "联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 证件号 + */ + @ApiModelProperty(value = "证件号") + @TableField("ID_CARD_NUMBER") + private String idCardNumber; + + /** + * 入场原因 + */ + @ApiModelProperty(value = "入场原因(入场申请中使用)") + @TableField("ENTER_REASON") + private String enterReason; + + /** + * 入场人脸照片 + */ + @ApiModelProperty(value = "人脸照片(照片路径)") + @TableField("WORKER_AVATAR") + private String workerAvatar; + + /** + * 申请入场时间 + */ + @ApiModelProperty(value = "注册时间/申请入场时间") + @TableField("CREATE_TIME") + private Date createTime; + + /** + * 人员类型 + */ + @ApiModelProperty(value = "人员类型(区分人员管理和入场申请)") + @TableField("WORKER_TYPE") + private String workerType; + + @ApiModelProperty(value = "性别名称") + @TableField(exist = false) + private String genderName; + + @ApiModelProperty(value = "部门名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @ApiModelProperty(value = "是否注册(0未注册;1已注册)",allowableValues = "0,1") + @TableField(exist = false) + private String isRegister; + + @Override + public String toString() { + return "Worker{" + + "id=" + id + + ", workerName=" + workerName + + ", gender=" + gender + + ", deptId=" + deptId + + ", ownerShip=" + ownerShip + + ", phoneNumber=" + phoneNumber + + ", idCardNumber=" + idCardNumber + + ", enterReason=" + enterReason + + ", workerAvatar=" + workerAvatar + + ", createTime=" + createTime + + ", workerType=" + workerType + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java new file mode 100644 index 0000000..9801742 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警记录表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusAlarmMapper extends BaseMapper { + + Page listPage(Page page,@Param("ew") QueryWrapper queryWrapper); + + void cancelAlarm(@Param("deviceId")Long deviceId,@Param("alarmType") String alarmType); + + List alarmCount(@Param("projectId")Long projectId, @Param("alarmStatus")String alarmStatus); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java new file mode 100644 index 0000000..9590b7d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件图片表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventImageMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java new file mode 100644 index 0000000..3c85edf --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java new file mode 100644 index 0000000..4ca9212 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 设备扩展信息表(安全树) Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface DeviceExtMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java new file mode 100644 index 0000000..444c0c5 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Mapper +public interface DeviceMapper extends BaseMapper { + + Page listDetailPage(Page page,@Param("ew") QueryWrapper ew); + + List selectProjectDevice(@Param("projectId") Long projectId); + + List selectHelmetList(@Param("deviceType")String deviceType); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java new file mode 100644 index 0000000..1d0c14e --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectDeviceMapper extends BaseMapper { + List selectDetailByProjectId(@Param("projectId") Long projectId); + + List selectDeviceLocationList(@Param("projectId") Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java new file mode 100644 index 0000000..58583d1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectWorkerMapper extends BaseMapper { + + List selectDetailByProjectId(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + + List selectWorkerLocationList(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java new file mode 100644 index 0000000..a4934d2 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +/** + *

+ * 作业现场表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkSiteInfoMapper extends BaseMapper { + + Page selectListPage(Page page,@Param("ew") QueryWrapper ew); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java new file mode 100644 index 0000000..258fb12 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkerMapper extends BaseMapper { + + + Page selectListPage(Page page, @Param("ew") QueryWrapper ew); + + List selectWorkerAvatars(@Param("projectId")Long projectId); + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml new file mode 100644 index 0000000..595088a --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml @@ -0,0 +1,58 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml new file mode 100644 index 0000000..fbc3db3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml new file mode 100644 index 0000000..627d573 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml new file mode 100644 index 0000000..5321d1c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml new file mode 100644 index 0000000..94262e1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml @@ -0,0 +1,97 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml new file mode 100644 index 0000000..c6d1c24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml @@ -0,0 +1,29 @@ + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml new file mode 100644 index 0000000..8d2de10 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml new file mode 100644 index 0000000..8f01326 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml @@ -0,0 +1,26 @@ + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml new file mode 100644 index 0000000..3e28b39 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml @@ -0,0 +1,56 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java new file mode 100644 index 0000000..f63c19c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 报警记录表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusAlarmService extends IService { + + boolean alarmUpload(AlarmUpload alarmUpload); + + Page listPage(Page page,QueryWrapper queryWrapper); + + List alarmCount(Long projectId,String alarmStatus); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java new file mode 100644 index 0000000..b1187ed --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 事件图片表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusEventImageService extends IService { + + boolean saveBusEventImages(Long eventId, List imageList); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java new file mode 100644 index 0000000..85c48d0 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 事件表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusEventService extends IService { + + boolean saveBusEvent(BusEvent busEvent); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java new file mode 100644 index 0000000..6fc5361 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 设备扩展信息表(安全树) 服务类 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface IDeviceExtService extends IService { + + boolean saveDeviceExt(DeviceDetailDTO deviceDetailDTO); + + boolean updateDeviceExt(DeviceDetailDTO deviceDetailDTO); + + boolean removeByDeviceIds(List deviceIds); + + boolean setGasThreshold(String gasIp,String gasPort,String threshold); + + String getGasThreshold(String gasIp,String gasPort); + + Long selectByGasIpPort(String gasIp,String gasPort); + + Long selectByCameraIpPort(String cameraIp,String cameraPort); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java new file mode 100644 index 0000000..9e62756 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java @@ -0,0 +1,32 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IDeviceService extends IService { + + boolean saveDevice(DeviceDetailDTO deviceDetailDTO); + + boolean updateDevice(DeviceDetailDTO deviceDetailDTO); + + boolean deleteDevices(List deviceIds); + + Page listPage(Page page, QueryWrapper queryWrapper, String status,Long projectId); + + List selectProjectDevice(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java new file mode 100644 index 0000000..8599411 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IProjectDeviceService extends IService { + + boolean saveProjectDeviceList(Long projectId, List projectDeviceList); + + boolean updateProjectDeviceList(Long projectId, List projectDeviceList); + + boolean deleteByProjectId(Long projectId); + + boolean deleteByProjectIds(List projectIds); + + List selectDetailByProjectId(Long projectId); + + Long selectProjectIdByDevice(Long deviceId); + + List selectDeviceLocationList(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java new file mode 100644 index 0000000..e921bc3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IProjectWorkerService extends IService { + + boolean saveProjectWorkerList(Long projectId, List projectWorkerList); + + boolean updateProjectWorkerList(Long projectId, List projectWorkerList); + + boolean deleteByProjectId(Long projectId); + + boolean deleteByProjectIds(List projectIds); + + List selectDetailByProjectId(Long projectId,String workerType); + + List selectWorkerLocationDTO(Long projectId); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java new file mode 100644 index 0000000..58a8590 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; +/** + *

+ * 作业现场表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IWorkSiteInfoService extends IService { + + boolean addWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO); + + boolean updateWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO); + + boolean deleteProjects(List projectIds); + + WorkSiteDetailDTO getWorkSiteDetail(Long projectId); + + Page selectListPage(Page page, QueryWrapper queryWrapper); + + boolean start(Long projectId); + + boolean finish(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java new file mode 100644 index 0000000..6c6ee98 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.extension.service.IService; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IWorkerService extends IService { + + boolean addWorker(Worker worker,Long projectId); + + Page selectListPage(Page page,QueryWrapper ew); + + Worker selectWorkerDetail(Long workerId); + + List faceRegister(String cameraIp,String cameraPort); + + List projectTempWorker(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java new file mode 100644 index 0000000..b44de1d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.consts.AlarmTypeEnum; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.entity.DataTreeLocation; +import com.casic.missiles.modular.system.mapper.BusAlarmMapper; +import com.casic.missiles.modular.system.service.*; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +/** + *

+ * 报警记录表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +@Slf4j +public class BusAlarmServiceImpl extends ServiceImpl implements IBusAlarmService { + + private final IDeviceExtService deviceExtService; + private final IDeviceService deviceService; + private final IProjectDeviceService projectDeviceService; + + private final ICasicFileService fileService; + + private final AbstractDictService dictService; + private final IDataSupportService dataSupportService; + + @Override + @Transactional + public boolean alarmUpload(AlarmUpload alarmUpload) { + log.info("alarm upload ==> {}",alarmUpload.toString()); + Long deviceId = null; + if(StrUtil.isAllNotBlank(alarmUpload.getGasIp(),alarmUpload.getGasPort())){ + deviceId = deviceExtService.selectByGasIpPort(alarmUpload.getGasIp(),alarmUpload.getGasPort()); + } + if(ObjectUtil.isEmpty(deviceId) && StrUtil.isAllNotBlank(alarmUpload.getCameraIp(),alarmUpload.getCameraPort())){ + deviceId = deviceExtService.selectByCameraIpPort(alarmUpload.getCameraIp(),alarmUpload.getCameraPort()); + } + + if(ObjectUtil.isEmpty(deviceId)){ + return false; + } + + BusAlarm alarm = new BusAlarm(); + alarm.setDeviceId(deviceId); + alarm.setProjectId(projectDeviceService.selectProjectIdByDevice(deviceId)); + alarm.setAlarmValue(alarmUpload.getAlarmValue()); + if(StrUtil.isNotEmpty(alarmUpload.getAlarmTime())){ + alarm.setAlarmTime(DateUtil.parseDateTime(alarmUpload.getAlarmTime())); + }else { + alarm.setAlarmTime(new Date()); + } + + alarm.setAlarmType(alarmUpload.getAlarmType()); + alarm.setAlarmContent(alarmUpload.getAlarmContent()); + if(StrUtil.isNotEmpty(alarmUpload.getAlarmImage())){ + String imgBase64 = "data:image/jpeg;base64," + alarmUpload.getAlarmImage(); + String imageUrl = fileService.saveFile(imgBase64); + alarm.setAlarmImage(imageUrl); + } + alarm.setAlarmStatus(ALARM_STATUS_ON); + + DataTreeLocation treeLocation = dataSupportService.getTreeLocation(deviceId); + if(ObjectUtil.isNotEmpty(treeLocation)){ + alarm.setAlarmLng(treeLocation.getGdLng()); + alarm.setAlarmLat(treeLocation.getGdLat()); + } + + //自动消警 + AlarmTypeEnum alarmTypeEnum = AlarmTypeEnum.getByAlarmType(alarm.getAlarmType()); + if(ObjectUtil.isNotEmpty(alarmTypeEnum) && alarmTypeEnum.isAutoCancel()){ + this.baseMapper.cancelAlarm(deviceId,alarm.getAlarmType()); + } + return this.save(alarm); + } + + @Override + public Page listPage(Page page, QueryWrapper queryWrapper) { + page = this.baseMapper.listPage(page, queryWrapper); + for (BusAlarm alarm : page.getRecords()) { + alarm.setAlarmTypeName(dictService.getDictNameByCode("alarmType",alarm.getAlarmType())); + alarm.setAlarmStatusName(dictService.getDictNameByCode("alarmStatus",alarm.getAlarmStatus())); + if(StrUtil.isNotEmpty(alarm.getProjectState())){ + alarm.setProjectStateName(dictService.getDictNameByCode("projectStatus",alarm.getProjectState())); + } + } + return page; + } + + @Override + public List alarmCount(Long projectId, String alarmStatus) { + List list = this.baseMapper.alarmCount(projectId, alarmStatus); + list = list.stream().filter(i->StrUtil.isNotEmpty(i.getAlarmType())).collect(Collectors.toList()); + for (AlarmTypeCountDTO countDTO : list) { + countDTO.setAlarmTypeName(dictService.getDictNameByCode("alarmType",countDTO.getAlarmType())); + } + return list; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java new file mode 100644 index 0000000..a43f7c1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.casic.missiles.modular.system.mapper.BusEventImageMapper; +import com.casic.missiles.modular.system.service.IBusEventImageService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 事件图片表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +public class BusEventImageServiceImpl extends ServiceImpl implements IBusEventImageService { + + @Override + public boolean saveBusEventImages(Long eventId, List imageList) { + imageList.forEach(i->i.setEventId(eventId)); + return this.saveBatch(imageList); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java new file mode 100644 index 0000000..21e511c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java @@ -0,0 +1,39 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.mapper.BusEventMapper; +import com.casic.missiles.modular.system.service.IBusEventImageService; +import com.casic.missiles.modular.system.service.IBusEventService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; + +/** + *

+ * 事件表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class BusEventServiceImpl extends ServiceImpl implements IBusEventService { + + private final IBusEventImageService busEventImageService; + + + @Override + @Transactional + public boolean saveBusEvent(BusEvent busEvent) { + busEvent.setCreateTime(new Date()); + boolean res = this.save(busEvent); + if(res){ + res = busEventImageService.saveBusEventImages(busEvent.getId(),busEvent.getImageList()); + } + return res; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java new file mode 100644 index 0000000..2bdb63d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java @@ -0,0 +1,102 @@ +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.core.conditions.update.UpdateWrapper; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.casic.missiles.modular.system.mapper.DeviceExtMapper; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 设备扩展信息表(安全树) 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Service +public class DeviceExtServiceImpl extends ServiceImpl implements IDeviceExtService { + + + @Override + public boolean saveDeviceExt(DeviceDetailDTO deviceDetailDTO) { + DeviceExt ext = new DeviceExt(); + ext.setDeviceId(deviceDetailDTO.getId()); + ext.setCameraCode(deviceDetailDTO.getCameraCode()); + ext.setCameraIp(deviceDetailDTO.getCameraIp()); + ext.setCameraPort(deviceDetailDTO.getCameraPort()); + ext.setGasCode(deviceDetailDTO.getGasCode()); + ext.setGasIp(deviceDetailDTO.getGasIp()); + ext.setGasPort(deviceDetailDTO.getGasPort()); + ext.setHatLiningCode(deviceDetailDTO.getHatLiningCode()); + return this.save(ext); + } + + @Override + public boolean updateDeviceExt(DeviceDetailDTO deviceDetailDTO) { + DeviceExt ext = this.selectByDeviceId(deviceDetailDTO.getId()); + ext.setCameraCode(deviceDetailDTO.getCameraCode()); + ext.setCameraIp(deviceDetailDTO.getCameraIp()); + ext.setCameraPort(deviceDetailDTO.getCameraPort()); + ext.setGasCode(deviceDetailDTO.getGasCode()); + ext.setGasIp(deviceDetailDTO.getGasIp()); + ext.setGasPort(deviceDetailDTO.getGasPort()); + ext.setHatLiningCode(deviceDetailDTO.getHatLiningCode()); + return this.updateById(ext); + } + + @Override + public boolean removeByDeviceIds(List deviceIds) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("DEVICE_ID",deviceIds); + return this.remove(queryWrapper); + } + + @Override + public boolean setGasThreshold(String gasIp, String gasPort, String threshold) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.set("GAS_THRESHOLD",threshold); + updateWrapper.eq("GAS_IP",gasIp); + updateWrapper.eq("GAS_PORT",gasPort); + return this.update(updateWrapper); + } + + @Override + public String getGasThreshold(String gasIp, String gasPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("GAS_IP",gasIp); + queryWrapper.eq("GAS_PORT",gasPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getGasThreshold() : null; + } + + private DeviceExt selectByDeviceId(Long deviceId){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVICE_ID",deviceId); + return this.getOne(queryWrapper); + } + + @Override + public Long selectByGasIpPort(String gasIp, String gasPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("GAS_IP",gasIp); + queryWrapper.eq("GAS_PORT",gasPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getDeviceId() : null; + } + + @Override + public Long selectByCameraIpPort(String cameraIp, String cameraPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("CAMERA_IP",cameraIp); + queryWrapper.eq("CAMERA_PORT",cameraPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getDeviceId() : null; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java new file mode 100644 index 0000000..9df79ef --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.mapper.DeviceMapper; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.modular.system.consts.DeviceConst.*; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class DeviceServiceImpl extends ServiceImpl implements IDeviceService { + + private final AbstractDictService dictService; + private final IDeviceExtService deviceExtService; + + private final IProjectDeviceService projectDeviceService; + + @Transactional + @Override + public boolean saveDevice(DeviceDetailDTO deviceDetailDTO) { + deviceDetailDTO.setCreateTime(new Date()); + boolean deviceRes = this.save(deviceDetailDTO); + if(deviceRes && DEVICE_TYPE_TREE.equals(deviceDetailDTO.getDeviceType())){ + deviceRes = deviceExtService.saveDeviceExt(deviceDetailDTO); + } + return deviceRes; + } + + @Transactional + @Override + public boolean updateDevice(DeviceDetailDTO deviceDetailDTO) { + boolean deviceRes = this.updateById(deviceDetailDTO); + if(deviceRes && DEVICE_TYPE_TREE.equals(deviceDetailDTO.getDeviceType())){ + deviceRes = deviceExtService.updateDeviceExt(deviceDetailDTO); + } + return deviceRes; + } + + @Transactional + @Override + public boolean deleteDevices(List deviceIds) { + return this.removeByIds(deviceIds) & deviceExtService.removeByDeviceIds(deviceIds); + } + + @Override + public Page listPage(Page page, QueryWrapper queryWrapper,String status,Long projectId) { + String ID_COLUMN_NAME = "br_device.ID"; + List useDevices = this.selectProjectDevice(null); + List projectDevices; + if(ObjectUtil.isNotEmpty(projectId)){ + projectDevices = this.selectProjectDevice(projectId); + } else { + projectDevices = null; + } + + // 查询使用中的设备(如果传了 projectId,查询 使用中&&此现场) + if(DEVICE_STATUS_USE.equals(status)){ + if(CollUtil.isEmpty(useDevices)){ + return page; + } + if(ObjectUtil.isNotEmpty(projectId) && CollUtil.isEmpty(projectDevices)){ + return page; + } + queryWrapper.in(ID_COLUMN_NAME,useDevices); + if(CollUtil.isNotEmpty(projectDevices)){ + queryWrapper.in(ID_COLUMN_NAME,projectDevices); + } + + } + + // 查询未使用的设备(如果传了 projectId,查询 未使用||此现场) + if(DEVICE_STATUS_NORMAL.equals(status)) { + if (CollUtil.isNotEmpty(useDevices)) { + if (CollUtil.isEmpty(projectDevices)) { + queryWrapper.notIn(ID_COLUMN_NAME, useDevices); + } else { + queryWrapper.and(i -> i.notIn(ID_COLUMN_NAME, useDevices).or().in(ID_COLUMN_NAME, projectDevices)); + } + } + } + + page = this.baseMapper.listDetailPage(page, queryWrapper); + for (DeviceDetailDTO record : page.getRecords()) { + record.setDeviceTypeName(dictService.getDictNameByCode("deviceType",record.getDeviceType())); + record.setIsPowerSupplyName(dictService.getDictNameByCode("isPowerSupply",record.getIsPowerSupply())); + record.setRegisterTime(DateUtil.formatDate(record.getCreateTime())); + record.setStatus(useDevices.contains(record.getId()) ? DEVICE_STATUS_USE : DEVICE_STATUS_NORMAL); + record.setStatusName(dictService.getDictNameByCode("deviceStatus",record.getStatus())); + } + return page; + } + + @Override + public List selectProjectDevice(Long projectId) { + return this.baseMapper.selectProjectDevice(projectId); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceSupportServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceSupportServiceImpl.java new file mode 100644 index 0000000..ffd01ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceSupportServiceImpl.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.mapper.DeviceMapper; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceSupportService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; + +import static com.casic.missiles.modular.system.consts.DeviceConst.DEVICE_TYPE_HAT; + +@Service +@RequiredArgsConstructor +public class DeviceSupportServiceImpl implements IDeviceSupportService { + + private final IDeviceExtService deviceExtService; + + private final DeviceMapper deviceMapper; + + @Override + public Long selectByGasIpPort(String gasIp, String gasPort) { + return deviceExtService.selectByGasIpPort(gasIp, gasPort); + } + + @Override + public List selectHelmetList() { + return deviceMapper.selectHelmetList(DEVICE_TYPE_HAT); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectDeviceServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectDeviceServiceImpl.java new file mode 100644 index 0000000..965f55c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectDeviceServiceImpl.java @@ -0,0 +1,96 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.DataGas; +import com.casic.missiles.modular.system.entity.DataTreeLocation; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.mapper.ProjectDeviceMapper; +import com.casic.missiles.modular.system.service.IDataSupportService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.utils.LngLatUtil; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.stream.Collectors; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class ProjectDeviceServiceImpl extends ServiceImpl implements IProjectDeviceService { + + private final IDataSupportService dataSupportService; + + @Override + public boolean saveProjectDeviceList(Long projectId, List projectDeviceList) { + projectDeviceList.forEach(i->i.setProjectId(projectId)); + return this.saveBatch(projectDeviceList); + } + + @Transactional + @Override + public boolean updateProjectDeviceList(Long projectId, List projectDeviceList) { + return this.deleteByProjectId(projectId) && this.saveProjectDeviceList(projectId, projectDeviceList); + } + + @Override + public boolean deleteByProjectId(Long projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("PROJECT_ID",projectId); + return this.remove(queryWrapper); + } + + @Override + public boolean deleteByProjectIds(List projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("PROJECT_ID",projectId); + return this.remove(queryWrapper); + } + + @Override + public List selectDetailByProjectId(Long projectId) { + return this.baseMapper.selectDetailByProjectId(projectId); + } + + @Override + public Long selectProjectIdByDevice(Long deviceId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVICE_ID",deviceId); + queryWrapper.exists("(select Id FROM br_work_site_info p where p.ID = br_project_device.PROJECT_ID AND p.PROJECT_STATE != '3')"); + ProjectDevice projectDevice = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(projectDevice) ? projectDevice.getProjectId() : null; + } + + @Override + public List selectDeviceLocationList(Long projectId) { + List list = this.baseMapper.selectDeviceLocationList(projectId); + for (DeviceLocationDTO locationDTO : list) { + DataGas dataGas = dataSupportService.getGasData(locationDTO.getDeviceId()); + DataTreeLocation location = dataSupportService.getTreeLocation(locationDTO.getDeviceId(),true); + if(ObjectUtil.isNotEmpty(dataGas)){ + locationDTO.setGasValue(dataGas.getGasValue()); + locationDTO.setTime(DateUtil.formatDateTime(dataGas.getTs())); + } + if(ObjectUtil.isNotEmpty(location)){ + locationDTO.setLng(location.getGdLng()); + locationDTO.setLat(location.getGdLat()); + locationDTO.setLocation(location.getLocation()); + } + } + list = list.stream().filter(i-> StrUtil.isAllNotEmpty(i.getLng(),i.getLat())).collect(Collectors.toList()); + return LngLatUtil.sort(list); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectWorkerServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectWorkerServiceImpl.java new file mode 100644 index 0000000..c3ec86c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectWorkerServiceImpl.java @@ -0,0 +1,101 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.DataHelmetHealth; +import com.casic.missiles.modular.system.entity.DataHelmetLocation; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.mapper.ProjectWorkerMapper; +import com.casic.missiles.modular.system.service.IHelmetSupportService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.system.consts.ProjectConst.WORKER_TYPE_NORMAL; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class ProjectWorkerServiceImpl extends ServiceImpl implements IProjectWorkerService { + + private final AbstractDeptService deptService; + private final IHelmetSupportService helmetSupportService; + + @Override + public boolean saveProjectWorkerList(Long projectId, List projectWorkerList) { + projectWorkerList.forEach(i->i.setProjectId(projectId)); + return this.saveBatch(projectWorkerList); + } + + @Transactional + @Override + public boolean updateProjectWorkerList(Long projectId, List projectWorkerList) { + return this.deleteByProjectId(projectId) && this.saveProjectWorkerList(projectId, projectWorkerList) ; + } + + @Override + public boolean deleteByProjectId(Long projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("PROJECT_ID",projectId); + return this.remove(queryWrapper); + } + + @Override + public boolean deleteByProjectIds(List projectIds) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("PROJECT_ID",projectIds); + return this.remove(queryWrapper); + } + + + @Override + public List selectDetailByProjectId(Long projectId,String workerType) { + List projectWorkerList = this.baseMapper.selectDetailByProjectId(projectId,workerType); + for (ProjectWorker projectWorker : projectWorkerList) { + if(ObjectUtil.isNotEmpty(projectWorker.getWorkerDeptId())){ + projectWorker.setWorkerDeptName(deptService.getDeptName(projectWorker.getWorkerDeptId())); + } + } + return projectWorkerList; + } + + @Override + public List selectWorkerLocationDTO(Long projectId) { + List projectWorkerList = this.baseMapper.selectWorkerLocationList(projectId,WORKER_TYPE_NORMAL); + for (WorkerLocationDTO workerLocationDTO : projectWorkerList) { + if(ObjectUtil.isNotEmpty(workerLocationDTO.getHatId())){ + DataHelmetLocation location = helmetSupportService.getHelmetLocation(workerLocationDTO.getHatId(),true); + if(ObjectUtil.isNotEmpty(location)){ + workerLocationDTO.setLng(location.getGdLng()); + workerLocationDTO.setLat(location.getGdLat()); + workerLocationDTO.setLocation(location.getLocation()); + } + + DataHelmetHealth health = helmetSupportService.getHelmetHealth(workerLocationDTO.getHatId()); + if(ObjectUtil.isNotEmpty(health)){ + workerLocationDTO.setBloodOxygen(health.getBloodOxygen()); + workerLocationDTO.setHeartRate(health.getHeartRate()); + workerLocationDTO.setTime(DateUtil.formatDateTime(health.getTs())); + } + } + } + projectWorkerList = projectWorkerList.stream().filter(i-> StrUtil.isAllNotEmpty(i.getLng(),i.getLat())).collect(Collectors.toList()); + return projectWorkerList; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkSiteInfoServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkSiteInfoServiceImpl.java new file mode 100644 index 0000000..5068da2 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkSiteInfoServiceImpl.java @@ -0,0 +1,151 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.mapper.WorkSiteInfoMapper; +import com.casic.missiles.modular.system.service.*; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.system.consts.ProjectConst.*; + +/** + *

+ * 作业现场表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class WorkSiteInfoServiceImpl extends ServiceImpl implements IWorkSiteInfoService { + + private final IProjectWorkerService projectWorkerService; + private final IProjectDeviceService projectDeviceService; + + private final IWorkerService workerService; + private final IBraceletService braceletService; + + private final AbstractDeptService deptService; + private final AbstractDictService dictService; + @Override + @Transactional + public boolean addWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO) { + workSiteDetailDTO.setCreateTime(new Date()); + workSiteDetailDTO.setUpdateTime(new Date()); + workSiteDetailDTO.setProjectState(PROJECT_STATE_PREPARE); + boolean res = this.save(workSiteDetailDTO); + if(res){ + res = projectDeviceService.saveProjectDeviceList(workSiteDetailDTO.getId(), workSiteDetailDTO.getDeviceList()); + res = res & projectWorkerService.saveProjectWorkerList(workSiteDetailDTO.getId(), workSiteDetailDTO.getWorkerList()); + } + return res; + } + + @Override + @Transactional + public boolean updateWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO) { + workSiteDetailDTO.setUpdateTime(new Date()); + boolean res = this.updateById(workSiteDetailDTO); + if(res){ + res = projectDeviceService.updateProjectDeviceList(workSiteDetailDTO.getId(), workSiteDetailDTO.getDeviceList()); + res = res & projectWorkerService.updateProjectWorkerList(workSiteDetailDTO.getId(), workSiteDetailDTO.getWorkerList()); + } + return res; + } + + @Override + public boolean deleteProjects(List projectIds) { + if(CollUtil.isNotEmpty(projectIds)) { + projectDeviceService.deleteByProjectIds(projectIds); + projectWorkerService.deleteByProjectIds(projectIds); + return this.removeByIds(projectIds); + } + return true; + } + + @Override + public WorkSiteDetailDTO getWorkSiteDetail(Long projectId) { + WorkSiteInfo workSiteInfo = this.getById(projectId); + WorkSiteDetailDTO workSiteDetailDTO = new WorkSiteDetailDTO(); + BeanUtil.copyProperties(workSiteInfo,workSiteDetailDTO,true); + workSiteDetailDTO.setDeviceList(projectDeviceService.selectDetailByProjectId(projectId)); + workSiteDetailDTO.setWorkerList(projectWorkerService.selectDetailByProjectId(projectId,WORKER_TYPE_NORMAL)); + + Worker responseWorker = workerService.selectWorkerDetail(workSiteDetailDTO.getWorkPerson()); + if(ObjectUtil.isNotEmpty(responseWorker)){ + workSiteDetailDTO.setWorkPersonName(responseWorker.getWorkerName()); + workSiteDetailDTO.setWorkPersonPhoneNumber(responseWorker.getPhoneNumber()); + workSiteDetailDTO.setWorkPersonDeptId(responseWorker.getDeptId()); + workSiteDetailDTO.setWorkPersonDeptName(responseWorker.getDeptName()); + } + return workSiteDetailDTO; + } + + @Override + public Page selectListPage(Page page, QueryWrapper queryWrapper) { + page = this.baseMapper.selectListPage(page, queryWrapper); + for (WorkSiteInfo workSiteInfo : page.getRecords()) { + workSiteInfo.setProjectStateName(dictService.getDictNameByCode("projectState", workSiteInfo.getProjectState())); + if(ObjectUtil.isNotEmpty(workSiteInfo.getWorkPersonDeptId())){ + workSiteInfo.setWorkPersonDeptName(deptService.getDeptName(workSiteInfo.getWorkPersonDeptId())); + } + workSiteInfo.setRegisterTime(DateUtil.formatDate(workSiteInfo.getCreateTime())); + } + return page; + } + + @Override + public boolean start(Long projectId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",projectId); + updateWrapper.set("PROJECT_STATE",PROJECT_STATE_WORKING); + updateWrapper.set("START_TIME",new Date()); + boolean res = this.update(updateWrapper); + //braceletService.enableBracelet(selectProjectBracelets(projectId)); + return res; + } + + @Override + public boolean finish(Long projectId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",projectId); + updateWrapper.set("PROJECT_STATE",PROJECT_STATE_FINISH); + updateWrapper.set("FINISH_TIME",new Date()); + boolean res = this.update(updateWrapper); + //braceletService.disableBracelet(selectProjectBracelets(projectId)); + return res; + } + + private List selectProjectBracelets(Long projectId){ + List deviceCodes = new ArrayList<>(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("PROJECT_ID",projectId); + queryWrapper.isNotNull("BRACELET_CODE"); + queryWrapper.select("BRACELET_CODE"); + List res = projectWorkerService.listObjs(queryWrapper); + if(CollUtil.isNotEmpty(res)){ + deviceCodes = res.stream().map(Object::toString).distinct().collect(Collectors.toList()); + } + return deviceCodes; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkerServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkerServiceImpl.java new file mode 100644 index 0000000..6859cff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkerServiceImpl.java @@ -0,0 +1,110 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.mapper.WorkerMapper; +import com.casic.missiles.modular.system.service.*; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.modular.system.consts.ProjectConst.WORKER_TYPE_TEMP; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class WorkerServiceImpl extends ServiceImpl implements IWorkerService { + + private final IProjectWorkerService projectWorkerService; + + private final IProjectDeviceService projectDeviceService; + private final AbstractDictService dictService; + private final AbstractDeptService deptService; + private final IDeviceExtService deviceExtService; + + @Override + @Transactional + public boolean addWorker(Worker worker, Long projectId) { + worker.setCreateTime(new Date()); + boolean res = this.save(worker); + if(res && ObjectUtil.isNotEmpty(projectId)){ + res = projectWorkerService.save(new ProjectWorker(projectId, worker.getId())); + if(ObjectUtil.isNotEmpty(worker.getWorkerAvatar())){ + // todo 向一体机推送人脸图片 + } + } + return res; + } + + @Override + public Page selectListPage(Page page, QueryWrapper ew) { + page = this.baseMapper.selectListPage(page, ew); + for (Worker worker : page.getRecords()) { + wrapperWorker(worker); + } + return page; + } + + private void wrapperWorker(Worker worker) { + if(StrUtil.isNotEmpty(worker.getGender())){ + worker.setGenderName(dictService.getDictNameByCode("sysSex", worker.getGender())); + } + if(ObjectUtil.isNotEmpty(worker.getDeptId())){ + worker.setDeptName(deptService.getDeptName(worker.getDeptId())); + } + worker.setRegisterTime(DateUtil.formatDate(worker.getCreateTime())); + if(StrUtil.isNotEmpty(worker.getStatus())){ + worker.setStatusName(dictService.getDictNameByCode("workerStatus", worker.getStatus())); + } + } + + @Override + public Worker selectWorkerDetail(Long workerId) { + Worker worker = this.getById(workerId); + if(ObjectUtil.isNotEmpty(worker)){ + wrapperWorker(worker); + } + return worker; + } + + @Override + public List faceRegister(String cameraIp, String cameraPort) { + Long deviceId = deviceExtService.selectByCameraIpPort(cameraIp, cameraPort); + if(ObjectUtil.isNotEmpty(deviceId)){ + Long projectId = projectDeviceService.selectProjectIdByDevice(deviceId); + if(ObjectUtil.isNotEmpty(projectId)){ + return this.baseMapper.selectWorkerAvatars(projectId); + } + } + return null; + } + + @Override + public List projectTempWorker(Long projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("WORKER_TYPE",WORKER_TYPE_TEMP); + queryWrapper.exists("(select ID FROM br_project_worker WHERE PROJECT_ID = "+ projectId +")"); + List workers = this.list(queryWrapper); + workers.forEach(this::wrapperWorker); + return workers; + } +} diff --git a/casic_video_283_web/pom.xml b/casic_video_283_web/pom.xml new file mode 100644 index 0000000..feace49 --- /dev/null +++ b/casic_video_283_web/pom.xml @@ -0,0 +1,166 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + casic_video_283_web + 1.0.0 + jar + casic_video_283_web + casic web启动入口 + + + + dev + + true + + + dev + + + + test + + test + + + + prod + + prod + + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-actuator + + + io.micrometer + micrometer-core + + + + + org.springframework.boot + spring-boot-starter-jdbc + + + + com.casic + casic-core + ${core.version} + + + com.casic + casic-admin-core + ${admin.version} + + + io.springfox + springfox-swagger-ui + + + + + com.casic + casic-admin-support + ${admin.version} + + + mysql + mysql-connector-java + ${mysql.driver.version} + + + com.casic + casic-area-starter + ${admin.version} + + + + com.casic + casic_video_283_server + ${pro.version} + + + + org.springframework.boot + spring-boot-starter-tomcat + + + + + casic_video_283_web-${pro.version} + + + org.apache.maven.plugins + maven-jar-plugin + ${maven.jar.plugin.version} + + + + /config/*-*.yml + **/MockController.class + + + + com.casic.missiles.CasicApplication + true + ./ + + + + + + org.apache.maven.plugins + maven-assembly-plugin + ${maven.assembly.plugin.version} + + + make-assembly + package + + single + + + + + + org.apache.maven.plugins + maven-war-plugin + ${maven.war.plugin.version} + + + + + src/main/resources + + + /config/*/* + /config/*-*.yml + + true + + + src/main/java + + **/*.xml + + true + + + + \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java new file mode 100644 index 0000000..73d7799 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.dto; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "AlarmUpload",description = "报警上传") +@Data +public class AlarmUpload { + + @ApiModelProperty(value = "摄像头ip") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + @ApiModelProperty(value = "安全树甲烷设备ip") + private String gasIp; + @ApiModelProperty(value = "安全树甲烷设备端口") + private String gasPort; + @ApiModelProperty(value = "报警值") + private String alarmValue; + @ApiModelProperty(value = "报警时间") + private String alarmTime; + @ApiModelProperty(value = "报警类型") + private String alarmType; + @ApiModelProperty(value = "报警图片") + private String alarmImage; + @ApiModelProperty(value = "报警内容") + private String alarmContent; + + @Override + public String toString() { + return "AlarmUpload{" + + "cameraIp='" + cameraIp + '\'' + + ", cameraPort='" + cameraPort + '\'' + + ", gasIp='" + gasIp + '\'' + + ", gasPort='" + gasPort + '\'' + + ", alarmValue='" + alarmValue + '\'' + + ", alarmTime='" + alarmTime + '\'' + + ", alarmType='" + alarmType + '\'' + + ", alarmImage='" + (StrUtil.isNotEmpty(alarmImage) ? alarmImage.substring(0,50) : "null") + '\'' + + ", alarmContent='" + alarmContent + '\'' + + '}'; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java new file mode 100644 index 0000000..ea518d9 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.modular.system.entity.Device; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("DeviceDetailDTO") +@Data +public class DeviceDetailDTO extends Device { + + @ApiModelProperty(value = "摄像头编号") + private String cameraCode; + + @ApiModelProperty(value = "摄像头IP") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + + @ApiModelProperty(value = "激甲编号") + private String gasCode; + + @ApiModelProperty(value = "激甲IP") + private String gasIp; + + @ApiModelProperty(value = "激甲端口") + private String gasPort; + + @ApiModelProperty(value = "智能帽衬编号") + private String hatLiningCode; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java new file mode 100644 index 0000000..29378ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("WorkSiteDetailDTO") +public class WorkSiteDetailDTO extends WorkSiteInfo { + + @ApiModelProperty(value = "安全树列表",dataType = "ProjectDevice") + private List deviceList; + + @ApiModelProperty(value = "人员列表",dataType = "ProjectWorker") + private List workerList; + + + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java new file mode 100644 index 0000000..6fd7b24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java @@ -0,0 +1,68 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "WorkerLocationDTO",description = "人员位置列表(首页)") +@Data +public class WorkerLocationDTO { + + @ApiModelProperty("人员ID") + private Long workerId; + + @ApiModelProperty("人员姓名") + private String workerName; + + @ApiModelProperty("安全帽编号") + private String hatCode; + + @ApiModelProperty("安全帽ID") + private Long hatId; + + @ApiModelProperty("背心编号") + private String vastCode; + + @ApiModelProperty("手环编号") + private String braceletCode; + + @ApiModelProperty("位置") + private String location; + + @ApiModelProperty("时间") + private String time; + + @ApiModelProperty("经度") + private String lng; + + @ApiModelProperty("纬度") + private String lat; + + @ApiModelProperty("心率") + private String heartRate; + + @ApiModelProperty("血氧") + private String bloodOxygen; + + @ApiModelProperty("一氧化碳") + private String co; + + @ApiModelProperty("甲烷") + private String gas; + + @ApiModelProperty("硫化氢") + private String h2s; + + @ApiModelProperty("氧气") + private String o2; + + @ApiModelProperty("信号") + private String signal; + + @ApiModelProperty("电量") + private String cell; + + @ApiModelProperty("是否报警") + private boolean alarmFlag; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java new file mode 100644 index 0000000..efb4a23 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java @@ -0,0 +1,159 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 报警记录表 + *

+ * + * @author zyj + * @since 2023-05-16 + */ +@Data +@ApiModel("Alarm") +@TableName("br_bus_alarm") +public class BusAlarm implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @ApiModelProperty(value = "设备ID") + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 报警类型 + */ + @ApiModelProperty(value = "报警类型") + @TableField("ALARM_TYPE") + private String alarmType; + + /** + * 报警状态 + */ + @ApiModelProperty(value = "报警状态") + @TableField("ALARM_STATUS") + private String alarmStatus; + + /** + * 报警值 + */ + @ApiModelProperty(value = "报警值") + @TableField("ALARM_VALUE") + private String alarmValue; + + /** + * 报警图片 + */ + @ApiModelProperty(value = "报警图片") + @TableField("ALARM_IMAGE") + private String alarmImage; + + /** + * 报警内容 + */ + @ApiModelProperty(value = "报警内容") + @TableField("ALARM_CONTENT") + private String alarmContent; + + /** + * 报警时间 + */ + @ApiModelProperty(value = "报警时间") + @TableField("ALARM_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date alarmTime; + + /** + * 消警时间 + */ + @ApiModelProperty(value = "消警时间") + @TableField("CANCEL_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + /** + * 报警位置经度 + */ + @ApiModelProperty(value = "报警位置经度") + @TableField("ALARM_LNG") + private String alarmLng; + + /** + * 报警位置纬度 + */ + @ApiModelProperty(value = "报警位置纬度") + @TableField("ALARM_LAT") + private String alarmLat; + + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmStatusName; + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmTypeName; + @ApiModelProperty("作业名称") + @TableField(exist = false) + private String workTitle; + @ApiModelProperty("所属道路") + @TableField(exist = false) + private String workRoad; + @ApiModelProperty("作业状态") + @TableField(exist = false) + private String projectState; + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + @ApiModelProperty("负责人姓名") + @TableField(exist = false) + private String workPersonName; + @ApiModelProperty("负责人联系方式") + @TableField(exist = false) + private String workPersonPhoneNumber; + + + @Override + public String toString() { + return "BusAlarm{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + ", alarmType=" + alarmType + + ", alarmValue=" + alarmValue + + ", alarmStatus=" + alarmStatus + + ", alarmImage=" + alarmImage + + ", alarmContent=" + alarmContent + + ", alarmTime=" + alarmTime + + ", cancelTime=" + cancelTime + + ", alarmLng=" + alarmLng + + ", alarmLat=" + alarmLat + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java new file mode 100644 index 0000000..a0b7543 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + *

+ * 事件表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event") +@Data +@ApiModel("BusEvent") +public class BusEvent implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("事件ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件标题 + */ + @ApiModelProperty("事件名称") + @TableField("EVENT_TITLE") + private String eventTitle; + + /** + * 上报人员 + */ + @ApiModelProperty("上报人员") + @TableField("UPLOAD_NAME") + private String uploadName; + + /** + * 联系方式 + */ + @ApiModelProperty("联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 事件描述 + */ + @ApiModelProperty("事件描述") + @TableField("EVENT_DESCRIPTION") + private String eventDescription; + + @ApiModelProperty("经度") + @TableField("LNG") + private String lng; + + @ApiModelProperty("纬度") + @TableField("LAT") + private String lat; + + /** + * 事件上传时间 + */ + @ApiModelProperty("事件上传时间") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty("事件照片") + @TableField(exist = false) + private List imageList; + + + + @Override + public String toString() { + return "BusEvent{" + + "id=" + id + + ", eventTitle=" + eventTitle + + ", uploadName=" + uploadName + + ", phoneNumber=" + phoneNumber + + ", eventDescription=" + eventDescription + + ", lng=" + lng + + ", lat=" + lat + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java new file mode 100644 index 0000000..1e75245 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 事件图片表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event_image") +@Data +@ApiModel("BusEventImage") +public class BusEventImage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件ID + */ + @TableField("EVENT_ID") + private Long eventId; + + /** + * 报警图片 + */ + @TableField("IMAGE") + @ApiModelProperty("图片url") + private String image; + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java new file mode 100644 index 0000000..df89c70 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.core.base.json.DateDeserializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Device") +@TableName("br_device") +@Data +public class Device implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "设备ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty(value = "设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + /** + * 设备类型 + */ + @ApiModelProperty(value = "设备类型") + @TableField("DEVICE_TYPE") + private String deviceType; + + /** + * 设备批次 + */ + @ApiModelProperty(value = "设备批次") + @TableField("DEVICE_BATCH") + private String deviceBatch; + + /** + * 厂家 + */ + @ApiModelProperty(value = "厂家") + @TableField("MANUFACTURER") + private String manufacturer; + + /** + * 是否供电 + */ + @ApiModelProperty(value = "是否供电") + @TableField("IS_POWER_SUPPLY") + private String isPowerSupply; + + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间",dataType = "Date") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty(value = "设备类型名称") + @TableField(exist = false) + private String deviceTypeName; + + @ApiModelProperty(value = "是否供电名称") + @TableField(exist = false) + private String isPowerSupplyName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", deviceCode=" + deviceCode + + ", deviceType=" + deviceType + + ", deviceBatch=" + deviceBatch + + ", manufacturer=" + manufacturer + + ", isPowerSupply=" + isPowerSupply + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java new file mode 100644 index 0000000..5ee7015 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java @@ -0,0 +1,99 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 设备扩展信息表(安全树) + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Data +@TableName("br_device_ext") +public class DeviceExt implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 摄像头编号 + */ + @TableField("CAMERA_CODE") + private String cameraCode; + + /** + * 摄像头IP + */ + @TableField("CAMERA_IP") + private String cameraIp; + + /** + * 摄像头端口 + */ + @TableField("CAMERA_PORT") + private String cameraPort; + + /** + * 激甲编号 + */ + @TableField("GAS_CODE") + private String gasCode; + + /** + * 激甲IP + */ + @TableField("GAS_IP") + private String gasIp; + + /** + * 激甲端口 + */ + @TableField("GAS_PORT") + private String gasPort; + + /** + * 甲烷报警阈值 + */ + @TableField("GAS_THRESHOLD") + private String gasThreshold; + + @TableField(value = "HAT_LINING_CODE") + private String hatLiningCode; + + + @Override + public String toString() { + return "DeviceExt{" + + "id=" + id + + ", deviceId=" + deviceId + + ", cameraCode=" + cameraCode + + ", cameraIp=" + cameraIp + + ", cameraPort=" + cameraPort + + ", gasCode=" + gasCode + + ", gasIp=" + gasIp + + ", gasPort=" + gasPort + + ", gasThreshold=" + gasThreshold + + ", hatLiningCode=" + hatLiningCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java new file mode 100644 index 0000000..c4f3472 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java @@ -0,0 +1,62 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Data +@ApiModel("ProjectDevice") +@TableName("br_project_device") +public class ProjectDevice implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + @ApiModelProperty("设备ID(新增编辑时传)") + private Long deviceId; + + /** + * 设备编号 + */ + @TableField(exist = false) + @ApiModelProperty("设备编号(详情中展示,新增编辑不用传)") + private String deviceCode; + + @Override + public String toString() { + return "ProjectDevice{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java new file mode 100644 index 0000000..10b23c4 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java @@ -0,0 +1,104 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("ProjectWorker") +@TableName("br_project_worker") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ProjectWorker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 人员ID + */ + @ApiModelProperty("人员ID") + @TableField("WORKER_ID") + private Long workerId; + + /** + * 安全帽编号 + */ + @ApiModelProperty("安全帽编号") + @TableField("HAT_CODE") + private String hatCode; + + /** + * 背心编号 + */ + @ApiModelProperty("背心编号") + @TableField("VAST_CODE") + private String vastCode; + + /** + * 手环编号 + */ + @ApiModelProperty("手环编号") + @TableField("BRACELET_CODE") + private String braceletCode; + + @ApiModelProperty("人员姓名(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerName; + + @ApiModelProperty("人员部门ID(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptId; + + @ApiModelProperty("人员部门名称(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptName; + + @ApiModelProperty("人员联系方式(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerPhoneNumber; + + public ProjectWorker(Long projectId, Long workerId) { + this.projectId = projectId; + this.workerId = workerId; + } + + @Override + public String toString() { + return "ProjectWorker{" + + "id=" + id + + ", projectId=" + projectId + + ", workerId=" + workerId + + ", hatCode=" + hatCode + + ", vastCode=" + vastCode + + ", braceletCode=" + braceletCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java new file mode 100644 index 0000000..fa6f41d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 作业现场表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("WorkSiteInfo") +@TableName("br_work_site_info") +@Data +public class WorkSiteInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("作业现场ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业名称 + */ + @ApiModelProperty("作业名称") + @TableField("WORK_TITLE") + private String workTitle; + + /** + * 责任人 + */ + @ApiModelProperty("责任人(人员ID)") + @TableField("WORK_PERSON") + private Long workPerson; + + /** + * 作业描述 + */ + @ApiModelProperty("作业描述") + @TableField("WORK_SITE_DESC") + private String workSiteDesc; + + /** + * 作业状态 + */ + @ApiModelProperty("作业状态") + @TableField("PROJECT_STATE") + private String projectState; + + /** + * 所属道路 + */ + @ApiModelProperty("所属道路") + @TableField("WORK_ROAD") + private String workRoad; + + @TableField("IMAGE_URL") + private String imageUrl; + + @TableField("CREATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + @TableField("UPDATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("FINISH_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + @ApiModelProperty("负责人姓名(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonName; + + @ApiModelProperty("负责人联系方式(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonPhoneNumber; + + @ApiModelProperty("负责人所属部门ID(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private Long workPersonDeptId; + + @ApiModelProperty("负责人所属部门名称(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonDeptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + + @Override + public String toString() { + return "WorkSiteInfo{" + + "id=" + id + + ", workTitle=" + workTitle + + ", workPerson=" + workPerson + + ", workSiteDesc=" + workSiteDesc + + ", projectState=" + projectState + + ", imageUrl=" + imageUrl + + ", updateTime=" + updateTime + + ", workRoad=" + workRoad + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java new file mode 100644 index 0000000..28a4daa --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java @@ -0,0 +1,147 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Worker") +@TableName("br_worker") +@Data +public class Worker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "人员ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 姓名 + */ + @ApiModelProperty(value = "姓名") + @TableField("WORKER_NAME") + private String workerName; + + /** + * 性别 + */ + @ApiModelProperty(value = "性别") + @TableField("GENDER") + private String gender; + + /** + * 所属部门 + */ + @ApiModelProperty(value = "所属部门(人员管理)") + @TableField("DEPT_ID") + private Long deptId; + + /** + * 所属单位 + */ + @ApiModelProperty(value = "所属单位(入场申请中使用)") + @TableField("OWNER_SHIP") + private String ownerShip; + + /** + * 联系方式 + */ + @ApiModelProperty(value = "联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 证件号 + */ + @ApiModelProperty(value = "证件号") + @TableField("ID_CARD_NUMBER") + private String idCardNumber; + + /** + * 入场原因 + */ + @ApiModelProperty(value = "入场原因(入场申请中使用)") + @TableField("ENTER_REASON") + private String enterReason; + + /** + * 入场人脸照片 + */ + @ApiModelProperty(value = "人脸照片(照片路径)") + @TableField("WORKER_AVATAR") + private String workerAvatar; + + /** + * 申请入场时间 + */ + @ApiModelProperty(value = "注册时间/申请入场时间") + @TableField("CREATE_TIME") + private Date createTime; + + /** + * 人员类型 + */ + @ApiModelProperty(value = "人员类型(区分人员管理和入场申请)") + @TableField("WORKER_TYPE") + private String workerType; + + @ApiModelProperty(value = "性别名称") + @TableField(exist = false) + private String genderName; + + @ApiModelProperty(value = "部门名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @ApiModelProperty(value = "是否注册(0未注册;1已注册)",allowableValues = "0,1") + @TableField(exist = false) + private String isRegister; + + @Override + public String toString() { + return "Worker{" + + "id=" + id + + ", workerName=" + workerName + + ", gender=" + gender + + ", deptId=" + deptId + + ", ownerShip=" + ownerShip + + ", phoneNumber=" + phoneNumber + + ", idCardNumber=" + idCardNumber + + ", enterReason=" + enterReason + + ", workerAvatar=" + workerAvatar + + ", createTime=" + createTime + + ", workerType=" + workerType + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java new file mode 100644 index 0000000..9801742 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警记录表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusAlarmMapper extends BaseMapper { + + Page listPage(Page page,@Param("ew") QueryWrapper queryWrapper); + + void cancelAlarm(@Param("deviceId")Long deviceId,@Param("alarmType") String alarmType); + + List alarmCount(@Param("projectId")Long projectId, @Param("alarmStatus")String alarmStatus); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java new file mode 100644 index 0000000..9590b7d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件图片表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventImageMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java new file mode 100644 index 0000000..3c85edf --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java new file mode 100644 index 0000000..4ca9212 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 设备扩展信息表(安全树) Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface DeviceExtMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java new file mode 100644 index 0000000..444c0c5 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Mapper +public interface DeviceMapper extends BaseMapper { + + Page listDetailPage(Page page,@Param("ew") QueryWrapper ew); + + List selectProjectDevice(@Param("projectId") Long projectId); + + List selectHelmetList(@Param("deviceType")String deviceType); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java new file mode 100644 index 0000000..1d0c14e --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectDeviceMapper extends BaseMapper { + List selectDetailByProjectId(@Param("projectId") Long projectId); + + List selectDeviceLocationList(@Param("projectId") Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java new file mode 100644 index 0000000..58583d1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectWorkerMapper extends BaseMapper { + + List selectDetailByProjectId(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + + List selectWorkerLocationList(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java new file mode 100644 index 0000000..a4934d2 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +/** + *

+ * 作业现场表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkSiteInfoMapper extends BaseMapper { + + Page selectListPage(Page page,@Param("ew") QueryWrapper ew); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java new file mode 100644 index 0000000..258fb12 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkerMapper extends BaseMapper { + + + Page selectListPage(Page page, @Param("ew") QueryWrapper ew); + + List selectWorkerAvatars(@Param("projectId")Long projectId); + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml new file mode 100644 index 0000000..595088a --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml @@ -0,0 +1,58 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml new file mode 100644 index 0000000..fbc3db3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml new file mode 100644 index 0000000..627d573 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml new file mode 100644 index 0000000..5321d1c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml new file mode 100644 index 0000000..94262e1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml @@ -0,0 +1,97 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml new file mode 100644 index 0000000..c6d1c24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml @@ -0,0 +1,29 @@ + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml new file mode 100644 index 0000000..8d2de10 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml new file mode 100644 index 0000000..8f01326 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml @@ -0,0 +1,26 @@ + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml new file mode 100644 index 0000000..3e28b39 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml @@ -0,0 +1,56 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java new file mode 100644 index 0000000..f63c19c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 报警记录表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusAlarmService extends IService { + + boolean alarmUpload(AlarmUpload alarmUpload); + + Page listPage(Page page,QueryWrapper queryWrapper); + + List alarmCount(Long projectId,String alarmStatus); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java new file mode 100644 index 0000000..b1187ed --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 事件图片表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusEventImageService extends IService { + + boolean saveBusEventImages(Long eventId, List imageList); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java new file mode 100644 index 0000000..85c48d0 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 事件表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusEventService extends IService { + + boolean saveBusEvent(BusEvent busEvent); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java new file mode 100644 index 0000000..6fc5361 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 设备扩展信息表(安全树) 服务类 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface IDeviceExtService extends IService { + + boolean saveDeviceExt(DeviceDetailDTO deviceDetailDTO); + + boolean updateDeviceExt(DeviceDetailDTO deviceDetailDTO); + + boolean removeByDeviceIds(List deviceIds); + + boolean setGasThreshold(String gasIp,String gasPort,String threshold); + + String getGasThreshold(String gasIp,String gasPort); + + Long selectByGasIpPort(String gasIp,String gasPort); + + Long selectByCameraIpPort(String cameraIp,String cameraPort); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java new file mode 100644 index 0000000..9e62756 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java @@ -0,0 +1,32 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IDeviceService extends IService { + + boolean saveDevice(DeviceDetailDTO deviceDetailDTO); + + boolean updateDevice(DeviceDetailDTO deviceDetailDTO); + + boolean deleteDevices(List deviceIds); + + Page listPage(Page page, QueryWrapper queryWrapper, String status,Long projectId); + + List selectProjectDevice(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java new file mode 100644 index 0000000..8599411 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IProjectDeviceService extends IService { + + boolean saveProjectDeviceList(Long projectId, List projectDeviceList); + + boolean updateProjectDeviceList(Long projectId, List projectDeviceList); + + boolean deleteByProjectId(Long projectId); + + boolean deleteByProjectIds(List projectIds); + + List selectDetailByProjectId(Long projectId); + + Long selectProjectIdByDevice(Long deviceId); + + List selectDeviceLocationList(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java new file mode 100644 index 0000000..e921bc3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IProjectWorkerService extends IService { + + boolean saveProjectWorkerList(Long projectId, List projectWorkerList); + + boolean updateProjectWorkerList(Long projectId, List projectWorkerList); + + boolean deleteByProjectId(Long projectId); + + boolean deleteByProjectIds(List projectIds); + + List selectDetailByProjectId(Long projectId,String workerType); + + List selectWorkerLocationDTO(Long projectId); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java new file mode 100644 index 0000000..58a8590 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; +/** + *

+ * 作业现场表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IWorkSiteInfoService extends IService { + + boolean addWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO); + + boolean updateWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO); + + boolean deleteProjects(List projectIds); + + WorkSiteDetailDTO getWorkSiteDetail(Long projectId); + + Page selectListPage(Page page, QueryWrapper queryWrapper); + + boolean start(Long projectId); + + boolean finish(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java new file mode 100644 index 0000000..6c6ee98 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.extension.service.IService; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IWorkerService extends IService { + + boolean addWorker(Worker worker,Long projectId); + + Page selectListPage(Page page,QueryWrapper ew); + + Worker selectWorkerDetail(Long workerId); + + List faceRegister(String cameraIp,String cameraPort); + + List projectTempWorker(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java new file mode 100644 index 0000000..b44de1d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.consts.AlarmTypeEnum; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.entity.DataTreeLocation; +import com.casic.missiles.modular.system.mapper.BusAlarmMapper; +import com.casic.missiles.modular.system.service.*; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +/** + *

+ * 报警记录表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +@Slf4j +public class BusAlarmServiceImpl extends ServiceImpl implements IBusAlarmService { + + private final IDeviceExtService deviceExtService; + private final IDeviceService deviceService; + private final IProjectDeviceService projectDeviceService; + + private final ICasicFileService fileService; + + private final AbstractDictService dictService; + private final IDataSupportService dataSupportService; + + @Override + @Transactional + public boolean alarmUpload(AlarmUpload alarmUpload) { + log.info("alarm upload ==> {}",alarmUpload.toString()); + Long deviceId = null; + if(StrUtil.isAllNotBlank(alarmUpload.getGasIp(),alarmUpload.getGasPort())){ + deviceId = deviceExtService.selectByGasIpPort(alarmUpload.getGasIp(),alarmUpload.getGasPort()); + } + if(ObjectUtil.isEmpty(deviceId) && StrUtil.isAllNotBlank(alarmUpload.getCameraIp(),alarmUpload.getCameraPort())){ + deviceId = deviceExtService.selectByCameraIpPort(alarmUpload.getCameraIp(),alarmUpload.getCameraPort()); + } + + if(ObjectUtil.isEmpty(deviceId)){ + return false; + } + + BusAlarm alarm = new BusAlarm(); + alarm.setDeviceId(deviceId); + alarm.setProjectId(projectDeviceService.selectProjectIdByDevice(deviceId)); + alarm.setAlarmValue(alarmUpload.getAlarmValue()); + if(StrUtil.isNotEmpty(alarmUpload.getAlarmTime())){ + alarm.setAlarmTime(DateUtil.parseDateTime(alarmUpload.getAlarmTime())); + }else { + alarm.setAlarmTime(new Date()); + } + + alarm.setAlarmType(alarmUpload.getAlarmType()); + alarm.setAlarmContent(alarmUpload.getAlarmContent()); + if(StrUtil.isNotEmpty(alarmUpload.getAlarmImage())){ + String imgBase64 = "data:image/jpeg;base64," + alarmUpload.getAlarmImage(); + String imageUrl = fileService.saveFile(imgBase64); + alarm.setAlarmImage(imageUrl); + } + alarm.setAlarmStatus(ALARM_STATUS_ON); + + DataTreeLocation treeLocation = dataSupportService.getTreeLocation(deviceId); + if(ObjectUtil.isNotEmpty(treeLocation)){ + alarm.setAlarmLng(treeLocation.getGdLng()); + alarm.setAlarmLat(treeLocation.getGdLat()); + } + + //自动消警 + AlarmTypeEnum alarmTypeEnum = AlarmTypeEnum.getByAlarmType(alarm.getAlarmType()); + if(ObjectUtil.isNotEmpty(alarmTypeEnum) && alarmTypeEnum.isAutoCancel()){ + this.baseMapper.cancelAlarm(deviceId,alarm.getAlarmType()); + } + return this.save(alarm); + } + + @Override + public Page listPage(Page page, QueryWrapper queryWrapper) { + page = this.baseMapper.listPage(page, queryWrapper); + for (BusAlarm alarm : page.getRecords()) { + alarm.setAlarmTypeName(dictService.getDictNameByCode("alarmType",alarm.getAlarmType())); + alarm.setAlarmStatusName(dictService.getDictNameByCode("alarmStatus",alarm.getAlarmStatus())); + if(StrUtil.isNotEmpty(alarm.getProjectState())){ + alarm.setProjectStateName(dictService.getDictNameByCode("projectStatus",alarm.getProjectState())); + } + } + return page; + } + + @Override + public List alarmCount(Long projectId, String alarmStatus) { + List list = this.baseMapper.alarmCount(projectId, alarmStatus); + list = list.stream().filter(i->StrUtil.isNotEmpty(i.getAlarmType())).collect(Collectors.toList()); + for (AlarmTypeCountDTO countDTO : list) { + countDTO.setAlarmTypeName(dictService.getDictNameByCode("alarmType",countDTO.getAlarmType())); + } + return list; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java new file mode 100644 index 0000000..a43f7c1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.casic.missiles.modular.system.mapper.BusEventImageMapper; +import com.casic.missiles.modular.system.service.IBusEventImageService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 事件图片表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +public class BusEventImageServiceImpl extends ServiceImpl implements IBusEventImageService { + + @Override + public boolean saveBusEventImages(Long eventId, List imageList) { + imageList.forEach(i->i.setEventId(eventId)); + return this.saveBatch(imageList); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java new file mode 100644 index 0000000..21e511c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java @@ -0,0 +1,39 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.mapper.BusEventMapper; +import com.casic.missiles.modular.system.service.IBusEventImageService; +import com.casic.missiles.modular.system.service.IBusEventService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; + +/** + *

+ * 事件表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class BusEventServiceImpl extends ServiceImpl implements IBusEventService { + + private final IBusEventImageService busEventImageService; + + + @Override + @Transactional + public boolean saveBusEvent(BusEvent busEvent) { + busEvent.setCreateTime(new Date()); + boolean res = this.save(busEvent); + if(res){ + res = busEventImageService.saveBusEventImages(busEvent.getId(),busEvent.getImageList()); + } + return res; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java new file mode 100644 index 0000000..2bdb63d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java @@ -0,0 +1,102 @@ +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.core.conditions.update.UpdateWrapper; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.casic.missiles.modular.system.mapper.DeviceExtMapper; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 设备扩展信息表(安全树) 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Service +public class DeviceExtServiceImpl extends ServiceImpl implements IDeviceExtService { + + + @Override + public boolean saveDeviceExt(DeviceDetailDTO deviceDetailDTO) { + DeviceExt ext = new DeviceExt(); + ext.setDeviceId(deviceDetailDTO.getId()); + ext.setCameraCode(deviceDetailDTO.getCameraCode()); + ext.setCameraIp(deviceDetailDTO.getCameraIp()); + ext.setCameraPort(deviceDetailDTO.getCameraPort()); + ext.setGasCode(deviceDetailDTO.getGasCode()); + ext.setGasIp(deviceDetailDTO.getGasIp()); + ext.setGasPort(deviceDetailDTO.getGasPort()); + ext.setHatLiningCode(deviceDetailDTO.getHatLiningCode()); + return this.save(ext); + } + + @Override + public boolean updateDeviceExt(DeviceDetailDTO deviceDetailDTO) { + DeviceExt ext = this.selectByDeviceId(deviceDetailDTO.getId()); + ext.setCameraCode(deviceDetailDTO.getCameraCode()); + ext.setCameraIp(deviceDetailDTO.getCameraIp()); + ext.setCameraPort(deviceDetailDTO.getCameraPort()); + ext.setGasCode(deviceDetailDTO.getGasCode()); + ext.setGasIp(deviceDetailDTO.getGasIp()); + ext.setGasPort(deviceDetailDTO.getGasPort()); + ext.setHatLiningCode(deviceDetailDTO.getHatLiningCode()); + return this.updateById(ext); + } + + @Override + public boolean removeByDeviceIds(List deviceIds) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("DEVICE_ID",deviceIds); + return this.remove(queryWrapper); + } + + @Override + public boolean setGasThreshold(String gasIp, String gasPort, String threshold) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.set("GAS_THRESHOLD",threshold); + updateWrapper.eq("GAS_IP",gasIp); + updateWrapper.eq("GAS_PORT",gasPort); + return this.update(updateWrapper); + } + + @Override + public String getGasThreshold(String gasIp, String gasPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("GAS_IP",gasIp); + queryWrapper.eq("GAS_PORT",gasPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getGasThreshold() : null; + } + + private DeviceExt selectByDeviceId(Long deviceId){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVICE_ID",deviceId); + return this.getOne(queryWrapper); + } + + @Override + public Long selectByGasIpPort(String gasIp, String gasPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("GAS_IP",gasIp); + queryWrapper.eq("GAS_PORT",gasPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getDeviceId() : null; + } + + @Override + public Long selectByCameraIpPort(String cameraIp, String cameraPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("CAMERA_IP",cameraIp); + queryWrapper.eq("CAMERA_PORT",cameraPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getDeviceId() : null; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java new file mode 100644 index 0000000..9df79ef --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.mapper.DeviceMapper; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.modular.system.consts.DeviceConst.*; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class DeviceServiceImpl extends ServiceImpl implements IDeviceService { + + private final AbstractDictService dictService; + private final IDeviceExtService deviceExtService; + + private final IProjectDeviceService projectDeviceService; + + @Transactional + @Override + public boolean saveDevice(DeviceDetailDTO deviceDetailDTO) { + deviceDetailDTO.setCreateTime(new Date()); + boolean deviceRes = this.save(deviceDetailDTO); + if(deviceRes && DEVICE_TYPE_TREE.equals(deviceDetailDTO.getDeviceType())){ + deviceRes = deviceExtService.saveDeviceExt(deviceDetailDTO); + } + return deviceRes; + } + + @Transactional + @Override + public boolean updateDevice(DeviceDetailDTO deviceDetailDTO) { + boolean deviceRes = this.updateById(deviceDetailDTO); + if(deviceRes && DEVICE_TYPE_TREE.equals(deviceDetailDTO.getDeviceType())){ + deviceRes = deviceExtService.updateDeviceExt(deviceDetailDTO); + } + return deviceRes; + } + + @Transactional + @Override + public boolean deleteDevices(List deviceIds) { + return this.removeByIds(deviceIds) & deviceExtService.removeByDeviceIds(deviceIds); + } + + @Override + public Page listPage(Page page, QueryWrapper queryWrapper,String status,Long projectId) { + String ID_COLUMN_NAME = "br_device.ID"; + List useDevices = this.selectProjectDevice(null); + List projectDevices; + if(ObjectUtil.isNotEmpty(projectId)){ + projectDevices = this.selectProjectDevice(projectId); + } else { + projectDevices = null; + } + + // 查询使用中的设备(如果传了 projectId,查询 使用中&&此现场) + if(DEVICE_STATUS_USE.equals(status)){ + if(CollUtil.isEmpty(useDevices)){ + return page; + } + if(ObjectUtil.isNotEmpty(projectId) && CollUtil.isEmpty(projectDevices)){ + return page; + } + queryWrapper.in(ID_COLUMN_NAME,useDevices); + if(CollUtil.isNotEmpty(projectDevices)){ + queryWrapper.in(ID_COLUMN_NAME,projectDevices); + } + + } + + // 查询未使用的设备(如果传了 projectId,查询 未使用||此现场) + if(DEVICE_STATUS_NORMAL.equals(status)) { + if (CollUtil.isNotEmpty(useDevices)) { + if (CollUtil.isEmpty(projectDevices)) { + queryWrapper.notIn(ID_COLUMN_NAME, useDevices); + } else { + queryWrapper.and(i -> i.notIn(ID_COLUMN_NAME, useDevices).or().in(ID_COLUMN_NAME, projectDevices)); + } + } + } + + page = this.baseMapper.listDetailPage(page, queryWrapper); + for (DeviceDetailDTO record : page.getRecords()) { + record.setDeviceTypeName(dictService.getDictNameByCode("deviceType",record.getDeviceType())); + record.setIsPowerSupplyName(dictService.getDictNameByCode("isPowerSupply",record.getIsPowerSupply())); + record.setRegisterTime(DateUtil.formatDate(record.getCreateTime())); + record.setStatus(useDevices.contains(record.getId()) ? DEVICE_STATUS_USE : DEVICE_STATUS_NORMAL); + record.setStatusName(dictService.getDictNameByCode("deviceStatus",record.getStatus())); + } + return page; + } + + @Override + public List selectProjectDevice(Long projectId) { + return this.baseMapper.selectProjectDevice(projectId); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceSupportServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceSupportServiceImpl.java new file mode 100644 index 0000000..ffd01ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceSupportServiceImpl.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.mapper.DeviceMapper; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceSupportService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; + +import static com.casic.missiles.modular.system.consts.DeviceConst.DEVICE_TYPE_HAT; + +@Service +@RequiredArgsConstructor +public class DeviceSupportServiceImpl implements IDeviceSupportService { + + private final IDeviceExtService deviceExtService; + + private final DeviceMapper deviceMapper; + + @Override + public Long selectByGasIpPort(String gasIp, String gasPort) { + return deviceExtService.selectByGasIpPort(gasIp, gasPort); + } + + @Override + public List selectHelmetList() { + return deviceMapper.selectHelmetList(DEVICE_TYPE_HAT); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectDeviceServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectDeviceServiceImpl.java new file mode 100644 index 0000000..965f55c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectDeviceServiceImpl.java @@ -0,0 +1,96 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.DataGas; +import com.casic.missiles.modular.system.entity.DataTreeLocation; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.mapper.ProjectDeviceMapper; +import com.casic.missiles.modular.system.service.IDataSupportService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.utils.LngLatUtil; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.stream.Collectors; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class ProjectDeviceServiceImpl extends ServiceImpl implements IProjectDeviceService { + + private final IDataSupportService dataSupportService; + + @Override + public boolean saveProjectDeviceList(Long projectId, List projectDeviceList) { + projectDeviceList.forEach(i->i.setProjectId(projectId)); + return this.saveBatch(projectDeviceList); + } + + @Transactional + @Override + public boolean updateProjectDeviceList(Long projectId, List projectDeviceList) { + return this.deleteByProjectId(projectId) && this.saveProjectDeviceList(projectId, projectDeviceList); + } + + @Override + public boolean deleteByProjectId(Long projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("PROJECT_ID",projectId); + return this.remove(queryWrapper); + } + + @Override + public boolean deleteByProjectIds(List projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("PROJECT_ID",projectId); + return this.remove(queryWrapper); + } + + @Override + public List selectDetailByProjectId(Long projectId) { + return this.baseMapper.selectDetailByProjectId(projectId); + } + + @Override + public Long selectProjectIdByDevice(Long deviceId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVICE_ID",deviceId); + queryWrapper.exists("(select Id FROM br_work_site_info p where p.ID = br_project_device.PROJECT_ID AND p.PROJECT_STATE != '3')"); + ProjectDevice projectDevice = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(projectDevice) ? projectDevice.getProjectId() : null; + } + + @Override + public List selectDeviceLocationList(Long projectId) { + List list = this.baseMapper.selectDeviceLocationList(projectId); + for (DeviceLocationDTO locationDTO : list) { + DataGas dataGas = dataSupportService.getGasData(locationDTO.getDeviceId()); + DataTreeLocation location = dataSupportService.getTreeLocation(locationDTO.getDeviceId(),true); + if(ObjectUtil.isNotEmpty(dataGas)){ + locationDTO.setGasValue(dataGas.getGasValue()); + locationDTO.setTime(DateUtil.formatDateTime(dataGas.getTs())); + } + if(ObjectUtil.isNotEmpty(location)){ + locationDTO.setLng(location.getGdLng()); + locationDTO.setLat(location.getGdLat()); + locationDTO.setLocation(location.getLocation()); + } + } + list = list.stream().filter(i-> StrUtil.isAllNotEmpty(i.getLng(),i.getLat())).collect(Collectors.toList()); + return LngLatUtil.sort(list); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectWorkerServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectWorkerServiceImpl.java new file mode 100644 index 0000000..c3ec86c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectWorkerServiceImpl.java @@ -0,0 +1,101 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.DataHelmetHealth; +import com.casic.missiles.modular.system.entity.DataHelmetLocation; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.mapper.ProjectWorkerMapper; +import com.casic.missiles.modular.system.service.IHelmetSupportService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.system.consts.ProjectConst.WORKER_TYPE_NORMAL; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class ProjectWorkerServiceImpl extends ServiceImpl implements IProjectWorkerService { + + private final AbstractDeptService deptService; + private final IHelmetSupportService helmetSupportService; + + @Override + public boolean saveProjectWorkerList(Long projectId, List projectWorkerList) { + projectWorkerList.forEach(i->i.setProjectId(projectId)); + return this.saveBatch(projectWorkerList); + } + + @Transactional + @Override + public boolean updateProjectWorkerList(Long projectId, List projectWorkerList) { + return this.deleteByProjectId(projectId) && this.saveProjectWorkerList(projectId, projectWorkerList) ; + } + + @Override + public boolean deleteByProjectId(Long projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("PROJECT_ID",projectId); + return this.remove(queryWrapper); + } + + @Override + public boolean deleteByProjectIds(List projectIds) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("PROJECT_ID",projectIds); + return this.remove(queryWrapper); + } + + + @Override + public List selectDetailByProjectId(Long projectId,String workerType) { + List projectWorkerList = this.baseMapper.selectDetailByProjectId(projectId,workerType); + for (ProjectWorker projectWorker : projectWorkerList) { + if(ObjectUtil.isNotEmpty(projectWorker.getWorkerDeptId())){ + projectWorker.setWorkerDeptName(deptService.getDeptName(projectWorker.getWorkerDeptId())); + } + } + return projectWorkerList; + } + + @Override + public List selectWorkerLocationDTO(Long projectId) { + List projectWorkerList = this.baseMapper.selectWorkerLocationList(projectId,WORKER_TYPE_NORMAL); + for (WorkerLocationDTO workerLocationDTO : projectWorkerList) { + if(ObjectUtil.isNotEmpty(workerLocationDTO.getHatId())){ + DataHelmetLocation location = helmetSupportService.getHelmetLocation(workerLocationDTO.getHatId(),true); + if(ObjectUtil.isNotEmpty(location)){ + workerLocationDTO.setLng(location.getGdLng()); + workerLocationDTO.setLat(location.getGdLat()); + workerLocationDTO.setLocation(location.getLocation()); + } + + DataHelmetHealth health = helmetSupportService.getHelmetHealth(workerLocationDTO.getHatId()); + if(ObjectUtil.isNotEmpty(health)){ + workerLocationDTO.setBloodOxygen(health.getBloodOxygen()); + workerLocationDTO.setHeartRate(health.getHeartRate()); + workerLocationDTO.setTime(DateUtil.formatDateTime(health.getTs())); + } + } + } + projectWorkerList = projectWorkerList.stream().filter(i-> StrUtil.isAllNotEmpty(i.getLng(),i.getLat())).collect(Collectors.toList()); + return projectWorkerList; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkSiteInfoServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkSiteInfoServiceImpl.java new file mode 100644 index 0000000..5068da2 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkSiteInfoServiceImpl.java @@ -0,0 +1,151 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.mapper.WorkSiteInfoMapper; +import com.casic.missiles.modular.system.service.*; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.system.consts.ProjectConst.*; + +/** + *

+ * 作业现场表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class WorkSiteInfoServiceImpl extends ServiceImpl implements IWorkSiteInfoService { + + private final IProjectWorkerService projectWorkerService; + private final IProjectDeviceService projectDeviceService; + + private final IWorkerService workerService; + private final IBraceletService braceletService; + + private final AbstractDeptService deptService; + private final AbstractDictService dictService; + @Override + @Transactional + public boolean addWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO) { + workSiteDetailDTO.setCreateTime(new Date()); + workSiteDetailDTO.setUpdateTime(new Date()); + workSiteDetailDTO.setProjectState(PROJECT_STATE_PREPARE); + boolean res = this.save(workSiteDetailDTO); + if(res){ + res = projectDeviceService.saveProjectDeviceList(workSiteDetailDTO.getId(), workSiteDetailDTO.getDeviceList()); + res = res & projectWorkerService.saveProjectWorkerList(workSiteDetailDTO.getId(), workSiteDetailDTO.getWorkerList()); + } + return res; + } + + @Override + @Transactional + public boolean updateWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO) { + workSiteDetailDTO.setUpdateTime(new Date()); + boolean res = this.updateById(workSiteDetailDTO); + if(res){ + res = projectDeviceService.updateProjectDeviceList(workSiteDetailDTO.getId(), workSiteDetailDTO.getDeviceList()); + res = res & projectWorkerService.updateProjectWorkerList(workSiteDetailDTO.getId(), workSiteDetailDTO.getWorkerList()); + } + return res; + } + + @Override + public boolean deleteProjects(List projectIds) { + if(CollUtil.isNotEmpty(projectIds)) { + projectDeviceService.deleteByProjectIds(projectIds); + projectWorkerService.deleteByProjectIds(projectIds); + return this.removeByIds(projectIds); + } + return true; + } + + @Override + public WorkSiteDetailDTO getWorkSiteDetail(Long projectId) { + WorkSiteInfo workSiteInfo = this.getById(projectId); + WorkSiteDetailDTO workSiteDetailDTO = new WorkSiteDetailDTO(); + BeanUtil.copyProperties(workSiteInfo,workSiteDetailDTO,true); + workSiteDetailDTO.setDeviceList(projectDeviceService.selectDetailByProjectId(projectId)); + workSiteDetailDTO.setWorkerList(projectWorkerService.selectDetailByProjectId(projectId,WORKER_TYPE_NORMAL)); + + Worker responseWorker = workerService.selectWorkerDetail(workSiteDetailDTO.getWorkPerson()); + if(ObjectUtil.isNotEmpty(responseWorker)){ + workSiteDetailDTO.setWorkPersonName(responseWorker.getWorkerName()); + workSiteDetailDTO.setWorkPersonPhoneNumber(responseWorker.getPhoneNumber()); + workSiteDetailDTO.setWorkPersonDeptId(responseWorker.getDeptId()); + workSiteDetailDTO.setWorkPersonDeptName(responseWorker.getDeptName()); + } + return workSiteDetailDTO; + } + + @Override + public Page selectListPage(Page page, QueryWrapper queryWrapper) { + page = this.baseMapper.selectListPage(page, queryWrapper); + for (WorkSiteInfo workSiteInfo : page.getRecords()) { + workSiteInfo.setProjectStateName(dictService.getDictNameByCode("projectState", workSiteInfo.getProjectState())); + if(ObjectUtil.isNotEmpty(workSiteInfo.getWorkPersonDeptId())){ + workSiteInfo.setWorkPersonDeptName(deptService.getDeptName(workSiteInfo.getWorkPersonDeptId())); + } + workSiteInfo.setRegisterTime(DateUtil.formatDate(workSiteInfo.getCreateTime())); + } + return page; + } + + @Override + public boolean start(Long projectId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",projectId); + updateWrapper.set("PROJECT_STATE",PROJECT_STATE_WORKING); + updateWrapper.set("START_TIME",new Date()); + boolean res = this.update(updateWrapper); + //braceletService.enableBracelet(selectProjectBracelets(projectId)); + return res; + } + + @Override + public boolean finish(Long projectId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",projectId); + updateWrapper.set("PROJECT_STATE",PROJECT_STATE_FINISH); + updateWrapper.set("FINISH_TIME",new Date()); + boolean res = this.update(updateWrapper); + //braceletService.disableBracelet(selectProjectBracelets(projectId)); + return res; + } + + private List selectProjectBracelets(Long projectId){ + List deviceCodes = new ArrayList<>(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("PROJECT_ID",projectId); + queryWrapper.isNotNull("BRACELET_CODE"); + queryWrapper.select("BRACELET_CODE"); + List res = projectWorkerService.listObjs(queryWrapper); + if(CollUtil.isNotEmpty(res)){ + deviceCodes = res.stream().map(Object::toString).distinct().collect(Collectors.toList()); + } + return deviceCodes; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkerServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkerServiceImpl.java new file mode 100644 index 0000000..6859cff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkerServiceImpl.java @@ -0,0 +1,110 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.mapper.WorkerMapper; +import com.casic.missiles.modular.system.service.*; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.modular.system.consts.ProjectConst.WORKER_TYPE_TEMP; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class WorkerServiceImpl extends ServiceImpl implements IWorkerService { + + private final IProjectWorkerService projectWorkerService; + + private final IProjectDeviceService projectDeviceService; + private final AbstractDictService dictService; + private final AbstractDeptService deptService; + private final IDeviceExtService deviceExtService; + + @Override + @Transactional + public boolean addWorker(Worker worker, Long projectId) { + worker.setCreateTime(new Date()); + boolean res = this.save(worker); + if(res && ObjectUtil.isNotEmpty(projectId)){ + res = projectWorkerService.save(new ProjectWorker(projectId, worker.getId())); + if(ObjectUtil.isNotEmpty(worker.getWorkerAvatar())){ + // todo 向一体机推送人脸图片 + } + } + return res; + } + + @Override + public Page selectListPage(Page page, QueryWrapper ew) { + page = this.baseMapper.selectListPage(page, ew); + for (Worker worker : page.getRecords()) { + wrapperWorker(worker); + } + return page; + } + + private void wrapperWorker(Worker worker) { + if(StrUtil.isNotEmpty(worker.getGender())){ + worker.setGenderName(dictService.getDictNameByCode("sysSex", worker.getGender())); + } + if(ObjectUtil.isNotEmpty(worker.getDeptId())){ + worker.setDeptName(deptService.getDeptName(worker.getDeptId())); + } + worker.setRegisterTime(DateUtil.formatDate(worker.getCreateTime())); + if(StrUtil.isNotEmpty(worker.getStatus())){ + worker.setStatusName(dictService.getDictNameByCode("workerStatus", worker.getStatus())); + } + } + + @Override + public Worker selectWorkerDetail(Long workerId) { + Worker worker = this.getById(workerId); + if(ObjectUtil.isNotEmpty(worker)){ + wrapperWorker(worker); + } + return worker; + } + + @Override + public List faceRegister(String cameraIp, String cameraPort) { + Long deviceId = deviceExtService.selectByCameraIpPort(cameraIp, cameraPort); + if(ObjectUtil.isNotEmpty(deviceId)){ + Long projectId = projectDeviceService.selectProjectIdByDevice(deviceId); + if(ObjectUtil.isNotEmpty(projectId)){ + return this.baseMapper.selectWorkerAvatars(projectId); + } + } + return null; + } + + @Override + public List projectTempWorker(Long projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("WORKER_TYPE",WORKER_TYPE_TEMP); + queryWrapper.exists("(select ID FROM br_project_worker WHERE PROJECT_ID = "+ projectId +")"); + List workers = this.list(queryWrapper); + workers.forEach(this::wrapperWorker); + return workers; + } +} diff --git a/casic_video_283_web/pom.xml b/casic_video_283_web/pom.xml new file mode 100644 index 0000000..feace49 --- /dev/null +++ b/casic_video_283_web/pom.xml @@ -0,0 +1,166 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + casic_video_283_web + 1.0.0 + jar + casic_video_283_web + casic web启动入口 + + + + dev + + true + + + dev + + + + test + + test + + + + prod + + prod + + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-actuator + + + io.micrometer + micrometer-core + + + + + org.springframework.boot + spring-boot-starter-jdbc + + + + com.casic + casic-core + ${core.version} + + + com.casic + casic-admin-core + ${admin.version} + + + io.springfox + springfox-swagger-ui + + + + + com.casic + casic-admin-support + ${admin.version} + + + mysql + mysql-connector-java + ${mysql.driver.version} + + + com.casic + casic-area-starter + ${admin.version} + + + + com.casic + casic_video_283_server + ${pro.version} + + + + org.springframework.boot + spring-boot-starter-tomcat + + + + + casic_video_283_web-${pro.version} + + + org.apache.maven.plugins + maven-jar-plugin + ${maven.jar.plugin.version} + + + + /config/*-*.yml + **/MockController.class + + + + com.casic.missiles.CasicApplication + true + ./ + + + + + + org.apache.maven.plugins + maven-assembly-plugin + ${maven.assembly.plugin.version} + + + make-assembly + package + + single + + + + + + org.apache.maven.plugins + maven-war-plugin + ${maven.war.plugin.version} + + + + + src/main/resources + + + /config/*/* + /config/*-*.yml + + true + + + src/main/java + + **/*.xml + + true + + + + \ No newline at end of file diff --git a/casic_video_283_web/src/main/build/bin/start.bat b/casic_video_283_web/src/main/build/bin/start.bat new file mode 100644 index 0000000..1db4e88 --- /dev/null +++ b/casic_video_283_web/src/main/build/bin/start.bat @@ -0,0 +1,4 @@ +@echo off +title ${project.build.finalName} +java -jar ./lib/${project.build.finalName}.jar +@pause diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java new file mode 100644 index 0000000..73d7799 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.dto; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "AlarmUpload",description = "报警上传") +@Data +public class AlarmUpload { + + @ApiModelProperty(value = "摄像头ip") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + @ApiModelProperty(value = "安全树甲烷设备ip") + private String gasIp; + @ApiModelProperty(value = "安全树甲烷设备端口") + private String gasPort; + @ApiModelProperty(value = "报警值") + private String alarmValue; + @ApiModelProperty(value = "报警时间") + private String alarmTime; + @ApiModelProperty(value = "报警类型") + private String alarmType; + @ApiModelProperty(value = "报警图片") + private String alarmImage; + @ApiModelProperty(value = "报警内容") + private String alarmContent; + + @Override + public String toString() { + return "AlarmUpload{" + + "cameraIp='" + cameraIp + '\'' + + ", cameraPort='" + cameraPort + '\'' + + ", gasIp='" + gasIp + '\'' + + ", gasPort='" + gasPort + '\'' + + ", alarmValue='" + alarmValue + '\'' + + ", alarmTime='" + alarmTime + '\'' + + ", alarmType='" + alarmType + '\'' + + ", alarmImage='" + (StrUtil.isNotEmpty(alarmImage) ? alarmImage.substring(0,50) : "null") + '\'' + + ", alarmContent='" + alarmContent + '\'' + + '}'; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java new file mode 100644 index 0000000..ea518d9 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.modular.system.entity.Device; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("DeviceDetailDTO") +@Data +public class DeviceDetailDTO extends Device { + + @ApiModelProperty(value = "摄像头编号") + private String cameraCode; + + @ApiModelProperty(value = "摄像头IP") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + + @ApiModelProperty(value = "激甲编号") + private String gasCode; + + @ApiModelProperty(value = "激甲IP") + private String gasIp; + + @ApiModelProperty(value = "激甲端口") + private String gasPort; + + @ApiModelProperty(value = "智能帽衬编号") + private String hatLiningCode; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java new file mode 100644 index 0000000..29378ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("WorkSiteDetailDTO") +public class WorkSiteDetailDTO extends WorkSiteInfo { + + @ApiModelProperty(value = "安全树列表",dataType = "ProjectDevice") + private List deviceList; + + @ApiModelProperty(value = "人员列表",dataType = "ProjectWorker") + private List workerList; + + + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java new file mode 100644 index 0000000..6fd7b24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java @@ -0,0 +1,68 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "WorkerLocationDTO",description = "人员位置列表(首页)") +@Data +public class WorkerLocationDTO { + + @ApiModelProperty("人员ID") + private Long workerId; + + @ApiModelProperty("人员姓名") + private String workerName; + + @ApiModelProperty("安全帽编号") + private String hatCode; + + @ApiModelProperty("安全帽ID") + private Long hatId; + + @ApiModelProperty("背心编号") + private String vastCode; + + @ApiModelProperty("手环编号") + private String braceletCode; + + @ApiModelProperty("位置") + private String location; + + @ApiModelProperty("时间") + private String time; + + @ApiModelProperty("经度") + private String lng; + + @ApiModelProperty("纬度") + private String lat; + + @ApiModelProperty("心率") + private String heartRate; + + @ApiModelProperty("血氧") + private String bloodOxygen; + + @ApiModelProperty("一氧化碳") + private String co; + + @ApiModelProperty("甲烷") + private String gas; + + @ApiModelProperty("硫化氢") + private String h2s; + + @ApiModelProperty("氧气") + private String o2; + + @ApiModelProperty("信号") + private String signal; + + @ApiModelProperty("电量") + private String cell; + + @ApiModelProperty("是否报警") + private boolean alarmFlag; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java new file mode 100644 index 0000000..efb4a23 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java @@ -0,0 +1,159 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 报警记录表 + *

+ * + * @author zyj + * @since 2023-05-16 + */ +@Data +@ApiModel("Alarm") +@TableName("br_bus_alarm") +public class BusAlarm implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @ApiModelProperty(value = "设备ID") + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 报警类型 + */ + @ApiModelProperty(value = "报警类型") + @TableField("ALARM_TYPE") + private String alarmType; + + /** + * 报警状态 + */ + @ApiModelProperty(value = "报警状态") + @TableField("ALARM_STATUS") + private String alarmStatus; + + /** + * 报警值 + */ + @ApiModelProperty(value = "报警值") + @TableField("ALARM_VALUE") + private String alarmValue; + + /** + * 报警图片 + */ + @ApiModelProperty(value = "报警图片") + @TableField("ALARM_IMAGE") + private String alarmImage; + + /** + * 报警内容 + */ + @ApiModelProperty(value = "报警内容") + @TableField("ALARM_CONTENT") + private String alarmContent; + + /** + * 报警时间 + */ + @ApiModelProperty(value = "报警时间") + @TableField("ALARM_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date alarmTime; + + /** + * 消警时间 + */ + @ApiModelProperty(value = "消警时间") + @TableField("CANCEL_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + /** + * 报警位置经度 + */ + @ApiModelProperty(value = "报警位置经度") + @TableField("ALARM_LNG") + private String alarmLng; + + /** + * 报警位置纬度 + */ + @ApiModelProperty(value = "报警位置纬度") + @TableField("ALARM_LAT") + private String alarmLat; + + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmStatusName; + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmTypeName; + @ApiModelProperty("作业名称") + @TableField(exist = false) + private String workTitle; + @ApiModelProperty("所属道路") + @TableField(exist = false) + private String workRoad; + @ApiModelProperty("作业状态") + @TableField(exist = false) + private String projectState; + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + @ApiModelProperty("负责人姓名") + @TableField(exist = false) + private String workPersonName; + @ApiModelProperty("负责人联系方式") + @TableField(exist = false) + private String workPersonPhoneNumber; + + + @Override + public String toString() { + return "BusAlarm{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + ", alarmType=" + alarmType + + ", alarmValue=" + alarmValue + + ", alarmStatus=" + alarmStatus + + ", alarmImage=" + alarmImage + + ", alarmContent=" + alarmContent + + ", alarmTime=" + alarmTime + + ", cancelTime=" + cancelTime + + ", alarmLng=" + alarmLng + + ", alarmLat=" + alarmLat + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java new file mode 100644 index 0000000..a0b7543 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + *

+ * 事件表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event") +@Data +@ApiModel("BusEvent") +public class BusEvent implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("事件ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件标题 + */ + @ApiModelProperty("事件名称") + @TableField("EVENT_TITLE") + private String eventTitle; + + /** + * 上报人员 + */ + @ApiModelProperty("上报人员") + @TableField("UPLOAD_NAME") + private String uploadName; + + /** + * 联系方式 + */ + @ApiModelProperty("联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 事件描述 + */ + @ApiModelProperty("事件描述") + @TableField("EVENT_DESCRIPTION") + private String eventDescription; + + @ApiModelProperty("经度") + @TableField("LNG") + private String lng; + + @ApiModelProperty("纬度") + @TableField("LAT") + private String lat; + + /** + * 事件上传时间 + */ + @ApiModelProperty("事件上传时间") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty("事件照片") + @TableField(exist = false) + private List imageList; + + + + @Override + public String toString() { + return "BusEvent{" + + "id=" + id + + ", eventTitle=" + eventTitle + + ", uploadName=" + uploadName + + ", phoneNumber=" + phoneNumber + + ", eventDescription=" + eventDescription + + ", lng=" + lng + + ", lat=" + lat + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java new file mode 100644 index 0000000..1e75245 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 事件图片表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event_image") +@Data +@ApiModel("BusEventImage") +public class BusEventImage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件ID + */ + @TableField("EVENT_ID") + private Long eventId; + + /** + * 报警图片 + */ + @TableField("IMAGE") + @ApiModelProperty("图片url") + private String image; + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java new file mode 100644 index 0000000..df89c70 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.core.base.json.DateDeserializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Device") +@TableName("br_device") +@Data +public class Device implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "设备ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty(value = "设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + /** + * 设备类型 + */ + @ApiModelProperty(value = "设备类型") + @TableField("DEVICE_TYPE") + private String deviceType; + + /** + * 设备批次 + */ + @ApiModelProperty(value = "设备批次") + @TableField("DEVICE_BATCH") + private String deviceBatch; + + /** + * 厂家 + */ + @ApiModelProperty(value = "厂家") + @TableField("MANUFACTURER") + private String manufacturer; + + /** + * 是否供电 + */ + @ApiModelProperty(value = "是否供电") + @TableField("IS_POWER_SUPPLY") + private String isPowerSupply; + + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间",dataType = "Date") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty(value = "设备类型名称") + @TableField(exist = false) + private String deviceTypeName; + + @ApiModelProperty(value = "是否供电名称") + @TableField(exist = false) + private String isPowerSupplyName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", deviceCode=" + deviceCode + + ", deviceType=" + deviceType + + ", deviceBatch=" + deviceBatch + + ", manufacturer=" + manufacturer + + ", isPowerSupply=" + isPowerSupply + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java new file mode 100644 index 0000000..5ee7015 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java @@ -0,0 +1,99 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 设备扩展信息表(安全树) + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Data +@TableName("br_device_ext") +public class DeviceExt implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 摄像头编号 + */ + @TableField("CAMERA_CODE") + private String cameraCode; + + /** + * 摄像头IP + */ + @TableField("CAMERA_IP") + private String cameraIp; + + /** + * 摄像头端口 + */ + @TableField("CAMERA_PORT") + private String cameraPort; + + /** + * 激甲编号 + */ + @TableField("GAS_CODE") + private String gasCode; + + /** + * 激甲IP + */ + @TableField("GAS_IP") + private String gasIp; + + /** + * 激甲端口 + */ + @TableField("GAS_PORT") + private String gasPort; + + /** + * 甲烷报警阈值 + */ + @TableField("GAS_THRESHOLD") + private String gasThreshold; + + @TableField(value = "HAT_LINING_CODE") + private String hatLiningCode; + + + @Override + public String toString() { + return "DeviceExt{" + + "id=" + id + + ", deviceId=" + deviceId + + ", cameraCode=" + cameraCode + + ", cameraIp=" + cameraIp + + ", cameraPort=" + cameraPort + + ", gasCode=" + gasCode + + ", gasIp=" + gasIp + + ", gasPort=" + gasPort + + ", gasThreshold=" + gasThreshold + + ", hatLiningCode=" + hatLiningCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java new file mode 100644 index 0000000..c4f3472 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java @@ -0,0 +1,62 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Data +@ApiModel("ProjectDevice") +@TableName("br_project_device") +public class ProjectDevice implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + @ApiModelProperty("设备ID(新增编辑时传)") + private Long deviceId; + + /** + * 设备编号 + */ + @TableField(exist = false) + @ApiModelProperty("设备编号(详情中展示,新增编辑不用传)") + private String deviceCode; + + @Override + public String toString() { + return "ProjectDevice{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java new file mode 100644 index 0000000..10b23c4 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java @@ -0,0 +1,104 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("ProjectWorker") +@TableName("br_project_worker") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ProjectWorker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 人员ID + */ + @ApiModelProperty("人员ID") + @TableField("WORKER_ID") + private Long workerId; + + /** + * 安全帽编号 + */ + @ApiModelProperty("安全帽编号") + @TableField("HAT_CODE") + private String hatCode; + + /** + * 背心编号 + */ + @ApiModelProperty("背心编号") + @TableField("VAST_CODE") + private String vastCode; + + /** + * 手环编号 + */ + @ApiModelProperty("手环编号") + @TableField("BRACELET_CODE") + private String braceletCode; + + @ApiModelProperty("人员姓名(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerName; + + @ApiModelProperty("人员部门ID(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptId; + + @ApiModelProperty("人员部门名称(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptName; + + @ApiModelProperty("人员联系方式(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerPhoneNumber; + + public ProjectWorker(Long projectId, Long workerId) { + this.projectId = projectId; + this.workerId = workerId; + } + + @Override + public String toString() { + return "ProjectWorker{" + + "id=" + id + + ", projectId=" + projectId + + ", workerId=" + workerId + + ", hatCode=" + hatCode + + ", vastCode=" + vastCode + + ", braceletCode=" + braceletCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java new file mode 100644 index 0000000..fa6f41d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 作业现场表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("WorkSiteInfo") +@TableName("br_work_site_info") +@Data +public class WorkSiteInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("作业现场ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业名称 + */ + @ApiModelProperty("作业名称") + @TableField("WORK_TITLE") + private String workTitle; + + /** + * 责任人 + */ + @ApiModelProperty("责任人(人员ID)") + @TableField("WORK_PERSON") + private Long workPerson; + + /** + * 作业描述 + */ + @ApiModelProperty("作业描述") + @TableField("WORK_SITE_DESC") + private String workSiteDesc; + + /** + * 作业状态 + */ + @ApiModelProperty("作业状态") + @TableField("PROJECT_STATE") + private String projectState; + + /** + * 所属道路 + */ + @ApiModelProperty("所属道路") + @TableField("WORK_ROAD") + private String workRoad; + + @TableField("IMAGE_URL") + private String imageUrl; + + @TableField("CREATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + @TableField("UPDATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("FINISH_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + @ApiModelProperty("负责人姓名(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonName; + + @ApiModelProperty("负责人联系方式(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonPhoneNumber; + + @ApiModelProperty("负责人所属部门ID(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private Long workPersonDeptId; + + @ApiModelProperty("负责人所属部门名称(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonDeptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + + @Override + public String toString() { + return "WorkSiteInfo{" + + "id=" + id + + ", workTitle=" + workTitle + + ", workPerson=" + workPerson + + ", workSiteDesc=" + workSiteDesc + + ", projectState=" + projectState + + ", imageUrl=" + imageUrl + + ", updateTime=" + updateTime + + ", workRoad=" + workRoad + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java new file mode 100644 index 0000000..28a4daa --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java @@ -0,0 +1,147 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Worker") +@TableName("br_worker") +@Data +public class Worker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "人员ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 姓名 + */ + @ApiModelProperty(value = "姓名") + @TableField("WORKER_NAME") + private String workerName; + + /** + * 性别 + */ + @ApiModelProperty(value = "性别") + @TableField("GENDER") + private String gender; + + /** + * 所属部门 + */ + @ApiModelProperty(value = "所属部门(人员管理)") + @TableField("DEPT_ID") + private Long deptId; + + /** + * 所属单位 + */ + @ApiModelProperty(value = "所属单位(入场申请中使用)") + @TableField("OWNER_SHIP") + private String ownerShip; + + /** + * 联系方式 + */ + @ApiModelProperty(value = "联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 证件号 + */ + @ApiModelProperty(value = "证件号") + @TableField("ID_CARD_NUMBER") + private String idCardNumber; + + /** + * 入场原因 + */ + @ApiModelProperty(value = "入场原因(入场申请中使用)") + @TableField("ENTER_REASON") + private String enterReason; + + /** + * 入场人脸照片 + */ + @ApiModelProperty(value = "人脸照片(照片路径)") + @TableField("WORKER_AVATAR") + private String workerAvatar; + + /** + * 申请入场时间 + */ + @ApiModelProperty(value = "注册时间/申请入场时间") + @TableField("CREATE_TIME") + private Date createTime; + + /** + * 人员类型 + */ + @ApiModelProperty(value = "人员类型(区分人员管理和入场申请)") + @TableField("WORKER_TYPE") + private String workerType; + + @ApiModelProperty(value = "性别名称") + @TableField(exist = false) + private String genderName; + + @ApiModelProperty(value = "部门名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @ApiModelProperty(value = "是否注册(0未注册;1已注册)",allowableValues = "0,1") + @TableField(exist = false) + private String isRegister; + + @Override + public String toString() { + return "Worker{" + + "id=" + id + + ", workerName=" + workerName + + ", gender=" + gender + + ", deptId=" + deptId + + ", ownerShip=" + ownerShip + + ", phoneNumber=" + phoneNumber + + ", idCardNumber=" + idCardNumber + + ", enterReason=" + enterReason + + ", workerAvatar=" + workerAvatar + + ", createTime=" + createTime + + ", workerType=" + workerType + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java new file mode 100644 index 0000000..9801742 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警记录表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusAlarmMapper extends BaseMapper { + + Page listPage(Page page,@Param("ew") QueryWrapper queryWrapper); + + void cancelAlarm(@Param("deviceId")Long deviceId,@Param("alarmType") String alarmType); + + List alarmCount(@Param("projectId")Long projectId, @Param("alarmStatus")String alarmStatus); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java new file mode 100644 index 0000000..9590b7d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件图片表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventImageMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java new file mode 100644 index 0000000..3c85edf --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java new file mode 100644 index 0000000..4ca9212 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 设备扩展信息表(安全树) Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface DeviceExtMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java new file mode 100644 index 0000000..444c0c5 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Mapper +public interface DeviceMapper extends BaseMapper { + + Page listDetailPage(Page page,@Param("ew") QueryWrapper ew); + + List selectProjectDevice(@Param("projectId") Long projectId); + + List selectHelmetList(@Param("deviceType")String deviceType); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java new file mode 100644 index 0000000..1d0c14e --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectDeviceMapper extends BaseMapper { + List selectDetailByProjectId(@Param("projectId") Long projectId); + + List selectDeviceLocationList(@Param("projectId") Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java new file mode 100644 index 0000000..58583d1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectWorkerMapper extends BaseMapper { + + List selectDetailByProjectId(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + + List selectWorkerLocationList(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java new file mode 100644 index 0000000..a4934d2 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +/** + *

+ * 作业现场表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkSiteInfoMapper extends BaseMapper { + + Page selectListPage(Page page,@Param("ew") QueryWrapper ew); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java new file mode 100644 index 0000000..258fb12 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkerMapper extends BaseMapper { + + + Page selectListPage(Page page, @Param("ew") QueryWrapper ew); + + List selectWorkerAvatars(@Param("projectId")Long projectId); + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml new file mode 100644 index 0000000..595088a --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml @@ -0,0 +1,58 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml new file mode 100644 index 0000000..fbc3db3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml new file mode 100644 index 0000000..627d573 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml new file mode 100644 index 0000000..5321d1c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml new file mode 100644 index 0000000..94262e1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml @@ -0,0 +1,97 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml new file mode 100644 index 0000000..c6d1c24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml @@ -0,0 +1,29 @@ + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml new file mode 100644 index 0000000..8d2de10 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml new file mode 100644 index 0000000..8f01326 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml @@ -0,0 +1,26 @@ + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml new file mode 100644 index 0000000..3e28b39 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml @@ -0,0 +1,56 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java new file mode 100644 index 0000000..f63c19c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 报警记录表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusAlarmService extends IService { + + boolean alarmUpload(AlarmUpload alarmUpload); + + Page listPage(Page page,QueryWrapper queryWrapper); + + List alarmCount(Long projectId,String alarmStatus); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java new file mode 100644 index 0000000..b1187ed --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 事件图片表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusEventImageService extends IService { + + boolean saveBusEventImages(Long eventId, List imageList); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java new file mode 100644 index 0000000..85c48d0 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 事件表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusEventService extends IService { + + boolean saveBusEvent(BusEvent busEvent); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java new file mode 100644 index 0000000..6fc5361 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 设备扩展信息表(安全树) 服务类 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface IDeviceExtService extends IService { + + boolean saveDeviceExt(DeviceDetailDTO deviceDetailDTO); + + boolean updateDeviceExt(DeviceDetailDTO deviceDetailDTO); + + boolean removeByDeviceIds(List deviceIds); + + boolean setGasThreshold(String gasIp,String gasPort,String threshold); + + String getGasThreshold(String gasIp,String gasPort); + + Long selectByGasIpPort(String gasIp,String gasPort); + + Long selectByCameraIpPort(String cameraIp,String cameraPort); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java new file mode 100644 index 0000000..9e62756 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java @@ -0,0 +1,32 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IDeviceService extends IService { + + boolean saveDevice(DeviceDetailDTO deviceDetailDTO); + + boolean updateDevice(DeviceDetailDTO deviceDetailDTO); + + boolean deleteDevices(List deviceIds); + + Page listPage(Page page, QueryWrapper queryWrapper, String status,Long projectId); + + List selectProjectDevice(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java new file mode 100644 index 0000000..8599411 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IProjectDeviceService extends IService { + + boolean saveProjectDeviceList(Long projectId, List projectDeviceList); + + boolean updateProjectDeviceList(Long projectId, List projectDeviceList); + + boolean deleteByProjectId(Long projectId); + + boolean deleteByProjectIds(List projectIds); + + List selectDetailByProjectId(Long projectId); + + Long selectProjectIdByDevice(Long deviceId); + + List selectDeviceLocationList(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java new file mode 100644 index 0000000..e921bc3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IProjectWorkerService extends IService { + + boolean saveProjectWorkerList(Long projectId, List projectWorkerList); + + boolean updateProjectWorkerList(Long projectId, List projectWorkerList); + + boolean deleteByProjectId(Long projectId); + + boolean deleteByProjectIds(List projectIds); + + List selectDetailByProjectId(Long projectId,String workerType); + + List selectWorkerLocationDTO(Long projectId); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java new file mode 100644 index 0000000..58a8590 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; +/** + *

+ * 作业现场表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IWorkSiteInfoService extends IService { + + boolean addWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO); + + boolean updateWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO); + + boolean deleteProjects(List projectIds); + + WorkSiteDetailDTO getWorkSiteDetail(Long projectId); + + Page selectListPage(Page page, QueryWrapper queryWrapper); + + boolean start(Long projectId); + + boolean finish(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java new file mode 100644 index 0000000..6c6ee98 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.extension.service.IService; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IWorkerService extends IService { + + boolean addWorker(Worker worker,Long projectId); + + Page selectListPage(Page page,QueryWrapper ew); + + Worker selectWorkerDetail(Long workerId); + + List faceRegister(String cameraIp,String cameraPort); + + List projectTempWorker(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java new file mode 100644 index 0000000..b44de1d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.consts.AlarmTypeEnum; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.entity.DataTreeLocation; +import com.casic.missiles.modular.system.mapper.BusAlarmMapper; +import com.casic.missiles.modular.system.service.*; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +/** + *

+ * 报警记录表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +@Slf4j +public class BusAlarmServiceImpl extends ServiceImpl implements IBusAlarmService { + + private final IDeviceExtService deviceExtService; + private final IDeviceService deviceService; + private final IProjectDeviceService projectDeviceService; + + private final ICasicFileService fileService; + + private final AbstractDictService dictService; + private final IDataSupportService dataSupportService; + + @Override + @Transactional + public boolean alarmUpload(AlarmUpload alarmUpload) { + log.info("alarm upload ==> {}",alarmUpload.toString()); + Long deviceId = null; + if(StrUtil.isAllNotBlank(alarmUpload.getGasIp(),alarmUpload.getGasPort())){ + deviceId = deviceExtService.selectByGasIpPort(alarmUpload.getGasIp(),alarmUpload.getGasPort()); + } + if(ObjectUtil.isEmpty(deviceId) && StrUtil.isAllNotBlank(alarmUpload.getCameraIp(),alarmUpload.getCameraPort())){ + deviceId = deviceExtService.selectByCameraIpPort(alarmUpload.getCameraIp(),alarmUpload.getCameraPort()); + } + + if(ObjectUtil.isEmpty(deviceId)){ + return false; + } + + BusAlarm alarm = new BusAlarm(); + alarm.setDeviceId(deviceId); + alarm.setProjectId(projectDeviceService.selectProjectIdByDevice(deviceId)); + alarm.setAlarmValue(alarmUpload.getAlarmValue()); + if(StrUtil.isNotEmpty(alarmUpload.getAlarmTime())){ + alarm.setAlarmTime(DateUtil.parseDateTime(alarmUpload.getAlarmTime())); + }else { + alarm.setAlarmTime(new Date()); + } + + alarm.setAlarmType(alarmUpload.getAlarmType()); + alarm.setAlarmContent(alarmUpload.getAlarmContent()); + if(StrUtil.isNotEmpty(alarmUpload.getAlarmImage())){ + String imgBase64 = "data:image/jpeg;base64," + alarmUpload.getAlarmImage(); + String imageUrl = fileService.saveFile(imgBase64); + alarm.setAlarmImage(imageUrl); + } + alarm.setAlarmStatus(ALARM_STATUS_ON); + + DataTreeLocation treeLocation = dataSupportService.getTreeLocation(deviceId); + if(ObjectUtil.isNotEmpty(treeLocation)){ + alarm.setAlarmLng(treeLocation.getGdLng()); + alarm.setAlarmLat(treeLocation.getGdLat()); + } + + //自动消警 + AlarmTypeEnum alarmTypeEnum = AlarmTypeEnum.getByAlarmType(alarm.getAlarmType()); + if(ObjectUtil.isNotEmpty(alarmTypeEnum) && alarmTypeEnum.isAutoCancel()){ + this.baseMapper.cancelAlarm(deviceId,alarm.getAlarmType()); + } + return this.save(alarm); + } + + @Override + public Page listPage(Page page, QueryWrapper queryWrapper) { + page = this.baseMapper.listPage(page, queryWrapper); + for (BusAlarm alarm : page.getRecords()) { + alarm.setAlarmTypeName(dictService.getDictNameByCode("alarmType",alarm.getAlarmType())); + alarm.setAlarmStatusName(dictService.getDictNameByCode("alarmStatus",alarm.getAlarmStatus())); + if(StrUtil.isNotEmpty(alarm.getProjectState())){ + alarm.setProjectStateName(dictService.getDictNameByCode("projectStatus",alarm.getProjectState())); + } + } + return page; + } + + @Override + public List alarmCount(Long projectId, String alarmStatus) { + List list = this.baseMapper.alarmCount(projectId, alarmStatus); + list = list.stream().filter(i->StrUtil.isNotEmpty(i.getAlarmType())).collect(Collectors.toList()); + for (AlarmTypeCountDTO countDTO : list) { + countDTO.setAlarmTypeName(dictService.getDictNameByCode("alarmType",countDTO.getAlarmType())); + } + return list; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java new file mode 100644 index 0000000..a43f7c1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.casic.missiles.modular.system.mapper.BusEventImageMapper; +import com.casic.missiles.modular.system.service.IBusEventImageService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 事件图片表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +public class BusEventImageServiceImpl extends ServiceImpl implements IBusEventImageService { + + @Override + public boolean saveBusEventImages(Long eventId, List imageList) { + imageList.forEach(i->i.setEventId(eventId)); + return this.saveBatch(imageList); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java new file mode 100644 index 0000000..21e511c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java @@ -0,0 +1,39 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.mapper.BusEventMapper; +import com.casic.missiles.modular.system.service.IBusEventImageService; +import com.casic.missiles.modular.system.service.IBusEventService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; + +/** + *

+ * 事件表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class BusEventServiceImpl extends ServiceImpl implements IBusEventService { + + private final IBusEventImageService busEventImageService; + + + @Override + @Transactional + public boolean saveBusEvent(BusEvent busEvent) { + busEvent.setCreateTime(new Date()); + boolean res = this.save(busEvent); + if(res){ + res = busEventImageService.saveBusEventImages(busEvent.getId(),busEvent.getImageList()); + } + return res; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java new file mode 100644 index 0000000..2bdb63d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java @@ -0,0 +1,102 @@ +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.core.conditions.update.UpdateWrapper; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.casic.missiles.modular.system.mapper.DeviceExtMapper; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 设备扩展信息表(安全树) 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Service +public class DeviceExtServiceImpl extends ServiceImpl implements IDeviceExtService { + + + @Override + public boolean saveDeviceExt(DeviceDetailDTO deviceDetailDTO) { + DeviceExt ext = new DeviceExt(); + ext.setDeviceId(deviceDetailDTO.getId()); + ext.setCameraCode(deviceDetailDTO.getCameraCode()); + ext.setCameraIp(deviceDetailDTO.getCameraIp()); + ext.setCameraPort(deviceDetailDTO.getCameraPort()); + ext.setGasCode(deviceDetailDTO.getGasCode()); + ext.setGasIp(deviceDetailDTO.getGasIp()); + ext.setGasPort(deviceDetailDTO.getGasPort()); + ext.setHatLiningCode(deviceDetailDTO.getHatLiningCode()); + return this.save(ext); + } + + @Override + public boolean updateDeviceExt(DeviceDetailDTO deviceDetailDTO) { + DeviceExt ext = this.selectByDeviceId(deviceDetailDTO.getId()); + ext.setCameraCode(deviceDetailDTO.getCameraCode()); + ext.setCameraIp(deviceDetailDTO.getCameraIp()); + ext.setCameraPort(deviceDetailDTO.getCameraPort()); + ext.setGasCode(deviceDetailDTO.getGasCode()); + ext.setGasIp(deviceDetailDTO.getGasIp()); + ext.setGasPort(deviceDetailDTO.getGasPort()); + ext.setHatLiningCode(deviceDetailDTO.getHatLiningCode()); + return this.updateById(ext); + } + + @Override + public boolean removeByDeviceIds(List deviceIds) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("DEVICE_ID",deviceIds); + return this.remove(queryWrapper); + } + + @Override + public boolean setGasThreshold(String gasIp, String gasPort, String threshold) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.set("GAS_THRESHOLD",threshold); + updateWrapper.eq("GAS_IP",gasIp); + updateWrapper.eq("GAS_PORT",gasPort); + return this.update(updateWrapper); + } + + @Override + public String getGasThreshold(String gasIp, String gasPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("GAS_IP",gasIp); + queryWrapper.eq("GAS_PORT",gasPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getGasThreshold() : null; + } + + private DeviceExt selectByDeviceId(Long deviceId){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVICE_ID",deviceId); + return this.getOne(queryWrapper); + } + + @Override + public Long selectByGasIpPort(String gasIp, String gasPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("GAS_IP",gasIp); + queryWrapper.eq("GAS_PORT",gasPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getDeviceId() : null; + } + + @Override + public Long selectByCameraIpPort(String cameraIp, String cameraPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("CAMERA_IP",cameraIp); + queryWrapper.eq("CAMERA_PORT",cameraPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getDeviceId() : null; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java new file mode 100644 index 0000000..9df79ef --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.mapper.DeviceMapper; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.modular.system.consts.DeviceConst.*; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class DeviceServiceImpl extends ServiceImpl implements IDeviceService { + + private final AbstractDictService dictService; + private final IDeviceExtService deviceExtService; + + private final IProjectDeviceService projectDeviceService; + + @Transactional + @Override + public boolean saveDevice(DeviceDetailDTO deviceDetailDTO) { + deviceDetailDTO.setCreateTime(new Date()); + boolean deviceRes = this.save(deviceDetailDTO); + if(deviceRes && DEVICE_TYPE_TREE.equals(deviceDetailDTO.getDeviceType())){ + deviceRes = deviceExtService.saveDeviceExt(deviceDetailDTO); + } + return deviceRes; + } + + @Transactional + @Override + public boolean updateDevice(DeviceDetailDTO deviceDetailDTO) { + boolean deviceRes = this.updateById(deviceDetailDTO); + if(deviceRes && DEVICE_TYPE_TREE.equals(deviceDetailDTO.getDeviceType())){ + deviceRes = deviceExtService.updateDeviceExt(deviceDetailDTO); + } + return deviceRes; + } + + @Transactional + @Override + public boolean deleteDevices(List deviceIds) { + return this.removeByIds(deviceIds) & deviceExtService.removeByDeviceIds(deviceIds); + } + + @Override + public Page listPage(Page page, QueryWrapper queryWrapper,String status,Long projectId) { + String ID_COLUMN_NAME = "br_device.ID"; + List useDevices = this.selectProjectDevice(null); + List projectDevices; + if(ObjectUtil.isNotEmpty(projectId)){ + projectDevices = this.selectProjectDevice(projectId); + } else { + projectDevices = null; + } + + // 查询使用中的设备(如果传了 projectId,查询 使用中&&此现场) + if(DEVICE_STATUS_USE.equals(status)){ + if(CollUtil.isEmpty(useDevices)){ + return page; + } + if(ObjectUtil.isNotEmpty(projectId) && CollUtil.isEmpty(projectDevices)){ + return page; + } + queryWrapper.in(ID_COLUMN_NAME,useDevices); + if(CollUtil.isNotEmpty(projectDevices)){ + queryWrapper.in(ID_COLUMN_NAME,projectDevices); + } + + } + + // 查询未使用的设备(如果传了 projectId,查询 未使用||此现场) + if(DEVICE_STATUS_NORMAL.equals(status)) { + if (CollUtil.isNotEmpty(useDevices)) { + if (CollUtil.isEmpty(projectDevices)) { + queryWrapper.notIn(ID_COLUMN_NAME, useDevices); + } else { + queryWrapper.and(i -> i.notIn(ID_COLUMN_NAME, useDevices).or().in(ID_COLUMN_NAME, projectDevices)); + } + } + } + + page = this.baseMapper.listDetailPage(page, queryWrapper); + for (DeviceDetailDTO record : page.getRecords()) { + record.setDeviceTypeName(dictService.getDictNameByCode("deviceType",record.getDeviceType())); + record.setIsPowerSupplyName(dictService.getDictNameByCode("isPowerSupply",record.getIsPowerSupply())); + record.setRegisterTime(DateUtil.formatDate(record.getCreateTime())); + record.setStatus(useDevices.contains(record.getId()) ? DEVICE_STATUS_USE : DEVICE_STATUS_NORMAL); + record.setStatusName(dictService.getDictNameByCode("deviceStatus",record.getStatus())); + } + return page; + } + + @Override + public List selectProjectDevice(Long projectId) { + return this.baseMapper.selectProjectDevice(projectId); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceSupportServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceSupportServiceImpl.java new file mode 100644 index 0000000..ffd01ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceSupportServiceImpl.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.mapper.DeviceMapper; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceSupportService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; + +import static com.casic.missiles.modular.system.consts.DeviceConst.DEVICE_TYPE_HAT; + +@Service +@RequiredArgsConstructor +public class DeviceSupportServiceImpl implements IDeviceSupportService { + + private final IDeviceExtService deviceExtService; + + private final DeviceMapper deviceMapper; + + @Override + public Long selectByGasIpPort(String gasIp, String gasPort) { + return deviceExtService.selectByGasIpPort(gasIp, gasPort); + } + + @Override + public List selectHelmetList() { + return deviceMapper.selectHelmetList(DEVICE_TYPE_HAT); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectDeviceServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectDeviceServiceImpl.java new file mode 100644 index 0000000..965f55c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectDeviceServiceImpl.java @@ -0,0 +1,96 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.DataGas; +import com.casic.missiles.modular.system.entity.DataTreeLocation; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.mapper.ProjectDeviceMapper; +import com.casic.missiles.modular.system.service.IDataSupportService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.utils.LngLatUtil; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.stream.Collectors; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class ProjectDeviceServiceImpl extends ServiceImpl implements IProjectDeviceService { + + private final IDataSupportService dataSupportService; + + @Override + public boolean saveProjectDeviceList(Long projectId, List projectDeviceList) { + projectDeviceList.forEach(i->i.setProjectId(projectId)); + return this.saveBatch(projectDeviceList); + } + + @Transactional + @Override + public boolean updateProjectDeviceList(Long projectId, List projectDeviceList) { + return this.deleteByProjectId(projectId) && this.saveProjectDeviceList(projectId, projectDeviceList); + } + + @Override + public boolean deleteByProjectId(Long projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("PROJECT_ID",projectId); + return this.remove(queryWrapper); + } + + @Override + public boolean deleteByProjectIds(List projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("PROJECT_ID",projectId); + return this.remove(queryWrapper); + } + + @Override + public List selectDetailByProjectId(Long projectId) { + return this.baseMapper.selectDetailByProjectId(projectId); + } + + @Override + public Long selectProjectIdByDevice(Long deviceId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVICE_ID",deviceId); + queryWrapper.exists("(select Id FROM br_work_site_info p where p.ID = br_project_device.PROJECT_ID AND p.PROJECT_STATE != '3')"); + ProjectDevice projectDevice = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(projectDevice) ? projectDevice.getProjectId() : null; + } + + @Override + public List selectDeviceLocationList(Long projectId) { + List list = this.baseMapper.selectDeviceLocationList(projectId); + for (DeviceLocationDTO locationDTO : list) { + DataGas dataGas = dataSupportService.getGasData(locationDTO.getDeviceId()); + DataTreeLocation location = dataSupportService.getTreeLocation(locationDTO.getDeviceId(),true); + if(ObjectUtil.isNotEmpty(dataGas)){ + locationDTO.setGasValue(dataGas.getGasValue()); + locationDTO.setTime(DateUtil.formatDateTime(dataGas.getTs())); + } + if(ObjectUtil.isNotEmpty(location)){ + locationDTO.setLng(location.getGdLng()); + locationDTO.setLat(location.getGdLat()); + locationDTO.setLocation(location.getLocation()); + } + } + list = list.stream().filter(i-> StrUtil.isAllNotEmpty(i.getLng(),i.getLat())).collect(Collectors.toList()); + return LngLatUtil.sort(list); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectWorkerServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectWorkerServiceImpl.java new file mode 100644 index 0000000..c3ec86c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectWorkerServiceImpl.java @@ -0,0 +1,101 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.DataHelmetHealth; +import com.casic.missiles.modular.system.entity.DataHelmetLocation; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.mapper.ProjectWorkerMapper; +import com.casic.missiles.modular.system.service.IHelmetSupportService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.system.consts.ProjectConst.WORKER_TYPE_NORMAL; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class ProjectWorkerServiceImpl extends ServiceImpl implements IProjectWorkerService { + + private final AbstractDeptService deptService; + private final IHelmetSupportService helmetSupportService; + + @Override + public boolean saveProjectWorkerList(Long projectId, List projectWorkerList) { + projectWorkerList.forEach(i->i.setProjectId(projectId)); + return this.saveBatch(projectWorkerList); + } + + @Transactional + @Override + public boolean updateProjectWorkerList(Long projectId, List projectWorkerList) { + return this.deleteByProjectId(projectId) && this.saveProjectWorkerList(projectId, projectWorkerList) ; + } + + @Override + public boolean deleteByProjectId(Long projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("PROJECT_ID",projectId); + return this.remove(queryWrapper); + } + + @Override + public boolean deleteByProjectIds(List projectIds) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("PROJECT_ID",projectIds); + return this.remove(queryWrapper); + } + + + @Override + public List selectDetailByProjectId(Long projectId,String workerType) { + List projectWorkerList = this.baseMapper.selectDetailByProjectId(projectId,workerType); + for (ProjectWorker projectWorker : projectWorkerList) { + if(ObjectUtil.isNotEmpty(projectWorker.getWorkerDeptId())){ + projectWorker.setWorkerDeptName(deptService.getDeptName(projectWorker.getWorkerDeptId())); + } + } + return projectWorkerList; + } + + @Override + public List selectWorkerLocationDTO(Long projectId) { + List projectWorkerList = this.baseMapper.selectWorkerLocationList(projectId,WORKER_TYPE_NORMAL); + for (WorkerLocationDTO workerLocationDTO : projectWorkerList) { + if(ObjectUtil.isNotEmpty(workerLocationDTO.getHatId())){ + DataHelmetLocation location = helmetSupportService.getHelmetLocation(workerLocationDTO.getHatId(),true); + if(ObjectUtil.isNotEmpty(location)){ + workerLocationDTO.setLng(location.getGdLng()); + workerLocationDTO.setLat(location.getGdLat()); + workerLocationDTO.setLocation(location.getLocation()); + } + + DataHelmetHealth health = helmetSupportService.getHelmetHealth(workerLocationDTO.getHatId()); + if(ObjectUtil.isNotEmpty(health)){ + workerLocationDTO.setBloodOxygen(health.getBloodOxygen()); + workerLocationDTO.setHeartRate(health.getHeartRate()); + workerLocationDTO.setTime(DateUtil.formatDateTime(health.getTs())); + } + } + } + projectWorkerList = projectWorkerList.stream().filter(i-> StrUtil.isAllNotEmpty(i.getLng(),i.getLat())).collect(Collectors.toList()); + return projectWorkerList; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkSiteInfoServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkSiteInfoServiceImpl.java new file mode 100644 index 0000000..5068da2 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkSiteInfoServiceImpl.java @@ -0,0 +1,151 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.mapper.WorkSiteInfoMapper; +import com.casic.missiles.modular.system.service.*; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.system.consts.ProjectConst.*; + +/** + *

+ * 作业现场表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class WorkSiteInfoServiceImpl extends ServiceImpl implements IWorkSiteInfoService { + + private final IProjectWorkerService projectWorkerService; + private final IProjectDeviceService projectDeviceService; + + private final IWorkerService workerService; + private final IBraceletService braceletService; + + private final AbstractDeptService deptService; + private final AbstractDictService dictService; + @Override + @Transactional + public boolean addWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO) { + workSiteDetailDTO.setCreateTime(new Date()); + workSiteDetailDTO.setUpdateTime(new Date()); + workSiteDetailDTO.setProjectState(PROJECT_STATE_PREPARE); + boolean res = this.save(workSiteDetailDTO); + if(res){ + res = projectDeviceService.saveProjectDeviceList(workSiteDetailDTO.getId(), workSiteDetailDTO.getDeviceList()); + res = res & projectWorkerService.saveProjectWorkerList(workSiteDetailDTO.getId(), workSiteDetailDTO.getWorkerList()); + } + return res; + } + + @Override + @Transactional + public boolean updateWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO) { + workSiteDetailDTO.setUpdateTime(new Date()); + boolean res = this.updateById(workSiteDetailDTO); + if(res){ + res = projectDeviceService.updateProjectDeviceList(workSiteDetailDTO.getId(), workSiteDetailDTO.getDeviceList()); + res = res & projectWorkerService.updateProjectWorkerList(workSiteDetailDTO.getId(), workSiteDetailDTO.getWorkerList()); + } + return res; + } + + @Override + public boolean deleteProjects(List projectIds) { + if(CollUtil.isNotEmpty(projectIds)) { + projectDeviceService.deleteByProjectIds(projectIds); + projectWorkerService.deleteByProjectIds(projectIds); + return this.removeByIds(projectIds); + } + return true; + } + + @Override + public WorkSiteDetailDTO getWorkSiteDetail(Long projectId) { + WorkSiteInfo workSiteInfo = this.getById(projectId); + WorkSiteDetailDTO workSiteDetailDTO = new WorkSiteDetailDTO(); + BeanUtil.copyProperties(workSiteInfo,workSiteDetailDTO,true); + workSiteDetailDTO.setDeviceList(projectDeviceService.selectDetailByProjectId(projectId)); + workSiteDetailDTO.setWorkerList(projectWorkerService.selectDetailByProjectId(projectId,WORKER_TYPE_NORMAL)); + + Worker responseWorker = workerService.selectWorkerDetail(workSiteDetailDTO.getWorkPerson()); + if(ObjectUtil.isNotEmpty(responseWorker)){ + workSiteDetailDTO.setWorkPersonName(responseWorker.getWorkerName()); + workSiteDetailDTO.setWorkPersonPhoneNumber(responseWorker.getPhoneNumber()); + workSiteDetailDTO.setWorkPersonDeptId(responseWorker.getDeptId()); + workSiteDetailDTO.setWorkPersonDeptName(responseWorker.getDeptName()); + } + return workSiteDetailDTO; + } + + @Override + public Page selectListPage(Page page, QueryWrapper queryWrapper) { + page = this.baseMapper.selectListPage(page, queryWrapper); + for (WorkSiteInfo workSiteInfo : page.getRecords()) { + workSiteInfo.setProjectStateName(dictService.getDictNameByCode("projectState", workSiteInfo.getProjectState())); + if(ObjectUtil.isNotEmpty(workSiteInfo.getWorkPersonDeptId())){ + workSiteInfo.setWorkPersonDeptName(deptService.getDeptName(workSiteInfo.getWorkPersonDeptId())); + } + workSiteInfo.setRegisterTime(DateUtil.formatDate(workSiteInfo.getCreateTime())); + } + return page; + } + + @Override + public boolean start(Long projectId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",projectId); + updateWrapper.set("PROJECT_STATE",PROJECT_STATE_WORKING); + updateWrapper.set("START_TIME",new Date()); + boolean res = this.update(updateWrapper); + //braceletService.enableBracelet(selectProjectBracelets(projectId)); + return res; + } + + @Override + public boolean finish(Long projectId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",projectId); + updateWrapper.set("PROJECT_STATE",PROJECT_STATE_FINISH); + updateWrapper.set("FINISH_TIME",new Date()); + boolean res = this.update(updateWrapper); + //braceletService.disableBracelet(selectProjectBracelets(projectId)); + return res; + } + + private List selectProjectBracelets(Long projectId){ + List deviceCodes = new ArrayList<>(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("PROJECT_ID",projectId); + queryWrapper.isNotNull("BRACELET_CODE"); + queryWrapper.select("BRACELET_CODE"); + List res = projectWorkerService.listObjs(queryWrapper); + if(CollUtil.isNotEmpty(res)){ + deviceCodes = res.stream().map(Object::toString).distinct().collect(Collectors.toList()); + } + return deviceCodes; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkerServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkerServiceImpl.java new file mode 100644 index 0000000..6859cff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkerServiceImpl.java @@ -0,0 +1,110 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.mapper.WorkerMapper; +import com.casic.missiles.modular.system.service.*; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.modular.system.consts.ProjectConst.WORKER_TYPE_TEMP; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class WorkerServiceImpl extends ServiceImpl implements IWorkerService { + + private final IProjectWorkerService projectWorkerService; + + private final IProjectDeviceService projectDeviceService; + private final AbstractDictService dictService; + private final AbstractDeptService deptService; + private final IDeviceExtService deviceExtService; + + @Override + @Transactional + public boolean addWorker(Worker worker, Long projectId) { + worker.setCreateTime(new Date()); + boolean res = this.save(worker); + if(res && ObjectUtil.isNotEmpty(projectId)){ + res = projectWorkerService.save(new ProjectWorker(projectId, worker.getId())); + if(ObjectUtil.isNotEmpty(worker.getWorkerAvatar())){ + // todo 向一体机推送人脸图片 + } + } + return res; + } + + @Override + public Page selectListPage(Page page, QueryWrapper ew) { + page = this.baseMapper.selectListPage(page, ew); + for (Worker worker : page.getRecords()) { + wrapperWorker(worker); + } + return page; + } + + private void wrapperWorker(Worker worker) { + if(StrUtil.isNotEmpty(worker.getGender())){ + worker.setGenderName(dictService.getDictNameByCode("sysSex", worker.getGender())); + } + if(ObjectUtil.isNotEmpty(worker.getDeptId())){ + worker.setDeptName(deptService.getDeptName(worker.getDeptId())); + } + worker.setRegisterTime(DateUtil.formatDate(worker.getCreateTime())); + if(StrUtil.isNotEmpty(worker.getStatus())){ + worker.setStatusName(dictService.getDictNameByCode("workerStatus", worker.getStatus())); + } + } + + @Override + public Worker selectWorkerDetail(Long workerId) { + Worker worker = this.getById(workerId); + if(ObjectUtil.isNotEmpty(worker)){ + wrapperWorker(worker); + } + return worker; + } + + @Override + public List faceRegister(String cameraIp, String cameraPort) { + Long deviceId = deviceExtService.selectByCameraIpPort(cameraIp, cameraPort); + if(ObjectUtil.isNotEmpty(deviceId)){ + Long projectId = projectDeviceService.selectProjectIdByDevice(deviceId); + if(ObjectUtil.isNotEmpty(projectId)){ + return this.baseMapper.selectWorkerAvatars(projectId); + } + } + return null; + } + + @Override + public List projectTempWorker(Long projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("WORKER_TYPE",WORKER_TYPE_TEMP); + queryWrapper.exists("(select ID FROM br_project_worker WHERE PROJECT_ID = "+ projectId +")"); + List workers = this.list(queryWrapper); + workers.forEach(this::wrapperWorker); + return workers; + } +} diff --git a/casic_video_283_web/pom.xml b/casic_video_283_web/pom.xml new file mode 100644 index 0000000..feace49 --- /dev/null +++ b/casic_video_283_web/pom.xml @@ -0,0 +1,166 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + casic_video_283_web + 1.0.0 + jar + casic_video_283_web + casic web启动入口 + + + + dev + + true + + + dev + + + + test + + test + + + + prod + + prod + + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-actuator + + + io.micrometer + micrometer-core + + + + + org.springframework.boot + spring-boot-starter-jdbc + + + + com.casic + casic-core + ${core.version} + + + com.casic + casic-admin-core + ${admin.version} + + + io.springfox + springfox-swagger-ui + + + + + com.casic + casic-admin-support + ${admin.version} + + + mysql + mysql-connector-java + ${mysql.driver.version} + + + com.casic + casic-area-starter + ${admin.version} + + + + com.casic + casic_video_283_server + ${pro.version} + + + + org.springframework.boot + spring-boot-starter-tomcat + + + + + casic_video_283_web-${pro.version} + + + org.apache.maven.plugins + maven-jar-plugin + ${maven.jar.plugin.version} + + + + /config/*-*.yml + **/MockController.class + + + + com.casic.missiles.CasicApplication + true + ./ + + + + + + org.apache.maven.plugins + maven-assembly-plugin + ${maven.assembly.plugin.version} + + + make-assembly + package + + single + + + + + + org.apache.maven.plugins + maven-war-plugin + ${maven.war.plugin.version} + + + + + src/main/resources + + + /config/*/* + /config/*-*.yml + + true + + + src/main/java + + **/*.xml + + true + + + + \ No newline at end of file diff --git a/casic_video_283_web/src/main/build/bin/start.bat b/casic_video_283_web/src/main/build/bin/start.bat new file mode 100644 index 0000000..1db4e88 --- /dev/null +++ b/casic_video_283_web/src/main/build/bin/start.bat @@ -0,0 +1,4 @@ +@echo off +title ${project.build.finalName} +java -jar ./lib/${project.build.finalName}.jar +@pause diff --git a/casic_video_283_web/src/main/build/bin/start.sh b/casic_video_283_web/src/main/build/bin/start.sh new file mode 100644 index 0000000..1cc33fc --- /dev/null +++ b/casic_video_283_web/src/main/build/bin/start.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +jar_name="${project.build.finalName}.jar" +echo "starting $jar_name ..." + +PID=$(ps -ef | grep ${jar_name} | grep -v grep | awk '{print $2}') + +OLD_IFS="$IFS" +IFS="," +PIDARR=($PID) +IFS="$OLD_IFS" + +if [ ! $PID ]; then + echo "process ${jar_name} not exit" +else + echo "process id: $PID" + + kill -9 ${PID} + + if [ $? -eq 0 ]; then + echo "kill ${jar_name} success" + else + echo "kill ${jar_name} fail" + exit + fi +fi + + + +nohup java -jar ./lib/${jar_name} >/dev/null 2>log & +echo "start ${jar_name} ..." \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java new file mode 100644 index 0000000..73d7799 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.dto; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "AlarmUpload",description = "报警上传") +@Data +public class AlarmUpload { + + @ApiModelProperty(value = "摄像头ip") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + @ApiModelProperty(value = "安全树甲烷设备ip") + private String gasIp; + @ApiModelProperty(value = "安全树甲烷设备端口") + private String gasPort; + @ApiModelProperty(value = "报警值") + private String alarmValue; + @ApiModelProperty(value = "报警时间") + private String alarmTime; + @ApiModelProperty(value = "报警类型") + private String alarmType; + @ApiModelProperty(value = "报警图片") + private String alarmImage; + @ApiModelProperty(value = "报警内容") + private String alarmContent; + + @Override + public String toString() { + return "AlarmUpload{" + + "cameraIp='" + cameraIp + '\'' + + ", cameraPort='" + cameraPort + '\'' + + ", gasIp='" + gasIp + '\'' + + ", gasPort='" + gasPort + '\'' + + ", alarmValue='" + alarmValue + '\'' + + ", alarmTime='" + alarmTime + '\'' + + ", alarmType='" + alarmType + '\'' + + ", alarmImage='" + (StrUtil.isNotEmpty(alarmImage) ? alarmImage.substring(0,50) : "null") + '\'' + + ", alarmContent='" + alarmContent + '\'' + + '}'; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java new file mode 100644 index 0000000..ea518d9 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.modular.system.entity.Device; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("DeviceDetailDTO") +@Data +public class DeviceDetailDTO extends Device { + + @ApiModelProperty(value = "摄像头编号") + private String cameraCode; + + @ApiModelProperty(value = "摄像头IP") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + + @ApiModelProperty(value = "激甲编号") + private String gasCode; + + @ApiModelProperty(value = "激甲IP") + private String gasIp; + + @ApiModelProperty(value = "激甲端口") + private String gasPort; + + @ApiModelProperty(value = "智能帽衬编号") + private String hatLiningCode; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java new file mode 100644 index 0000000..29378ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("WorkSiteDetailDTO") +public class WorkSiteDetailDTO extends WorkSiteInfo { + + @ApiModelProperty(value = "安全树列表",dataType = "ProjectDevice") + private List deviceList; + + @ApiModelProperty(value = "人员列表",dataType = "ProjectWorker") + private List workerList; + + + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java new file mode 100644 index 0000000..6fd7b24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java @@ -0,0 +1,68 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "WorkerLocationDTO",description = "人员位置列表(首页)") +@Data +public class WorkerLocationDTO { + + @ApiModelProperty("人员ID") + private Long workerId; + + @ApiModelProperty("人员姓名") + private String workerName; + + @ApiModelProperty("安全帽编号") + private String hatCode; + + @ApiModelProperty("安全帽ID") + private Long hatId; + + @ApiModelProperty("背心编号") + private String vastCode; + + @ApiModelProperty("手环编号") + private String braceletCode; + + @ApiModelProperty("位置") + private String location; + + @ApiModelProperty("时间") + private String time; + + @ApiModelProperty("经度") + private String lng; + + @ApiModelProperty("纬度") + private String lat; + + @ApiModelProperty("心率") + private String heartRate; + + @ApiModelProperty("血氧") + private String bloodOxygen; + + @ApiModelProperty("一氧化碳") + private String co; + + @ApiModelProperty("甲烷") + private String gas; + + @ApiModelProperty("硫化氢") + private String h2s; + + @ApiModelProperty("氧气") + private String o2; + + @ApiModelProperty("信号") + private String signal; + + @ApiModelProperty("电量") + private String cell; + + @ApiModelProperty("是否报警") + private boolean alarmFlag; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java new file mode 100644 index 0000000..efb4a23 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java @@ -0,0 +1,159 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 报警记录表 + *

+ * + * @author zyj + * @since 2023-05-16 + */ +@Data +@ApiModel("Alarm") +@TableName("br_bus_alarm") +public class BusAlarm implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @ApiModelProperty(value = "设备ID") + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 报警类型 + */ + @ApiModelProperty(value = "报警类型") + @TableField("ALARM_TYPE") + private String alarmType; + + /** + * 报警状态 + */ + @ApiModelProperty(value = "报警状态") + @TableField("ALARM_STATUS") + private String alarmStatus; + + /** + * 报警值 + */ + @ApiModelProperty(value = "报警值") + @TableField("ALARM_VALUE") + private String alarmValue; + + /** + * 报警图片 + */ + @ApiModelProperty(value = "报警图片") + @TableField("ALARM_IMAGE") + private String alarmImage; + + /** + * 报警内容 + */ + @ApiModelProperty(value = "报警内容") + @TableField("ALARM_CONTENT") + private String alarmContent; + + /** + * 报警时间 + */ + @ApiModelProperty(value = "报警时间") + @TableField("ALARM_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date alarmTime; + + /** + * 消警时间 + */ + @ApiModelProperty(value = "消警时间") + @TableField("CANCEL_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + /** + * 报警位置经度 + */ + @ApiModelProperty(value = "报警位置经度") + @TableField("ALARM_LNG") + private String alarmLng; + + /** + * 报警位置纬度 + */ + @ApiModelProperty(value = "报警位置纬度") + @TableField("ALARM_LAT") + private String alarmLat; + + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmStatusName; + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmTypeName; + @ApiModelProperty("作业名称") + @TableField(exist = false) + private String workTitle; + @ApiModelProperty("所属道路") + @TableField(exist = false) + private String workRoad; + @ApiModelProperty("作业状态") + @TableField(exist = false) + private String projectState; + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + @ApiModelProperty("负责人姓名") + @TableField(exist = false) + private String workPersonName; + @ApiModelProperty("负责人联系方式") + @TableField(exist = false) + private String workPersonPhoneNumber; + + + @Override + public String toString() { + return "BusAlarm{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + ", alarmType=" + alarmType + + ", alarmValue=" + alarmValue + + ", alarmStatus=" + alarmStatus + + ", alarmImage=" + alarmImage + + ", alarmContent=" + alarmContent + + ", alarmTime=" + alarmTime + + ", cancelTime=" + cancelTime + + ", alarmLng=" + alarmLng + + ", alarmLat=" + alarmLat + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java new file mode 100644 index 0000000..a0b7543 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + *

+ * 事件表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event") +@Data +@ApiModel("BusEvent") +public class BusEvent implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("事件ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件标题 + */ + @ApiModelProperty("事件名称") + @TableField("EVENT_TITLE") + private String eventTitle; + + /** + * 上报人员 + */ + @ApiModelProperty("上报人员") + @TableField("UPLOAD_NAME") + private String uploadName; + + /** + * 联系方式 + */ + @ApiModelProperty("联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 事件描述 + */ + @ApiModelProperty("事件描述") + @TableField("EVENT_DESCRIPTION") + private String eventDescription; + + @ApiModelProperty("经度") + @TableField("LNG") + private String lng; + + @ApiModelProperty("纬度") + @TableField("LAT") + private String lat; + + /** + * 事件上传时间 + */ + @ApiModelProperty("事件上传时间") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty("事件照片") + @TableField(exist = false) + private List imageList; + + + + @Override + public String toString() { + return "BusEvent{" + + "id=" + id + + ", eventTitle=" + eventTitle + + ", uploadName=" + uploadName + + ", phoneNumber=" + phoneNumber + + ", eventDescription=" + eventDescription + + ", lng=" + lng + + ", lat=" + lat + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java new file mode 100644 index 0000000..1e75245 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 事件图片表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event_image") +@Data +@ApiModel("BusEventImage") +public class BusEventImage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件ID + */ + @TableField("EVENT_ID") + private Long eventId; + + /** + * 报警图片 + */ + @TableField("IMAGE") + @ApiModelProperty("图片url") + private String image; + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java new file mode 100644 index 0000000..df89c70 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.core.base.json.DateDeserializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Device") +@TableName("br_device") +@Data +public class Device implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "设备ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty(value = "设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + /** + * 设备类型 + */ + @ApiModelProperty(value = "设备类型") + @TableField("DEVICE_TYPE") + private String deviceType; + + /** + * 设备批次 + */ + @ApiModelProperty(value = "设备批次") + @TableField("DEVICE_BATCH") + private String deviceBatch; + + /** + * 厂家 + */ + @ApiModelProperty(value = "厂家") + @TableField("MANUFACTURER") + private String manufacturer; + + /** + * 是否供电 + */ + @ApiModelProperty(value = "是否供电") + @TableField("IS_POWER_SUPPLY") + private String isPowerSupply; + + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间",dataType = "Date") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty(value = "设备类型名称") + @TableField(exist = false) + private String deviceTypeName; + + @ApiModelProperty(value = "是否供电名称") + @TableField(exist = false) + private String isPowerSupplyName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", deviceCode=" + deviceCode + + ", deviceType=" + deviceType + + ", deviceBatch=" + deviceBatch + + ", manufacturer=" + manufacturer + + ", isPowerSupply=" + isPowerSupply + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java new file mode 100644 index 0000000..5ee7015 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java @@ -0,0 +1,99 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 设备扩展信息表(安全树) + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Data +@TableName("br_device_ext") +public class DeviceExt implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 摄像头编号 + */ + @TableField("CAMERA_CODE") + private String cameraCode; + + /** + * 摄像头IP + */ + @TableField("CAMERA_IP") + private String cameraIp; + + /** + * 摄像头端口 + */ + @TableField("CAMERA_PORT") + private String cameraPort; + + /** + * 激甲编号 + */ + @TableField("GAS_CODE") + private String gasCode; + + /** + * 激甲IP + */ + @TableField("GAS_IP") + private String gasIp; + + /** + * 激甲端口 + */ + @TableField("GAS_PORT") + private String gasPort; + + /** + * 甲烷报警阈值 + */ + @TableField("GAS_THRESHOLD") + private String gasThreshold; + + @TableField(value = "HAT_LINING_CODE") + private String hatLiningCode; + + + @Override + public String toString() { + return "DeviceExt{" + + "id=" + id + + ", deviceId=" + deviceId + + ", cameraCode=" + cameraCode + + ", cameraIp=" + cameraIp + + ", cameraPort=" + cameraPort + + ", gasCode=" + gasCode + + ", gasIp=" + gasIp + + ", gasPort=" + gasPort + + ", gasThreshold=" + gasThreshold + + ", hatLiningCode=" + hatLiningCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java new file mode 100644 index 0000000..c4f3472 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java @@ -0,0 +1,62 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Data +@ApiModel("ProjectDevice") +@TableName("br_project_device") +public class ProjectDevice implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + @ApiModelProperty("设备ID(新增编辑时传)") + private Long deviceId; + + /** + * 设备编号 + */ + @TableField(exist = false) + @ApiModelProperty("设备编号(详情中展示,新增编辑不用传)") + private String deviceCode; + + @Override + public String toString() { + return "ProjectDevice{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java new file mode 100644 index 0000000..10b23c4 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java @@ -0,0 +1,104 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("ProjectWorker") +@TableName("br_project_worker") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ProjectWorker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 人员ID + */ + @ApiModelProperty("人员ID") + @TableField("WORKER_ID") + private Long workerId; + + /** + * 安全帽编号 + */ + @ApiModelProperty("安全帽编号") + @TableField("HAT_CODE") + private String hatCode; + + /** + * 背心编号 + */ + @ApiModelProperty("背心编号") + @TableField("VAST_CODE") + private String vastCode; + + /** + * 手环编号 + */ + @ApiModelProperty("手环编号") + @TableField("BRACELET_CODE") + private String braceletCode; + + @ApiModelProperty("人员姓名(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerName; + + @ApiModelProperty("人员部门ID(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptId; + + @ApiModelProperty("人员部门名称(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptName; + + @ApiModelProperty("人员联系方式(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerPhoneNumber; + + public ProjectWorker(Long projectId, Long workerId) { + this.projectId = projectId; + this.workerId = workerId; + } + + @Override + public String toString() { + return "ProjectWorker{" + + "id=" + id + + ", projectId=" + projectId + + ", workerId=" + workerId + + ", hatCode=" + hatCode + + ", vastCode=" + vastCode + + ", braceletCode=" + braceletCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java new file mode 100644 index 0000000..fa6f41d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 作业现场表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("WorkSiteInfo") +@TableName("br_work_site_info") +@Data +public class WorkSiteInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("作业现场ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业名称 + */ + @ApiModelProperty("作业名称") + @TableField("WORK_TITLE") + private String workTitle; + + /** + * 责任人 + */ + @ApiModelProperty("责任人(人员ID)") + @TableField("WORK_PERSON") + private Long workPerson; + + /** + * 作业描述 + */ + @ApiModelProperty("作业描述") + @TableField("WORK_SITE_DESC") + private String workSiteDesc; + + /** + * 作业状态 + */ + @ApiModelProperty("作业状态") + @TableField("PROJECT_STATE") + private String projectState; + + /** + * 所属道路 + */ + @ApiModelProperty("所属道路") + @TableField("WORK_ROAD") + private String workRoad; + + @TableField("IMAGE_URL") + private String imageUrl; + + @TableField("CREATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + @TableField("UPDATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("FINISH_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + @ApiModelProperty("负责人姓名(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonName; + + @ApiModelProperty("负责人联系方式(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonPhoneNumber; + + @ApiModelProperty("负责人所属部门ID(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private Long workPersonDeptId; + + @ApiModelProperty("负责人所属部门名称(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonDeptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + + @Override + public String toString() { + return "WorkSiteInfo{" + + "id=" + id + + ", workTitle=" + workTitle + + ", workPerson=" + workPerson + + ", workSiteDesc=" + workSiteDesc + + ", projectState=" + projectState + + ", imageUrl=" + imageUrl + + ", updateTime=" + updateTime + + ", workRoad=" + workRoad + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java new file mode 100644 index 0000000..28a4daa --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java @@ -0,0 +1,147 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Worker") +@TableName("br_worker") +@Data +public class Worker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "人员ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 姓名 + */ + @ApiModelProperty(value = "姓名") + @TableField("WORKER_NAME") + private String workerName; + + /** + * 性别 + */ + @ApiModelProperty(value = "性别") + @TableField("GENDER") + private String gender; + + /** + * 所属部门 + */ + @ApiModelProperty(value = "所属部门(人员管理)") + @TableField("DEPT_ID") + private Long deptId; + + /** + * 所属单位 + */ + @ApiModelProperty(value = "所属单位(入场申请中使用)") + @TableField("OWNER_SHIP") + private String ownerShip; + + /** + * 联系方式 + */ + @ApiModelProperty(value = "联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 证件号 + */ + @ApiModelProperty(value = "证件号") + @TableField("ID_CARD_NUMBER") + private String idCardNumber; + + /** + * 入场原因 + */ + @ApiModelProperty(value = "入场原因(入场申请中使用)") + @TableField("ENTER_REASON") + private String enterReason; + + /** + * 入场人脸照片 + */ + @ApiModelProperty(value = "人脸照片(照片路径)") + @TableField("WORKER_AVATAR") + private String workerAvatar; + + /** + * 申请入场时间 + */ + @ApiModelProperty(value = "注册时间/申请入场时间") + @TableField("CREATE_TIME") + private Date createTime; + + /** + * 人员类型 + */ + @ApiModelProperty(value = "人员类型(区分人员管理和入场申请)") + @TableField("WORKER_TYPE") + private String workerType; + + @ApiModelProperty(value = "性别名称") + @TableField(exist = false) + private String genderName; + + @ApiModelProperty(value = "部门名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @ApiModelProperty(value = "是否注册(0未注册;1已注册)",allowableValues = "0,1") + @TableField(exist = false) + private String isRegister; + + @Override + public String toString() { + return "Worker{" + + "id=" + id + + ", workerName=" + workerName + + ", gender=" + gender + + ", deptId=" + deptId + + ", ownerShip=" + ownerShip + + ", phoneNumber=" + phoneNumber + + ", idCardNumber=" + idCardNumber + + ", enterReason=" + enterReason + + ", workerAvatar=" + workerAvatar + + ", createTime=" + createTime + + ", workerType=" + workerType + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java new file mode 100644 index 0000000..9801742 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警记录表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusAlarmMapper extends BaseMapper { + + Page listPage(Page page,@Param("ew") QueryWrapper queryWrapper); + + void cancelAlarm(@Param("deviceId")Long deviceId,@Param("alarmType") String alarmType); + + List alarmCount(@Param("projectId")Long projectId, @Param("alarmStatus")String alarmStatus); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java new file mode 100644 index 0000000..9590b7d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件图片表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventImageMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java new file mode 100644 index 0000000..3c85edf --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java new file mode 100644 index 0000000..4ca9212 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 设备扩展信息表(安全树) Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface DeviceExtMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java new file mode 100644 index 0000000..444c0c5 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Mapper +public interface DeviceMapper extends BaseMapper { + + Page listDetailPage(Page page,@Param("ew") QueryWrapper ew); + + List selectProjectDevice(@Param("projectId") Long projectId); + + List selectHelmetList(@Param("deviceType")String deviceType); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java new file mode 100644 index 0000000..1d0c14e --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectDeviceMapper extends BaseMapper { + List selectDetailByProjectId(@Param("projectId") Long projectId); + + List selectDeviceLocationList(@Param("projectId") Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java new file mode 100644 index 0000000..58583d1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectWorkerMapper extends BaseMapper { + + List selectDetailByProjectId(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + + List selectWorkerLocationList(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java new file mode 100644 index 0000000..a4934d2 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +/** + *

+ * 作业现场表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkSiteInfoMapper extends BaseMapper { + + Page selectListPage(Page page,@Param("ew") QueryWrapper ew); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java new file mode 100644 index 0000000..258fb12 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkerMapper extends BaseMapper { + + + Page selectListPage(Page page, @Param("ew") QueryWrapper ew); + + List selectWorkerAvatars(@Param("projectId")Long projectId); + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml new file mode 100644 index 0000000..595088a --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml @@ -0,0 +1,58 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml new file mode 100644 index 0000000..fbc3db3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml new file mode 100644 index 0000000..627d573 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml new file mode 100644 index 0000000..5321d1c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml new file mode 100644 index 0000000..94262e1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml @@ -0,0 +1,97 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml new file mode 100644 index 0000000..c6d1c24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml @@ -0,0 +1,29 @@ + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml new file mode 100644 index 0000000..8d2de10 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml new file mode 100644 index 0000000..8f01326 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml @@ -0,0 +1,26 @@ + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml new file mode 100644 index 0000000..3e28b39 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml @@ -0,0 +1,56 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java new file mode 100644 index 0000000..f63c19c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 报警记录表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusAlarmService extends IService { + + boolean alarmUpload(AlarmUpload alarmUpload); + + Page listPage(Page page,QueryWrapper queryWrapper); + + List alarmCount(Long projectId,String alarmStatus); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java new file mode 100644 index 0000000..b1187ed --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 事件图片表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusEventImageService extends IService { + + boolean saveBusEventImages(Long eventId, List imageList); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java new file mode 100644 index 0000000..85c48d0 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 事件表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusEventService extends IService { + + boolean saveBusEvent(BusEvent busEvent); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java new file mode 100644 index 0000000..6fc5361 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 设备扩展信息表(安全树) 服务类 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface IDeviceExtService extends IService { + + boolean saveDeviceExt(DeviceDetailDTO deviceDetailDTO); + + boolean updateDeviceExt(DeviceDetailDTO deviceDetailDTO); + + boolean removeByDeviceIds(List deviceIds); + + boolean setGasThreshold(String gasIp,String gasPort,String threshold); + + String getGasThreshold(String gasIp,String gasPort); + + Long selectByGasIpPort(String gasIp,String gasPort); + + Long selectByCameraIpPort(String cameraIp,String cameraPort); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java new file mode 100644 index 0000000..9e62756 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java @@ -0,0 +1,32 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IDeviceService extends IService { + + boolean saveDevice(DeviceDetailDTO deviceDetailDTO); + + boolean updateDevice(DeviceDetailDTO deviceDetailDTO); + + boolean deleteDevices(List deviceIds); + + Page listPage(Page page, QueryWrapper queryWrapper, String status,Long projectId); + + List selectProjectDevice(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java new file mode 100644 index 0000000..8599411 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IProjectDeviceService extends IService { + + boolean saveProjectDeviceList(Long projectId, List projectDeviceList); + + boolean updateProjectDeviceList(Long projectId, List projectDeviceList); + + boolean deleteByProjectId(Long projectId); + + boolean deleteByProjectIds(List projectIds); + + List selectDetailByProjectId(Long projectId); + + Long selectProjectIdByDevice(Long deviceId); + + List selectDeviceLocationList(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java new file mode 100644 index 0000000..e921bc3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IProjectWorkerService extends IService { + + boolean saveProjectWorkerList(Long projectId, List projectWorkerList); + + boolean updateProjectWorkerList(Long projectId, List projectWorkerList); + + boolean deleteByProjectId(Long projectId); + + boolean deleteByProjectIds(List projectIds); + + List selectDetailByProjectId(Long projectId,String workerType); + + List selectWorkerLocationDTO(Long projectId); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java new file mode 100644 index 0000000..58a8590 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; +/** + *

+ * 作业现场表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IWorkSiteInfoService extends IService { + + boolean addWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO); + + boolean updateWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO); + + boolean deleteProjects(List projectIds); + + WorkSiteDetailDTO getWorkSiteDetail(Long projectId); + + Page selectListPage(Page page, QueryWrapper queryWrapper); + + boolean start(Long projectId); + + boolean finish(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java new file mode 100644 index 0000000..6c6ee98 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.extension.service.IService; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IWorkerService extends IService { + + boolean addWorker(Worker worker,Long projectId); + + Page selectListPage(Page page,QueryWrapper ew); + + Worker selectWorkerDetail(Long workerId); + + List faceRegister(String cameraIp,String cameraPort); + + List projectTempWorker(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java new file mode 100644 index 0000000..b44de1d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.consts.AlarmTypeEnum; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.entity.DataTreeLocation; +import com.casic.missiles.modular.system.mapper.BusAlarmMapper; +import com.casic.missiles.modular.system.service.*; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +/** + *

+ * 报警记录表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +@Slf4j +public class BusAlarmServiceImpl extends ServiceImpl implements IBusAlarmService { + + private final IDeviceExtService deviceExtService; + private final IDeviceService deviceService; + private final IProjectDeviceService projectDeviceService; + + private final ICasicFileService fileService; + + private final AbstractDictService dictService; + private final IDataSupportService dataSupportService; + + @Override + @Transactional + public boolean alarmUpload(AlarmUpload alarmUpload) { + log.info("alarm upload ==> {}",alarmUpload.toString()); + Long deviceId = null; + if(StrUtil.isAllNotBlank(alarmUpload.getGasIp(),alarmUpload.getGasPort())){ + deviceId = deviceExtService.selectByGasIpPort(alarmUpload.getGasIp(),alarmUpload.getGasPort()); + } + if(ObjectUtil.isEmpty(deviceId) && StrUtil.isAllNotBlank(alarmUpload.getCameraIp(),alarmUpload.getCameraPort())){ + deviceId = deviceExtService.selectByCameraIpPort(alarmUpload.getCameraIp(),alarmUpload.getCameraPort()); + } + + if(ObjectUtil.isEmpty(deviceId)){ + return false; + } + + BusAlarm alarm = new BusAlarm(); + alarm.setDeviceId(deviceId); + alarm.setProjectId(projectDeviceService.selectProjectIdByDevice(deviceId)); + alarm.setAlarmValue(alarmUpload.getAlarmValue()); + if(StrUtil.isNotEmpty(alarmUpload.getAlarmTime())){ + alarm.setAlarmTime(DateUtil.parseDateTime(alarmUpload.getAlarmTime())); + }else { + alarm.setAlarmTime(new Date()); + } + + alarm.setAlarmType(alarmUpload.getAlarmType()); + alarm.setAlarmContent(alarmUpload.getAlarmContent()); + if(StrUtil.isNotEmpty(alarmUpload.getAlarmImage())){ + String imgBase64 = "data:image/jpeg;base64," + alarmUpload.getAlarmImage(); + String imageUrl = fileService.saveFile(imgBase64); + alarm.setAlarmImage(imageUrl); + } + alarm.setAlarmStatus(ALARM_STATUS_ON); + + DataTreeLocation treeLocation = dataSupportService.getTreeLocation(deviceId); + if(ObjectUtil.isNotEmpty(treeLocation)){ + alarm.setAlarmLng(treeLocation.getGdLng()); + alarm.setAlarmLat(treeLocation.getGdLat()); + } + + //自动消警 + AlarmTypeEnum alarmTypeEnum = AlarmTypeEnum.getByAlarmType(alarm.getAlarmType()); + if(ObjectUtil.isNotEmpty(alarmTypeEnum) && alarmTypeEnum.isAutoCancel()){ + this.baseMapper.cancelAlarm(deviceId,alarm.getAlarmType()); + } + return this.save(alarm); + } + + @Override + public Page listPage(Page page, QueryWrapper queryWrapper) { + page = this.baseMapper.listPage(page, queryWrapper); + for (BusAlarm alarm : page.getRecords()) { + alarm.setAlarmTypeName(dictService.getDictNameByCode("alarmType",alarm.getAlarmType())); + alarm.setAlarmStatusName(dictService.getDictNameByCode("alarmStatus",alarm.getAlarmStatus())); + if(StrUtil.isNotEmpty(alarm.getProjectState())){ + alarm.setProjectStateName(dictService.getDictNameByCode("projectStatus",alarm.getProjectState())); + } + } + return page; + } + + @Override + public List alarmCount(Long projectId, String alarmStatus) { + List list = this.baseMapper.alarmCount(projectId, alarmStatus); + list = list.stream().filter(i->StrUtil.isNotEmpty(i.getAlarmType())).collect(Collectors.toList()); + for (AlarmTypeCountDTO countDTO : list) { + countDTO.setAlarmTypeName(dictService.getDictNameByCode("alarmType",countDTO.getAlarmType())); + } + return list; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java new file mode 100644 index 0000000..a43f7c1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.casic.missiles.modular.system.mapper.BusEventImageMapper; +import com.casic.missiles.modular.system.service.IBusEventImageService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 事件图片表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +public class BusEventImageServiceImpl extends ServiceImpl implements IBusEventImageService { + + @Override + public boolean saveBusEventImages(Long eventId, List imageList) { + imageList.forEach(i->i.setEventId(eventId)); + return this.saveBatch(imageList); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java new file mode 100644 index 0000000..21e511c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java @@ -0,0 +1,39 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.mapper.BusEventMapper; +import com.casic.missiles.modular.system.service.IBusEventImageService; +import com.casic.missiles.modular.system.service.IBusEventService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; + +/** + *

+ * 事件表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class BusEventServiceImpl extends ServiceImpl implements IBusEventService { + + private final IBusEventImageService busEventImageService; + + + @Override + @Transactional + public boolean saveBusEvent(BusEvent busEvent) { + busEvent.setCreateTime(new Date()); + boolean res = this.save(busEvent); + if(res){ + res = busEventImageService.saveBusEventImages(busEvent.getId(),busEvent.getImageList()); + } + return res; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java new file mode 100644 index 0000000..2bdb63d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java @@ -0,0 +1,102 @@ +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.core.conditions.update.UpdateWrapper; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.casic.missiles.modular.system.mapper.DeviceExtMapper; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 设备扩展信息表(安全树) 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Service +public class DeviceExtServiceImpl extends ServiceImpl implements IDeviceExtService { + + + @Override + public boolean saveDeviceExt(DeviceDetailDTO deviceDetailDTO) { + DeviceExt ext = new DeviceExt(); + ext.setDeviceId(deviceDetailDTO.getId()); + ext.setCameraCode(deviceDetailDTO.getCameraCode()); + ext.setCameraIp(deviceDetailDTO.getCameraIp()); + ext.setCameraPort(deviceDetailDTO.getCameraPort()); + ext.setGasCode(deviceDetailDTO.getGasCode()); + ext.setGasIp(deviceDetailDTO.getGasIp()); + ext.setGasPort(deviceDetailDTO.getGasPort()); + ext.setHatLiningCode(deviceDetailDTO.getHatLiningCode()); + return this.save(ext); + } + + @Override + public boolean updateDeviceExt(DeviceDetailDTO deviceDetailDTO) { + DeviceExt ext = this.selectByDeviceId(deviceDetailDTO.getId()); + ext.setCameraCode(deviceDetailDTO.getCameraCode()); + ext.setCameraIp(deviceDetailDTO.getCameraIp()); + ext.setCameraPort(deviceDetailDTO.getCameraPort()); + ext.setGasCode(deviceDetailDTO.getGasCode()); + ext.setGasIp(deviceDetailDTO.getGasIp()); + ext.setGasPort(deviceDetailDTO.getGasPort()); + ext.setHatLiningCode(deviceDetailDTO.getHatLiningCode()); + return this.updateById(ext); + } + + @Override + public boolean removeByDeviceIds(List deviceIds) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("DEVICE_ID",deviceIds); + return this.remove(queryWrapper); + } + + @Override + public boolean setGasThreshold(String gasIp, String gasPort, String threshold) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.set("GAS_THRESHOLD",threshold); + updateWrapper.eq("GAS_IP",gasIp); + updateWrapper.eq("GAS_PORT",gasPort); + return this.update(updateWrapper); + } + + @Override + public String getGasThreshold(String gasIp, String gasPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("GAS_IP",gasIp); + queryWrapper.eq("GAS_PORT",gasPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getGasThreshold() : null; + } + + private DeviceExt selectByDeviceId(Long deviceId){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVICE_ID",deviceId); + return this.getOne(queryWrapper); + } + + @Override + public Long selectByGasIpPort(String gasIp, String gasPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("GAS_IP",gasIp); + queryWrapper.eq("GAS_PORT",gasPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getDeviceId() : null; + } + + @Override + public Long selectByCameraIpPort(String cameraIp, String cameraPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("CAMERA_IP",cameraIp); + queryWrapper.eq("CAMERA_PORT",cameraPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getDeviceId() : null; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java new file mode 100644 index 0000000..9df79ef --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.mapper.DeviceMapper; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.modular.system.consts.DeviceConst.*; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class DeviceServiceImpl extends ServiceImpl implements IDeviceService { + + private final AbstractDictService dictService; + private final IDeviceExtService deviceExtService; + + private final IProjectDeviceService projectDeviceService; + + @Transactional + @Override + public boolean saveDevice(DeviceDetailDTO deviceDetailDTO) { + deviceDetailDTO.setCreateTime(new Date()); + boolean deviceRes = this.save(deviceDetailDTO); + if(deviceRes && DEVICE_TYPE_TREE.equals(deviceDetailDTO.getDeviceType())){ + deviceRes = deviceExtService.saveDeviceExt(deviceDetailDTO); + } + return deviceRes; + } + + @Transactional + @Override + public boolean updateDevice(DeviceDetailDTO deviceDetailDTO) { + boolean deviceRes = this.updateById(deviceDetailDTO); + if(deviceRes && DEVICE_TYPE_TREE.equals(deviceDetailDTO.getDeviceType())){ + deviceRes = deviceExtService.updateDeviceExt(deviceDetailDTO); + } + return deviceRes; + } + + @Transactional + @Override + public boolean deleteDevices(List deviceIds) { + return this.removeByIds(deviceIds) & deviceExtService.removeByDeviceIds(deviceIds); + } + + @Override + public Page listPage(Page page, QueryWrapper queryWrapper,String status,Long projectId) { + String ID_COLUMN_NAME = "br_device.ID"; + List useDevices = this.selectProjectDevice(null); + List projectDevices; + if(ObjectUtil.isNotEmpty(projectId)){ + projectDevices = this.selectProjectDevice(projectId); + } else { + projectDevices = null; + } + + // 查询使用中的设备(如果传了 projectId,查询 使用中&&此现场) + if(DEVICE_STATUS_USE.equals(status)){ + if(CollUtil.isEmpty(useDevices)){ + return page; + } + if(ObjectUtil.isNotEmpty(projectId) && CollUtil.isEmpty(projectDevices)){ + return page; + } + queryWrapper.in(ID_COLUMN_NAME,useDevices); + if(CollUtil.isNotEmpty(projectDevices)){ + queryWrapper.in(ID_COLUMN_NAME,projectDevices); + } + + } + + // 查询未使用的设备(如果传了 projectId,查询 未使用||此现场) + if(DEVICE_STATUS_NORMAL.equals(status)) { + if (CollUtil.isNotEmpty(useDevices)) { + if (CollUtil.isEmpty(projectDevices)) { + queryWrapper.notIn(ID_COLUMN_NAME, useDevices); + } else { + queryWrapper.and(i -> i.notIn(ID_COLUMN_NAME, useDevices).or().in(ID_COLUMN_NAME, projectDevices)); + } + } + } + + page = this.baseMapper.listDetailPage(page, queryWrapper); + for (DeviceDetailDTO record : page.getRecords()) { + record.setDeviceTypeName(dictService.getDictNameByCode("deviceType",record.getDeviceType())); + record.setIsPowerSupplyName(dictService.getDictNameByCode("isPowerSupply",record.getIsPowerSupply())); + record.setRegisterTime(DateUtil.formatDate(record.getCreateTime())); + record.setStatus(useDevices.contains(record.getId()) ? DEVICE_STATUS_USE : DEVICE_STATUS_NORMAL); + record.setStatusName(dictService.getDictNameByCode("deviceStatus",record.getStatus())); + } + return page; + } + + @Override + public List selectProjectDevice(Long projectId) { + return this.baseMapper.selectProjectDevice(projectId); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceSupportServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceSupportServiceImpl.java new file mode 100644 index 0000000..ffd01ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceSupportServiceImpl.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.mapper.DeviceMapper; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceSupportService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; + +import static com.casic.missiles.modular.system.consts.DeviceConst.DEVICE_TYPE_HAT; + +@Service +@RequiredArgsConstructor +public class DeviceSupportServiceImpl implements IDeviceSupportService { + + private final IDeviceExtService deviceExtService; + + private final DeviceMapper deviceMapper; + + @Override + public Long selectByGasIpPort(String gasIp, String gasPort) { + return deviceExtService.selectByGasIpPort(gasIp, gasPort); + } + + @Override + public List selectHelmetList() { + return deviceMapper.selectHelmetList(DEVICE_TYPE_HAT); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectDeviceServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectDeviceServiceImpl.java new file mode 100644 index 0000000..965f55c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectDeviceServiceImpl.java @@ -0,0 +1,96 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.DataGas; +import com.casic.missiles.modular.system.entity.DataTreeLocation; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.mapper.ProjectDeviceMapper; +import com.casic.missiles.modular.system.service.IDataSupportService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.utils.LngLatUtil; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.stream.Collectors; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class ProjectDeviceServiceImpl extends ServiceImpl implements IProjectDeviceService { + + private final IDataSupportService dataSupportService; + + @Override + public boolean saveProjectDeviceList(Long projectId, List projectDeviceList) { + projectDeviceList.forEach(i->i.setProjectId(projectId)); + return this.saveBatch(projectDeviceList); + } + + @Transactional + @Override + public boolean updateProjectDeviceList(Long projectId, List projectDeviceList) { + return this.deleteByProjectId(projectId) && this.saveProjectDeviceList(projectId, projectDeviceList); + } + + @Override + public boolean deleteByProjectId(Long projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("PROJECT_ID",projectId); + return this.remove(queryWrapper); + } + + @Override + public boolean deleteByProjectIds(List projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("PROJECT_ID",projectId); + return this.remove(queryWrapper); + } + + @Override + public List selectDetailByProjectId(Long projectId) { + return this.baseMapper.selectDetailByProjectId(projectId); + } + + @Override + public Long selectProjectIdByDevice(Long deviceId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVICE_ID",deviceId); + queryWrapper.exists("(select Id FROM br_work_site_info p where p.ID = br_project_device.PROJECT_ID AND p.PROJECT_STATE != '3')"); + ProjectDevice projectDevice = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(projectDevice) ? projectDevice.getProjectId() : null; + } + + @Override + public List selectDeviceLocationList(Long projectId) { + List list = this.baseMapper.selectDeviceLocationList(projectId); + for (DeviceLocationDTO locationDTO : list) { + DataGas dataGas = dataSupportService.getGasData(locationDTO.getDeviceId()); + DataTreeLocation location = dataSupportService.getTreeLocation(locationDTO.getDeviceId(),true); + if(ObjectUtil.isNotEmpty(dataGas)){ + locationDTO.setGasValue(dataGas.getGasValue()); + locationDTO.setTime(DateUtil.formatDateTime(dataGas.getTs())); + } + if(ObjectUtil.isNotEmpty(location)){ + locationDTO.setLng(location.getGdLng()); + locationDTO.setLat(location.getGdLat()); + locationDTO.setLocation(location.getLocation()); + } + } + list = list.stream().filter(i-> StrUtil.isAllNotEmpty(i.getLng(),i.getLat())).collect(Collectors.toList()); + return LngLatUtil.sort(list); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectWorkerServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectWorkerServiceImpl.java new file mode 100644 index 0000000..c3ec86c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectWorkerServiceImpl.java @@ -0,0 +1,101 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.DataHelmetHealth; +import com.casic.missiles.modular.system.entity.DataHelmetLocation; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.mapper.ProjectWorkerMapper; +import com.casic.missiles.modular.system.service.IHelmetSupportService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.system.consts.ProjectConst.WORKER_TYPE_NORMAL; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class ProjectWorkerServiceImpl extends ServiceImpl implements IProjectWorkerService { + + private final AbstractDeptService deptService; + private final IHelmetSupportService helmetSupportService; + + @Override + public boolean saveProjectWorkerList(Long projectId, List projectWorkerList) { + projectWorkerList.forEach(i->i.setProjectId(projectId)); + return this.saveBatch(projectWorkerList); + } + + @Transactional + @Override + public boolean updateProjectWorkerList(Long projectId, List projectWorkerList) { + return this.deleteByProjectId(projectId) && this.saveProjectWorkerList(projectId, projectWorkerList) ; + } + + @Override + public boolean deleteByProjectId(Long projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("PROJECT_ID",projectId); + return this.remove(queryWrapper); + } + + @Override + public boolean deleteByProjectIds(List projectIds) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("PROJECT_ID",projectIds); + return this.remove(queryWrapper); + } + + + @Override + public List selectDetailByProjectId(Long projectId,String workerType) { + List projectWorkerList = this.baseMapper.selectDetailByProjectId(projectId,workerType); + for (ProjectWorker projectWorker : projectWorkerList) { + if(ObjectUtil.isNotEmpty(projectWorker.getWorkerDeptId())){ + projectWorker.setWorkerDeptName(deptService.getDeptName(projectWorker.getWorkerDeptId())); + } + } + return projectWorkerList; + } + + @Override + public List selectWorkerLocationDTO(Long projectId) { + List projectWorkerList = this.baseMapper.selectWorkerLocationList(projectId,WORKER_TYPE_NORMAL); + for (WorkerLocationDTO workerLocationDTO : projectWorkerList) { + if(ObjectUtil.isNotEmpty(workerLocationDTO.getHatId())){ + DataHelmetLocation location = helmetSupportService.getHelmetLocation(workerLocationDTO.getHatId(),true); + if(ObjectUtil.isNotEmpty(location)){ + workerLocationDTO.setLng(location.getGdLng()); + workerLocationDTO.setLat(location.getGdLat()); + workerLocationDTO.setLocation(location.getLocation()); + } + + DataHelmetHealth health = helmetSupportService.getHelmetHealth(workerLocationDTO.getHatId()); + if(ObjectUtil.isNotEmpty(health)){ + workerLocationDTO.setBloodOxygen(health.getBloodOxygen()); + workerLocationDTO.setHeartRate(health.getHeartRate()); + workerLocationDTO.setTime(DateUtil.formatDateTime(health.getTs())); + } + } + } + projectWorkerList = projectWorkerList.stream().filter(i-> StrUtil.isAllNotEmpty(i.getLng(),i.getLat())).collect(Collectors.toList()); + return projectWorkerList; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkSiteInfoServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkSiteInfoServiceImpl.java new file mode 100644 index 0000000..5068da2 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkSiteInfoServiceImpl.java @@ -0,0 +1,151 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.mapper.WorkSiteInfoMapper; +import com.casic.missiles.modular.system.service.*; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.system.consts.ProjectConst.*; + +/** + *

+ * 作业现场表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class WorkSiteInfoServiceImpl extends ServiceImpl implements IWorkSiteInfoService { + + private final IProjectWorkerService projectWorkerService; + private final IProjectDeviceService projectDeviceService; + + private final IWorkerService workerService; + private final IBraceletService braceletService; + + private final AbstractDeptService deptService; + private final AbstractDictService dictService; + @Override + @Transactional + public boolean addWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO) { + workSiteDetailDTO.setCreateTime(new Date()); + workSiteDetailDTO.setUpdateTime(new Date()); + workSiteDetailDTO.setProjectState(PROJECT_STATE_PREPARE); + boolean res = this.save(workSiteDetailDTO); + if(res){ + res = projectDeviceService.saveProjectDeviceList(workSiteDetailDTO.getId(), workSiteDetailDTO.getDeviceList()); + res = res & projectWorkerService.saveProjectWorkerList(workSiteDetailDTO.getId(), workSiteDetailDTO.getWorkerList()); + } + return res; + } + + @Override + @Transactional + public boolean updateWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO) { + workSiteDetailDTO.setUpdateTime(new Date()); + boolean res = this.updateById(workSiteDetailDTO); + if(res){ + res = projectDeviceService.updateProjectDeviceList(workSiteDetailDTO.getId(), workSiteDetailDTO.getDeviceList()); + res = res & projectWorkerService.updateProjectWorkerList(workSiteDetailDTO.getId(), workSiteDetailDTO.getWorkerList()); + } + return res; + } + + @Override + public boolean deleteProjects(List projectIds) { + if(CollUtil.isNotEmpty(projectIds)) { + projectDeviceService.deleteByProjectIds(projectIds); + projectWorkerService.deleteByProjectIds(projectIds); + return this.removeByIds(projectIds); + } + return true; + } + + @Override + public WorkSiteDetailDTO getWorkSiteDetail(Long projectId) { + WorkSiteInfo workSiteInfo = this.getById(projectId); + WorkSiteDetailDTO workSiteDetailDTO = new WorkSiteDetailDTO(); + BeanUtil.copyProperties(workSiteInfo,workSiteDetailDTO,true); + workSiteDetailDTO.setDeviceList(projectDeviceService.selectDetailByProjectId(projectId)); + workSiteDetailDTO.setWorkerList(projectWorkerService.selectDetailByProjectId(projectId,WORKER_TYPE_NORMAL)); + + Worker responseWorker = workerService.selectWorkerDetail(workSiteDetailDTO.getWorkPerson()); + if(ObjectUtil.isNotEmpty(responseWorker)){ + workSiteDetailDTO.setWorkPersonName(responseWorker.getWorkerName()); + workSiteDetailDTO.setWorkPersonPhoneNumber(responseWorker.getPhoneNumber()); + workSiteDetailDTO.setWorkPersonDeptId(responseWorker.getDeptId()); + workSiteDetailDTO.setWorkPersonDeptName(responseWorker.getDeptName()); + } + return workSiteDetailDTO; + } + + @Override + public Page selectListPage(Page page, QueryWrapper queryWrapper) { + page = this.baseMapper.selectListPage(page, queryWrapper); + for (WorkSiteInfo workSiteInfo : page.getRecords()) { + workSiteInfo.setProjectStateName(dictService.getDictNameByCode("projectState", workSiteInfo.getProjectState())); + if(ObjectUtil.isNotEmpty(workSiteInfo.getWorkPersonDeptId())){ + workSiteInfo.setWorkPersonDeptName(deptService.getDeptName(workSiteInfo.getWorkPersonDeptId())); + } + workSiteInfo.setRegisterTime(DateUtil.formatDate(workSiteInfo.getCreateTime())); + } + return page; + } + + @Override + public boolean start(Long projectId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",projectId); + updateWrapper.set("PROJECT_STATE",PROJECT_STATE_WORKING); + updateWrapper.set("START_TIME",new Date()); + boolean res = this.update(updateWrapper); + //braceletService.enableBracelet(selectProjectBracelets(projectId)); + return res; + } + + @Override + public boolean finish(Long projectId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",projectId); + updateWrapper.set("PROJECT_STATE",PROJECT_STATE_FINISH); + updateWrapper.set("FINISH_TIME",new Date()); + boolean res = this.update(updateWrapper); + //braceletService.disableBracelet(selectProjectBracelets(projectId)); + return res; + } + + private List selectProjectBracelets(Long projectId){ + List deviceCodes = new ArrayList<>(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("PROJECT_ID",projectId); + queryWrapper.isNotNull("BRACELET_CODE"); + queryWrapper.select("BRACELET_CODE"); + List res = projectWorkerService.listObjs(queryWrapper); + if(CollUtil.isNotEmpty(res)){ + deviceCodes = res.stream().map(Object::toString).distinct().collect(Collectors.toList()); + } + return deviceCodes; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkerServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkerServiceImpl.java new file mode 100644 index 0000000..6859cff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkerServiceImpl.java @@ -0,0 +1,110 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.mapper.WorkerMapper; +import com.casic.missiles.modular.system.service.*; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.modular.system.consts.ProjectConst.WORKER_TYPE_TEMP; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class WorkerServiceImpl extends ServiceImpl implements IWorkerService { + + private final IProjectWorkerService projectWorkerService; + + private final IProjectDeviceService projectDeviceService; + private final AbstractDictService dictService; + private final AbstractDeptService deptService; + private final IDeviceExtService deviceExtService; + + @Override + @Transactional + public boolean addWorker(Worker worker, Long projectId) { + worker.setCreateTime(new Date()); + boolean res = this.save(worker); + if(res && ObjectUtil.isNotEmpty(projectId)){ + res = projectWorkerService.save(new ProjectWorker(projectId, worker.getId())); + if(ObjectUtil.isNotEmpty(worker.getWorkerAvatar())){ + // todo 向一体机推送人脸图片 + } + } + return res; + } + + @Override + public Page selectListPage(Page page, QueryWrapper ew) { + page = this.baseMapper.selectListPage(page, ew); + for (Worker worker : page.getRecords()) { + wrapperWorker(worker); + } + return page; + } + + private void wrapperWorker(Worker worker) { + if(StrUtil.isNotEmpty(worker.getGender())){ + worker.setGenderName(dictService.getDictNameByCode("sysSex", worker.getGender())); + } + if(ObjectUtil.isNotEmpty(worker.getDeptId())){ + worker.setDeptName(deptService.getDeptName(worker.getDeptId())); + } + worker.setRegisterTime(DateUtil.formatDate(worker.getCreateTime())); + if(StrUtil.isNotEmpty(worker.getStatus())){ + worker.setStatusName(dictService.getDictNameByCode("workerStatus", worker.getStatus())); + } + } + + @Override + public Worker selectWorkerDetail(Long workerId) { + Worker worker = this.getById(workerId); + if(ObjectUtil.isNotEmpty(worker)){ + wrapperWorker(worker); + } + return worker; + } + + @Override + public List faceRegister(String cameraIp, String cameraPort) { + Long deviceId = deviceExtService.selectByCameraIpPort(cameraIp, cameraPort); + if(ObjectUtil.isNotEmpty(deviceId)){ + Long projectId = projectDeviceService.selectProjectIdByDevice(deviceId); + if(ObjectUtil.isNotEmpty(projectId)){ + return this.baseMapper.selectWorkerAvatars(projectId); + } + } + return null; + } + + @Override + public List projectTempWorker(Long projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("WORKER_TYPE",WORKER_TYPE_TEMP); + queryWrapper.exists("(select ID FROM br_project_worker WHERE PROJECT_ID = "+ projectId +")"); + List workers = this.list(queryWrapper); + workers.forEach(this::wrapperWorker); + return workers; + } +} diff --git a/casic_video_283_web/pom.xml b/casic_video_283_web/pom.xml new file mode 100644 index 0000000..feace49 --- /dev/null +++ b/casic_video_283_web/pom.xml @@ -0,0 +1,166 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + casic_video_283_web + 1.0.0 + jar + casic_video_283_web + casic web启动入口 + + + + dev + + true + + + dev + + + + test + + test + + + + prod + + prod + + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-actuator + + + io.micrometer + micrometer-core + + + + + org.springframework.boot + spring-boot-starter-jdbc + + + + com.casic + casic-core + ${core.version} + + + com.casic + casic-admin-core + ${admin.version} + + + io.springfox + springfox-swagger-ui + + + + + com.casic + casic-admin-support + ${admin.version} + + + mysql + mysql-connector-java + ${mysql.driver.version} + + + com.casic + casic-area-starter + ${admin.version} + + + + com.casic + casic_video_283_server + ${pro.version} + + + + org.springframework.boot + spring-boot-starter-tomcat + + + + + casic_video_283_web-${pro.version} + + + org.apache.maven.plugins + maven-jar-plugin + ${maven.jar.plugin.version} + + + + /config/*-*.yml + **/MockController.class + + + + com.casic.missiles.CasicApplication + true + ./ + + + + + + org.apache.maven.plugins + maven-assembly-plugin + ${maven.assembly.plugin.version} + + + make-assembly + package + + single + + + + + + org.apache.maven.plugins + maven-war-plugin + ${maven.war.plugin.version} + + + + + src/main/resources + + + /config/*/* + /config/*-*.yml + + true + + + src/main/java + + **/*.xml + + true + + + + \ No newline at end of file diff --git a/casic_video_283_web/src/main/build/bin/start.bat b/casic_video_283_web/src/main/build/bin/start.bat new file mode 100644 index 0000000..1db4e88 --- /dev/null +++ b/casic_video_283_web/src/main/build/bin/start.bat @@ -0,0 +1,4 @@ +@echo off +title ${project.build.finalName} +java -jar ./lib/${project.build.finalName}.jar +@pause diff --git a/casic_video_283_web/src/main/build/bin/start.sh b/casic_video_283_web/src/main/build/bin/start.sh new file mode 100644 index 0000000..1cc33fc --- /dev/null +++ b/casic_video_283_web/src/main/build/bin/start.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +jar_name="${project.build.finalName}.jar" +echo "starting $jar_name ..." + +PID=$(ps -ef | grep ${jar_name} | grep -v grep | awk '{print $2}') + +OLD_IFS="$IFS" +IFS="," +PIDARR=($PID) +IFS="$OLD_IFS" + +if [ ! $PID ]; then + echo "process ${jar_name} not exit" +else + echo "process id: $PID" + + kill -9 ${PID} + + if [ $? -eq 0 ]; then + echo "kill ${jar_name} success" + else + echo "kill ${jar_name} fail" + exit + fi +fi + + + +nohup java -jar ./lib/${jar_name} >/dev/null 2>log & +echo "start ${jar_name} ..." \ No newline at end of file diff --git a/casic_video_283_web/src/main/build/package.xml b/casic_video_283_web/src/main/build/package.xml new file mode 100644 index 0000000..c9259ad --- /dev/null +++ b/casic_video_283_web/src/main/build/package.xml @@ -0,0 +1,43 @@ + + + package + + zip + tar.gz + + true + + + + true + true + lib + runtime + + + + + src/main/build/bin + + start.bat + start.sh + + true + 0744 + / + + + src/main/resources/config + true + + *.yml + /*/* + + /config + + + src/main/resources/i18n + / + + + \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java new file mode 100644 index 0000000..73d7799 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.dto; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "AlarmUpload",description = "报警上传") +@Data +public class AlarmUpload { + + @ApiModelProperty(value = "摄像头ip") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + @ApiModelProperty(value = "安全树甲烷设备ip") + private String gasIp; + @ApiModelProperty(value = "安全树甲烷设备端口") + private String gasPort; + @ApiModelProperty(value = "报警值") + private String alarmValue; + @ApiModelProperty(value = "报警时间") + private String alarmTime; + @ApiModelProperty(value = "报警类型") + private String alarmType; + @ApiModelProperty(value = "报警图片") + private String alarmImage; + @ApiModelProperty(value = "报警内容") + private String alarmContent; + + @Override + public String toString() { + return "AlarmUpload{" + + "cameraIp='" + cameraIp + '\'' + + ", cameraPort='" + cameraPort + '\'' + + ", gasIp='" + gasIp + '\'' + + ", gasPort='" + gasPort + '\'' + + ", alarmValue='" + alarmValue + '\'' + + ", alarmTime='" + alarmTime + '\'' + + ", alarmType='" + alarmType + '\'' + + ", alarmImage='" + (StrUtil.isNotEmpty(alarmImage) ? alarmImage.substring(0,50) : "null") + '\'' + + ", alarmContent='" + alarmContent + '\'' + + '}'; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java new file mode 100644 index 0000000..ea518d9 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.modular.system.entity.Device; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("DeviceDetailDTO") +@Data +public class DeviceDetailDTO extends Device { + + @ApiModelProperty(value = "摄像头编号") + private String cameraCode; + + @ApiModelProperty(value = "摄像头IP") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + + @ApiModelProperty(value = "激甲编号") + private String gasCode; + + @ApiModelProperty(value = "激甲IP") + private String gasIp; + + @ApiModelProperty(value = "激甲端口") + private String gasPort; + + @ApiModelProperty(value = "智能帽衬编号") + private String hatLiningCode; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java new file mode 100644 index 0000000..29378ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("WorkSiteDetailDTO") +public class WorkSiteDetailDTO extends WorkSiteInfo { + + @ApiModelProperty(value = "安全树列表",dataType = "ProjectDevice") + private List deviceList; + + @ApiModelProperty(value = "人员列表",dataType = "ProjectWorker") + private List workerList; + + + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java new file mode 100644 index 0000000..6fd7b24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java @@ -0,0 +1,68 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "WorkerLocationDTO",description = "人员位置列表(首页)") +@Data +public class WorkerLocationDTO { + + @ApiModelProperty("人员ID") + private Long workerId; + + @ApiModelProperty("人员姓名") + private String workerName; + + @ApiModelProperty("安全帽编号") + private String hatCode; + + @ApiModelProperty("安全帽ID") + private Long hatId; + + @ApiModelProperty("背心编号") + private String vastCode; + + @ApiModelProperty("手环编号") + private String braceletCode; + + @ApiModelProperty("位置") + private String location; + + @ApiModelProperty("时间") + private String time; + + @ApiModelProperty("经度") + private String lng; + + @ApiModelProperty("纬度") + private String lat; + + @ApiModelProperty("心率") + private String heartRate; + + @ApiModelProperty("血氧") + private String bloodOxygen; + + @ApiModelProperty("一氧化碳") + private String co; + + @ApiModelProperty("甲烷") + private String gas; + + @ApiModelProperty("硫化氢") + private String h2s; + + @ApiModelProperty("氧气") + private String o2; + + @ApiModelProperty("信号") + private String signal; + + @ApiModelProperty("电量") + private String cell; + + @ApiModelProperty("是否报警") + private boolean alarmFlag; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java new file mode 100644 index 0000000..efb4a23 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java @@ -0,0 +1,159 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 报警记录表 + *

+ * + * @author zyj + * @since 2023-05-16 + */ +@Data +@ApiModel("Alarm") +@TableName("br_bus_alarm") +public class BusAlarm implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @ApiModelProperty(value = "设备ID") + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 报警类型 + */ + @ApiModelProperty(value = "报警类型") + @TableField("ALARM_TYPE") + private String alarmType; + + /** + * 报警状态 + */ + @ApiModelProperty(value = "报警状态") + @TableField("ALARM_STATUS") + private String alarmStatus; + + /** + * 报警值 + */ + @ApiModelProperty(value = "报警值") + @TableField("ALARM_VALUE") + private String alarmValue; + + /** + * 报警图片 + */ + @ApiModelProperty(value = "报警图片") + @TableField("ALARM_IMAGE") + private String alarmImage; + + /** + * 报警内容 + */ + @ApiModelProperty(value = "报警内容") + @TableField("ALARM_CONTENT") + private String alarmContent; + + /** + * 报警时间 + */ + @ApiModelProperty(value = "报警时间") + @TableField("ALARM_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date alarmTime; + + /** + * 消警时间 + */ + @ApiModelProperty(value = "消警时间") + @TableField("CANCEL_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + /** + * 报警位置经度 + */ + @ApiModelProperty(value = "报警位置经度") + @TableField("ALARM_LNG") + private String alarmLng; + + /** + * 报警位置纬度 + */ + @ApiModelProperty(value = "报警位置纬度") + @TableField("ALARM_LAT") + private String alarmLat; + + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmStatusName; + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmTypeName; + @ApiModelProperty("作业名称") + @TableField(exist = false) + private String workTitle; + @ApiModelProperty("所属道路") + @TableField(exist = false) + private String workRoad; + @ApiModelProperty("作业状态") + @TableField(exist = false) + private String projectState; + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + @ApiModelProperty("负责人姓名") + @TableField(exist = false) + private String workPersonName; + @ApiModelProperty("负责人联系方式") + @TableField(exist = false) + private String workPersonPhoneNumber; + + + @Override + public String toString() { + return "BusAlarm{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + ", alarmType=" + alarmType + + ", alarmValue=" + alarmValue + + ", alarmStatus=" + alarmStatus + + ", alarmImage=" + alarmImage + + ", alarmContent=" + alarmContent + + ", alarmTime=" + alarmTime + + ", cancelTime=" + cancelTime + + ", alarmLng=" + alarmLng + + ", alarmLat=" + alarmLat + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java new file mode 100644 index 0000000..a0b7543 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + *

+ * 事件表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event") +@Data +@ApiModel("BusEvent") +public class BusEvent implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("事件ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件标题 + */ + @ApiModelProperty("事件名称") + @TableField("EVENT_TITLE") + private String eventTitle; + + /** + * 上报人员 + */ + @ApiModelProperty("上报人员") + @TableField("UPLOAD_NAME") + private String uploadName; + + /** + * 联系方式 + */ + @ApiModelProperty("联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 事件描述 + */ + @ApiModelProperty("事件描述") + @TableField("EVENT_DESCRIPTION") + private String eventDescription; + + @ApiModelProperty("经度") + @TableField("LNG") + private String lng; + + @ApiModelProperty("纬度") + @TableField("LAT") + private String lat; + + /** + * 事件上传时间 + */ + @ApiModelProperty("事件上传时间") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty("事件照片") + @TableField(exist = false) + private List imageList; + + + + @Override + public String toString() { + return "BusEvent{" + + "id=" + id + + ", eventTitle=" + eventTitle + + ", uploadName=" + uploadName + + ", phoneNumber=" + phoneNumber + + ", eventDescription=" + eventDescription + + ", lng=" + lng + + ", lat=" + lat + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java new file mode 100644 index 0000000..1e75245 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 事件图片表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event_image") +@Data +@ApiModel("BusEventImage") +public class BusEventImage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件ID + */ + @TableField("EVENT_ID") + private Long eventId; + + /** + * 报警图片 + */ + @TableField("IMAGE") + @ApiModelProperty("图片url") + private String image; + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java new file mode 100644 index 0000000..df89c70 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.core.base.json.DateDeserializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Device") +@TableName("br_device") +@Data +public class Device implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "设备ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty(value = "设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + /** + * 设备类型 + */ + @ApiModelProperty(value = "设备类型") + @TableField("DEVICE_TYPE") + private String deviceType; + + /** + * 设备批次 + */ + @ApiModelProperty(value = "设备批次") + @TableField("DEVICE_BATCH") + private String deviceBatch; + + /** + * 厂家 + */ + @ApiModelProperty(value = "厂家") + @TableField("MANUFACTURER") + private String manufacturer; + + /** + * 是否供电 + */ + @ApiModelProperty(value = "是否供电") + @TableField("IS_POWER_SUPPLY") + private String isPowerSupply; + + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间",dataType = "Date") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty(value = "设备类型名称") + @TableField(exist = false) + private String deviceTypeName; + + @ApiModelProperty(value = "是否供电名称") + @TableField(exist = false) + private String isPowerSupplyName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", deviceCode=" + deviceCode + + ", deviceType=" + deviceType + + ", deviceBatch=" + deviceBatch + + ", manufacturer=" + manufacturer + + ", isPowerSupply=" + isPowerSupply + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java new file mode 100644 index 0000000..5ee7015 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java @@ -0,0 +1,99 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 设备扩展信息表(安全树) + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Data +@TableName("br_device_ext") +public class DeviceExt implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 摄像头编号 + */ + @TableField("CAMERA_CODE") + private String cameraCode; + + /** + * 摄像头IP + */ + @TableField("CAMERA_IP") + private String cameraIp; + + /** + * 摄像头端口 + */ + @TableField("CAMERA_PORT") + private String cameraPort; + + /** + * 激甲编号 + */ + @TableField("GAS_CODE") + private String gasCode; + + /** + * 激甲IP + */ + @TableField("GAS_IP") + private String gasIp; + + /** + * 激甲端口 + */ + @TableField("GAS_PORT") + private String gasPort; + + /** + * 甲烷报警阈值 + */ + @TableField("GAS_THRESHOLD") + private String gasThreshold; + + @TableField(value = "HAT_LINING_CODE") + private String hatLiningCode; + + + @Override + public String toString() { + return "DeviceExt{" + + "id=" + id + + ", deviceId=" + deviceId + + ", cameraCode=" + cameraCode + + ", cameraIp=" + cameraIp + + ", cameraPort=" + cameraPort + + ", gasCode=" + gasCode + + ", gasIp=" + gasIp + + ", gasPort=" + gasPort + + ", gasThreshold=" + gasThreshold + + ", hatLiningCode=" + hatLiningCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java new file mode 100644 index 0000000..c4f3472 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java @@ -0,0 +1,62 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Data +@ApiModel("ProjectDevice") +@TableName("br_project_device") +public class ProjectDevice implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + @ApiModelProperty("设备ID(新增编辑时传)") + private Long deviceId; + + /** + * 设备编号 + */ + @TableField(exist = false) + @ApiModelProperty("设备编号(详情中展示,新增编辑不用传)") + private String deviceCode; + + @Override + public String toString() { + return "ProjectDevice{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java new file mode 100644 index 0000000..10b23c4 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java @@ -0,0 +1,104 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("ProjectWorker") +@TableName("br_project_worker") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ProjectWorker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 人员ID + */ + @ApiModelProperty("人员ID") + @TableField("WORKER_ID") + private Long workerId; + + /** + * 安全帽编号 + */ + @ApiModelProperty("安全帽编号") + @TableField("HAT_CODE") + private String hatCode; + + /** + * 背心编号 + */ + @ApiModelProperty("背心编号") + @TableField("VAST_CODE") + private String vastCode; + + /** + * 手环编号 + */ + @ApiModelProperty("手环编号") + @TableField("BRACELET_CODE") + private String braceletCode; + + @ApiModelProperty("人员姓名(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerName; + + @ApiModelProperty("人员部门ID(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptId; + + @ApiModelProperty("人员部门名称(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptName; + + @ApiModelProperty("人员联系方式(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerPhoneNumber; + + public ProjectWorker(Long projectId, Long workerId) { + this.projectId = projectId; + this.workerId = workerId; + } + + @Override + public String toString() { + return "ProjectWorker{" + + "id=" + id + + ", projectId=" + projectId + + ", workerId=" + workerId + + ", hatCode=" + hatCode + + ", vastCode=" + vastCode + + ", braceletCode=" + braceletCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java new file mode 100644 index 0000000..fa6f41d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 作业现场表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("WorkSiteInfo") +@TableName("br_work_site_info") +@Data +public class WorkSiteInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("作业现场ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业名称 + */ + @ApiModelProperty("作业名称") + @TableField("WORK_TITLE") + private String workTitle; + + /** + * 责任人 + */ + @ApiModelProperty("责任人(人员ID)") + @TableField("WORK_PERSON") + private Long workPerson; + + /** + * 作业描述 + */ + @ApiModelProperty("作业描述") + @TableField("WORK_SITE_DESC") + private String workSiteDesc; + + /** + * 作业状态 + */ + @ApiModelProperty("作业状态") + @TableField("PROJECT_STATE") + private String projectState; + + /** + * 所属道路 + */ + @ApiModelProperty("所属道路") + @TableField("WORK_ROAD") + private String workRoad; + + @TableField("IMAGE_URL") + private String imageUrl; + + @TableField("CREATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + @TableField("UPDATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("FINISH_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + @ApiModelProperty("负责人姓名(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonName; + + @ApiModelProperty("负责人联系方式(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonPhoneNumber; + + @ApiModelProperty("负责人所属部门ID(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private Long workPersonDeptId; + + @ApiModelProperty("负责人所属部门名称(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonDeptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + + @Override + public String toString() { + return "WorkSiteInfo{" + + "id=" + id + + ", workTitle=" + workTitle + + ", workPerson=" + workPerson + + ", workSiteDesc=" + workSiteDesc + + ", projectState=" + projectState + + ", imageUrl=" + imageUrl + + ", updateTime=" + updateTime + + ", workRoad=" + workRoad + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java new file mode 100644 index 0000000..28a4daa --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java @@ -0,0 +1,147 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Worker") +@TableName("br_worker") +@Data +public class Worker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "人员ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 姓名 + */ + @ApiModelProperty(value = "姓名") + @TableField("WORKER_NAME") + private String workerName; + + /** + * 性别 + */ + @ApiModelProperty(value = "性别") + @TableField("GENDER") + private String gender; + + /** + * 所属部门 + */ + @ApiModelProperty(value = "所属部门(人员管理)") + @TableField("DEPT_ID") + private Long deptId; + + /** + * 所属单位 + */ + @ApiModelProperty(value = "所属单位(入场申请中使用)") + @TableField("OWNER_SHIP") + private String ownerShip; + + /** + * 联系方式 + */ + @ApiModelProperty(value = "联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 证件号 + */ + @ApiModelProperty(value = "证件号") + @TableField("ID_CARD_NUMBER") + private String idCardNumber; + + /** + * 入场原因 + */ + @ApiModelProperty(value = "入场原因(入场申请中使用)") + @TableField("ENTER_REASON") + private String enterReason; + + /** + * 入场人脸照片 + */ + @ApiModelProperty(value = "人脸照片(照片路径)") + @TableField("WORKER_AVATAR") + private String workerAvatar; + + /** + * 申请入场时间 + */ + @ApiModelProperty(value = "注册时间/申请入场时间") + @TableField("CREATE_TIME") + private Date createTime; + + /** + * 人员类型 + */ + @ApiModelProperty(value = "人员类型(区分人员管理和入场申请)") + @TableField("WORKER_TYPE") + private String workerType; + + @ApiModelProperty(value = "性别名称") + @TableField(exist = false) + private String genderName; + + @ApiModelProperty(value = "部门名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @ApiModelProperty(value = "是否注册(0未注册;1已注册)",allowableValues = "0,1") + @TableField(exist = false) + private String isRegister; + + @Override + public String toString() { + return "Worker{" + + "id=" + id + + ", workerName=" + workerName + + ", gender=" + gender + + ", deptId=" + deptId + + ", ownerShip=" + ownerShip + + ", phoneNumber=" + phoneNumber + + ", idCardNumber=" + idCardNumber + + ", enterReason=" + enterReason + + ", workerAvatar=" + workerAvatar + + ", createTime=" + createTime + + ", workerType=" + workerType + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java new file mode 100644 index 0000000..9801742 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警记录表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusAlarmMapper extends BaseMapper { + + Page listPage(Page page,@Param("ew") QueryWrapper queryWrapper); + + void cancelAlarm(@Param("deviceId")Long deviceId,@Param("alarmType") String alarmType); + + List alarmCount(@Param("projectId")Long projectId, @Param("alarmStatus")String alarmStatus); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java new file mode 100644 index 0000000..9590b7d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件图片表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventImageMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java new file mode 100644 index 0000000..3c85edf --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java new file mode 100644 index 0000000..4ca9212 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 设备扩展信息表(安全树) Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface DeviceExtMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java new file mode 100644 index 0000000..444c0c5 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Mapper +public interface DeviceMapper extends BaseMapper { + + Page listDetailPage(Page page,@Param("ew") QueryWrapper ew); + + List selectProjectDevice(@Param("projectId") Long projectId); + + List selectHelmetList(@Param("deviceType")String deviceType); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java new file mode 100644 index 0000000..1d0c14e --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectDeviceMapper extends BaseMapper { + List selectDetailByProjectId(@Param("projectId") Long projectId); + + List selectDeviceLocationList(@Param("projectId") Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java new file mode 100644 index 0000000..58583d1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectWorkerMapper extends BaseMapper { + + List selectDetailByProjectId(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + + List selectWorkerLocationList(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java new file mode 100644 index 0000000..a4934d2 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +/** + *

+ * 作业现场表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkSiteInfoMapper extends BaseMapper { + + Page selectListPage(Page page,@Param("ew") QueryWrapper ew); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java new file mode 100644 index 0000000..258fb12 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkerMapper extends BaseMapper { + + + Page selectListPage(Page page, @Param("ew") QueryWrapper ew); + + List selectWorkerAvatars(@Param("projectId")Long projectId); + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml new file mode 100644 index 0000000..595088a --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml @@ -0,0 +1,58 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml new file mode 100644 index 0000000..fbc3db3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml new file mode 100644 index 0000000..627d573 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml new file mode 100644 index 0000000..5321d1c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml new file mode 100644 index 0000000..94262e1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml @@ -0,0 +1,97 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml new file mode 100644 index 0000000..c6d1c24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml @@ -0,0 +1,29 @@ + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml new file mode 100644 index 0000000..8d2de10 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml new file mode 100644 index 0000000..8f01326 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml @@ -0,0 +1,26 @@ + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml new file mode 100644 index 0000000..3e28b39 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml @@ -0,0 +1,56 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java new file mode 100644 index 0000000..f63c19c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 报警记录表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusAlarmService extends IService { + + boolean alarmUpload(AlarmUpload alarmUpload); + + Page listPage(Page page,QueryWrapper queryWrapper); + + List alarmCount(Long projectId,String alarmStatus); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java new file mode 100644 index 0000000..b1187ed --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 事件图片表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusEventImageService extends IService { + + boolean saveBusEventImages(Long eventId, List imageList); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java new file mode 100644 index 0000000..85c48d0 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 事件表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusEventService extends IService { + + boolean saveBusEvent(BusEvent busEvent); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java new file mode 100644 index 0000000..6fc5361 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 设备扩展信息表(安全树) 服务类 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface IDeviceExtService extends IService { + + boolean saveDeviceExt(DeviceDetailDTO deviceDetailDTO); + + boolean updateDeviceExt(DeviceDetailDTO deviceDetailDTO); + + boolean removeByDeviceIds(List deviceIds); + + boolean setGasThreshold(String gasIp,String gasPort,String threshold); + + String getGasThreshold(String gasIp,String gasPort); + + Long selectByGasIpPort(String gasIp,String gasPort); + + Long selectByCameraIpPort(String cameraIp,String cameraPort); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java new file mode 100644 index 0000000..9e62756 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java @@ -0,0 +1,32 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IDeviceService extends IService { + + boolean saveDevice(DeviceDetailDTO deviceDetailDTO); + + boolean updateDevice(DeviceDetailDTO deviceDetailDTO); + + boolean deleteDevices(List deviceIds); + + Page listPage(Page page, QueryWrapper queryWrapper, String status,Long projectId); + + List selectProjectDevice(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java new file mode 100644 index 0000000..8599411 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IProjectDeviceService extends IService { + + boolean saveProjectDeviceList(Long projectId, List projectDeviceList); + + boolean updateProjectDeviceList(Long projectId, List projectDeviceList); + + boolean deleteByProjectId(Long projectId); + + boolean deleteByProjectIds(List projectIds); + + List selectDetailByProjectId(Long projectId); + + Long selectProjectIdByDevice(Long deviceId); + + List selectDeviceLocationList(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java new file mode 100644 index 0000000..e921bc3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IProjectWorkerService extends IService { + + boolean saveProjectWorkerList(Long projectId, List projectWorkerList); + + boolean updateProjectWorkerList(Long projectId, List projectWorkerList); + + boolean deleteByProjectId(Long projectId); + + boolean deleteByProjectIds(List projectIds); + + List selectDetailByProjectId(Long projectId,String workerType); + + List selectWorkerLocationDTO(Long projectId); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java new file mode 100644 index 0000000..58a8590 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; +/** + *

+ * 作业现场表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IWorkSiteInfoService extends IService { + + boolean addWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO); + + boolean updateWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO); + + boolean deleteProjects(List projectIds); + + WorkSiteDetailDTO getWorkSiteDetail(Long projectId); + + Page selectListPage(Page page, QueryWrapper queryWrapper); + + boolean start(Long projectId); + + boolean finish(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java new file mode 100644 index 0000000..6c6ee98 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.extension.service.IService; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IWorkerService extends IService { + + boolean addWorker(Worker worker,Long projectId); + + Page selectListPage(Page page,QueryWrapper ew); + + Worker selectWorkerDetail(Long workerId); + + List faceRegister(String cameraIp,String cameraPort); + + List projectTempWorker(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java new file mode 100644 index 0000000..b44de1d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.consts.AlarmTypeEnum; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.entity.DataTreeLocation; +import com.casic.missiles.modular.system.mapper.BusAlarmMapper; +import com.casic.missiles.modular.system.service.*; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +/** + *

+ * 报警记录表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +@Slf4j +public class BusAlarmServiceImpl extends ServiceImpl implements IBusAlarmService { + + private final IDeviceExtService deviceExtService; + private final IDeviceService deviceService; + private final IProjectDeviceService projectDeviceService; + + private final ICasicFileService fileService; + + private final AbstractDictService dictService; + private final IDataSupportService dataSupportService; + + @Override + @Transactional + public boolean alarmUpload(AlarmUpload alarmUpload) { + log.info("alarm upload ==> {}",alarmUpload.toString()); + Long deviceId = null; + if(StrUtil.isAllNotBlank(alarmUpload.getGasIp(),alarmUpload.getGasPort())){ + deviceId = deviceExtService.selectByGasIpPort(alarmUpload.getGasIp(),alarmUpload.getGasPort()); + } + if(ObjectUtil.isEmpty(deviceId) && StrUtil.isAllNotBlank(alarmUpload.getCameraIp(),alarmUpload.getCameraPort())){ + deviceId = deviceExtService.selectByCameraIpPort(alarmUpload.getCameraIp(),alarmUpload.getCameraPort()); + } + + if(ObjectUtil.isEmpty(deviceId)){ + return false; + } + + BusAlarm alarm = new BusAlarm(); + alarm.setDeviceId(deviceId); + alarm.setProjectId(projectDeviceService.selectProjectIdByDevice(deviceId)); + alarm.setAlarmValue(alarmUpload.getAlarmValue()); + if(StrUtil.isNotEmpty(alarmUpload.getAlarmTime())){ + alarm.setAlarmTime(DateUtil.parseDateTime(alarmUpload.getAlarmTime())); + }else { + alarm.setAlarmTime(new Date()); + } + + alarm.setAlarmType(alarmUpload.getAlarmType()); + alarm.setAlarmContent(alarmUpload.getAlarmContent()); + if(StrUtil.isNotEmpty(alarmUpload.getAlarmImage())){ + String imgBase64 = "data:image/jpeg;base64," + alarmUpload.getAlarmImage(); + String imageUrl = fileService.saveFile(imgBase64); + alarm.setAlarmImage(imageUrl); + } + alarm.setAlarmStatus(ALARM_STATUS_ON); + + DataTreeLocation treeLocation = dataSupportService.getTreeLocation(deviceId); + if(ObjectUtil.isNotEmpty(treeLocation)){ + alarm.setAlarmLng(treeLocation.getGdLng()); + alarm.setAlarmLat(treeLocation.getGdLat()); + } + + //自动消警 + AlarmTypeEnum alarmTypeEnum = AlarmTypeEnum.getByAlarmType(alarm.getAlarmType()); + if(ObjectUtil.isNotEmpty(alarmTypeEnum) && alarmTypeEnum.isAutoCancel()){ + this.baseMapper.cancelAlarm(deviceId,alarm.getAlarmType()); + } + return this.save(alarm); + } + + @Override + public Page listPage(Page page, QueryWrapper queryWrapper) { + page = this.baseMapper.listPage(page, queryWrapper); + for (BusAlarm alarm : page.getRecords()) { + alarm.setAlarmTypeName(dictService.getDictNameByCode("alarmType",alarm.getAlarmType())); + alarm.setAlarmStatusName(dictService.getDictNameByCode("alarmStatus",alarm.getAlarmStatus())); + if(StrUtil.isNotEmpty(alarm.getProjectState())){ + alarm.setProjectStateName(dictService.getDictNameByCode("projectStatus",alarm.getProjectState())); + } + } + return page; + } + + @Override + public List alarmCount(Long projectId, String alarmStatus) { + List list = this.baseMapper.alarmCount(projectId, alarmStatus); + list = list.stream().filter(i->StrUtil.isNotEmpty(i.getAlarmType())).collect(Collectors.toList()); + for (AlarmTypeCountDTO countDTO : list) { + countDTO.setAlarmTypeName(dictService.getDictNameByCode("alarmType",countDTO.getAlarmType())); + } + return list; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java new file mode 100644 index 0000000..a43f7c1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.casic.missiles.modular.system.mapper.BusEventImageMapper; +import com.casic.missiles.modular.system.service.IBusEventImageService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 事件图片表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +public class BusEventImageServiceImpl extends ServiceImpl implements IBusEventImageService { + + @Override + public boolean saveBusEventImages(Long eventId, List imageList) { + imageList.forEach(i->i.setEventId(eventId)); + return this.saveBatch(imageList); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java new file mode 100644 index 0000000..21e511c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java @@ -0,0 +1,39 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.mapper.BusEventMapper; +import com.casic.missiles.modular.system.service.IBusEventImageService; +import com.casic.missiles.modular.system.service.IBusEventService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; + +/** + *

+ * 事件表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class BusEventServiceImpl extends ServiceImpl implements IBusEventService { + + private final IBusEventImageService busEventImageService; + + + @Override + @Transactional + public boolean saveBusEvent(BusEvent busEvent) { + busEvent.setCreateTime(new Date()); + boolean res = this.save(busEvent); + if(res){ + res = busEventImageService.saveBusEventImages(busEvent.getId(),busEvent.getImageList()); + } + return res; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java new file mode 100644 index 0000000..2bdb63d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java @@ -0,0 +1,102 @@ +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.core.conditions.update.UpdateWrapper; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.casic.missiles.modular.system.mapper.DeviceExtMapper; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 设备扩展信息表(安全树) 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Service +public class DeviceExtServiceImpl extends ServiceImpl implements IDeviceExtService { + + + @Override + public boolean saveDeviceExt(DeviceDetailDTO deviceDetailDTO) { + DeviceExt ext = new DeviceExt(); + ext.setDeviceId(deviceDetailDTO.getId()); + ext.setCameraCode(deviceDetailDTO.getCameraCode()); + ext.setCameraIp(deviceDetailDTO.getCameraIp()); + ext.setCameraPort(deviceDetailDTO.getCameraPort()); + ext.setGasCode(deviceDetailDTO.getGasCode()); + ext.setGasIp(deviceDetailDTO.getGasIp()); + ext.setGasPort(deviceDetailDTO.getGasPort()); + ext.setHatLiningCode(deviceDetailDTO.getHatLiningCode()); + return this.save(ext); + } + + @Override + public boolean updateDeviceExt(DeviceDetailDTO deviceDetailDTO) { + DeviceExt ext = this.selectByDeviceId(deviceDetailDTO.getId()); + ext.setCameraCode(deviceDetailDTO.getCameraCode()); + ext.setCameraIp(deviceDetailDTO.getCameraIp()); + ext.setCameraPort(deviceDetailDTO.getCameraPort()); + ext.setGasCode(deviceDetailDTO.getGasCode()); + ext.setGasIp(deviceDetailDTO.getGasIp()); + ext.setGasPort(deviceDetailDTO.getGasPort()); + ext.setHatLiningCode(deviceDetailDTO.getHatLiningCode()); + return this.updateById(ext); + } + + @Override + public boolean removeByDeviceIds(List deviceIds) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("DEVICE_ID",deviceIds); + return this.remove(queryWrapper); + } + + @Override + public boolean setGasThreshold(String gasIp, String gasPort, String threshold) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.set("GAS_THRESHOLD",threshold); + updateWrapper.eq("GAS_IP",gasIp); + updateWrapper.eq("GAS_PORT",gasPort); + return this.update(updateWrapper); + } + + @Override + public String getGasThreshold(String gasIp, String gasPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("GAS_IP",gasIp); + queryWrapper.eq("GAS_PORT",gasPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getGasThreshold() : null; + } + + private DeviceExt selectByDeviceId(Long deviceId){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVICE_ID",deviceId); + return this.getOne(queryWrapper); + } + + @Override + public Long selectByGasIpPort(String gasIp, String gasPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("GAS_IP",gasIp); + queryWrapper.eq("GAS_PORT",gasPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getDeviceId() : null; + } + + @Override + public Long selectByCameraIpPort(String cameraIp, String cameraPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("CAMERA_IP",cameraIp); + queryWrapper.eq("CAMERA_PORT",cameraPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getDeviceId() : null; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java new file mode 100644 index 0000000..9df79ef --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.mapper.DeviceMapper; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.modular.system.consts.DeviceConst.*; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class DeviceServiceImpl extends ServiceImpl implements IDeviceService { + + private final AbstractDictService dictService; + private final IDeviceExtService deviceExtService; + + private final IProjectDeviceService projectDeviceService; + + @Transactional + @Override + public boolean saveDevice(DeviceDetailDTO deviceDetailDTO) { + deviceDetailDTO.setCreateTime(new Date()); + boolean deviceRes = this.save(deviceDetailDTO); + if(deviceRes && DEVICE_TYPE_TREE.equals(deviceDetailDTO.getDeviceType())){ + deviceRes = deviceExtService.saveDeviceExt(deviceDetailDTO); + } + return deviceRes; + } + + @Transactional + @Override + public boolean updateDevice(DeviceDetailDTO deviceDetailDTO) { + boolean deviceRes = this.updateById(deviceDetailDTO); + if(deviceRes && DEVICE_TYPE_TREE.equals(deviceDetailDTO.getDeviceType())){ + deviceRes = deviceExtService.updateDeviceExt(deviceDetailDTO); + } + return deviceRes; + } + + @Transactional + @Override + public boolean deleteDevices(List deviceIds) { + return this.removeByIds(deviceIds) & deviceExtService.removeByDeviceIds(deviceIds); + } + + @Override + public Page listPage(Page page, QueryWrapper queryWrapper,String status,Long projectId) { + String ID_COLUMN_NAME = "br_device.ID"; + List useDevices = this.selectProjectDevice(null); + List projectDevices; + if(ObjectUtil.isNotEmpty(projectId)){ + projectDevices = this.selectProjectDevice(projectId); + } else { + projectDevices = null; + } + + // 查询使用中的设备(如果传了 projectId,查询 使用中&&此现场) + if(DEVICE_STATUS_USE.equals(status)){ + if(CollUtil.isEmpty(useDevices)){ + return page; + } + if(ObjectUtil.isNotEmpty(projectId) && CollUtil.isEmpty(projectDevices)){ + return page; + } + queryWrapper.in(ID_COLUMN_NAME,useDevices); + if(CollUtil.isNotEmpty(projectDevices)){ + queryWrapper.in(ID_COLUMN_NAME,projectDevices); + } + + } + + // 查询未使用的设备(如果传了 projectId,查询 未使用||此现场) + if(DEVICE_STATUS_NORMAL.equals(status)) { + if (CollUtil.isNotEmpty(useDevices)) { + if (CollUtil.isEmpty(projectDevices)) { + queryWrapper.notIn(ID_COLUMN_NAME, useDevices); + } else { + queryWrapper.and(i -> i.notIn(ID_COLUMN_NAME, useDevices).or().in(ID_COLUMN_NAME, projectDevices)); + } + } + } + + page = this.baseMapper.listDetailPage(page, queryWrapper); + for (DeviceDetailDTO record : page.getRecords()) { + record.setDeviceTypeName(dictService.getDictNameByCode("deviceType",record.getDeviceType())); + record.setIsPowerSupplyName(dictService.getDictNameByCode("isPowerSupply",record.getIsPowerSupply())); + record.setRegisterTime(DateUtil.formatDate(record.getCreateTime())); + record.setStatus(useDevices.contains(record.getId()) ? DEVICE_STATUS_USE : DEVICE_STATUS_NORMAL); + record.setStatusName(dictService.getDictNameByCode("deviceStatus",record.getStatus())); + } + return page; + } + + @Override + public List selectProjectDevice(Long projectId) { + return this.baseMapper.selectProjectDevice(projectId); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceSupportServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceSupportServiceImpl.java new file mode 100644 index 0000000..ffd01ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceSupportServiceImpl.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.mapper.DeviceMapper; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceSupportService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; + +import static com.casic.missiles.modular.system.consts.DeviceConst.DEVICE_TYPE_HAT; + +@Service +@RequiredArgsConstructor +public class DeviceSupportServiceImpl implements IDeviceSupportService { + + private final IDeviceExtService deviceExtService; + + private final DeviceMapper deviceMapper; + + @Override + public Long selectByGasIpPort(String gasIp, String gasPort) { + return deviceExtService.selectByGasIpPort(gasIp, gasPort); + } + + @Override + public List selectHelmetList() { + return deviceMapper.selectHelmetList(DEVICE_TYPE_HAT); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectDeviceServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectDeviceServiceImpl.java new file mode 100644 index 0000000..965f55c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectDeviceServiceImpl.java @@ -0,0 +1,96 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.DataGas; +import com.casic.missiles.modular.system.entity.DataTreeLocation; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.mapper.ProjectDeviceMapper; +import com.casic.missiles.modular.system.service.IDataSupportService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.utils.LngLatUtil; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.stream.Collectors; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class ProjectDeviceServiceImpl extends ServiceImpl implements IProjectDeviceService { + + private final IDataSupportService dataSupportService; + + @Override + public boolean saveProjectDeviceList(Long projectId, List projectDeviceList) { + projectDeviceList.forEach(i->i.setProjectId(projectId)); + return this.saveBatch(projectDeviceList); + } + + @Transactional + @Override + public boolean updateProjectDeviceList(Long projectId, List projectDeviceList) { + return this.deleteByProjectId(projectId) && this.saveProjectDeviceList(projectId, projectDeviceList); + } + + @Override + public boolean deleteByProjectId(Long projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("PROJECT_ID",projectId); + return this.remove(queryWrapper); + } + + @Override + public boolean deleteByProjectIds(List projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("PROJECT_ID",projectId); + return this.remove(queryWrapper); + } + + @Override + public List selectDetailByProjectId(Long projectId) { + return this.baseMapper.selectDetailByProjectId(projectId); + } + + @Override + public Long selectProjectIdByDevice(Long deviceId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVICE_ID",deviceId); + queryWrapper.exists("(select Id FROM br_work_site_info p where p.ID = br_project_device.PROJECT_ID AND p.PROJECT_STATE != '3')"); + ProjectDevice projectDevice = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(projectDevice) ? projectDevice.getProjectId() : null; + } + + @Override + public List selectDeviceLocationList(Long projectId) { + List list = this.baseMapper.selectDeviceLocationList(projectId); + for (DeviceLocationDTO locationDTO : list) { + DataGas dataGas = dataSupportService.getGasData(locationDTO.getDeviceId()); + DataTreeLocation location = dataSupportService.getTreeLocation(locationDTO.getDeviceId(),true); + if(ObjectUtil.isNotEmpty(dataGas)){ + locationDTO.setGasValue(dataGas.getGasValue()); + locationDTO.setTime(DateUtil.formatDateTime(dataGas.getTs())); + } + if(ObjectUtil.isNotEmpty(location)){ + locationDTO.setLng(location.getGdLng()); + locationDTO.setLat(location.getGdLat()); + locationDTO.setLocation(location.getLocation()); + } + } + list = list.stream().filter(i-> StrUtil.isAllNotEmpty(i.getLng(),i.getLat())).collect(Collectors.toList()); + return LngLatUtil.sort(list); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectWorkerServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectWorkerServiceImpl.java new file mode 100644 index 0000000..c3ec86c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectWorkerServiceImpl.java @@ -0,0 +1,101 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.DataHelmetHealth; +import com.casic.missiles.modular.system.entity.DataHelmetLocation; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.mapper.ProjectWorkerMapper; +import com.casic.missiles.modular.system.service.IHelmetSupportService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.system.consts.ProjectConst.WORKER_TYPE_NORMAL; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class ProjectWorkerServiceImpl extends ServiceImpl implements IProjectWorkerService { + + private final AbstractDeptService deptService; + private final IHelmetSupportService helmetSupportService; + + @Override + public boolean saveProjectWorkerList(Long projectId, List projectWorkerList) { + projectWorkerList.forEach(i->i.setProjectId(projectId)); + return this.saveBatch(projectWorkerList); + } + + @Transactional + @Override + public boolean updateProjectWorkerList(Long projectId, List projectWorkerList) { + return this.deleteByProjectId(projectId) && this.saveProjectWorkerList(projectId, projectWorkerList) ; + } + + @Override + public boolean deleteByProjectId(Long projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("PROJECT_ID",projectId); + return this.remove(queryWrapper); + } + + @Override + public boolean deleteByProjectIds(List projectIds) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("PROJECT_ID",projectIds); + return this.remove(queryWrapper); + } + + + @Override + public List selectDetailByProjectId(Long projectId,String workerType) { + List projectWorkerList = this.baseMapper.selectDetailByProjectId(projectId,workerType); + for (ProjectWorker projectWorker : projectWorkerList) { + if(ObjectUtil.isNotEmpty(projectWorker.getWorkerDeptId())){ + projectWorker.setWorkerDeptName(deptService.getDeptName(projectWorker.getWorkerDeptId())); + } + } + return projectWorkerList; + } + + @Override + public List selectWorkerLocationDTO(Long projectId) { + List projectWorkerList = this.baseMapper.selectWorkerLocationList(projectId,WORKER_TYPE_NORMAL); + for (WorkerLocationDTO workerLocationDTO : projectWorkerList) { + if(ObjectUtil.isNotEmpty(workerLocationDTO.getHatId())){ + DataHelmetLocation location = helmetSupportService.getHelmetLocation(workerLocationDTO.getHatId(),true); + if(ObjectUtil.isNotEmpty(location)){ + workerLocationDTO.setLng(location.getGdLng()); + workerLocationDTO.setLat(location.getGdLat()); + workerLocationDTO.setLocation(location.getLocation()); + } + + DataHelmetHealth health = helmetSupportService.getHelmetHealth(workerLocationDTO.getHatId()); + if(ObjectUtil.isNotEmpty(health)){ + workerLocationDTO.setBloodOxygen(health.getBloodOxygen()); + workerLocationDTO.setHeartRate(health.getHeartRate()); + workerLocationDTO.setTime(DateUtil.formatDateTime(health.getTs())); + } + } + } + projectWorkerList = projectWorkerList.stream().filter(i-> StrUtil.isAllNotEmpty(i.getLng(),i.getLat())).collect(Collectors.toList()); + return projectWorkerList; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkSiteInfoServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkSiteInfoServiceImpl.java new file mode 100644 index 0000000..5068da2 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkSiteInfoServiceImpl.java @@ -0,0 +1,151 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.mapper.WorkSiteInfoMapper; +import com.casic.missiles.modular.system.service.*; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.system.consts.ProjectConst.*; + +/** + *

+ * 作业现场表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class WorkSiteInfoServiceImpl extends ServiceImpl implements IWorkSiteInfoService { + + private final IProjectWorkerService projectWorkerService; + private final IProjectDeviceService projectDeviceService; + + private final IWorkerService workerService; + private final IBraceletService braceletService; + + private final AbstractDeptService deptService; + private final AbstractDictService dictService; + @Override + @Transactional + public boolean addWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO) { + workSiteDetailDTO.setCreateTime(new Date()); + workSiteDetailDTO.setUpdateTime(new Date()); + workSiteDetailDTO.setProjectState(PROJECT_STATE_PREPARE); + boolean res = this.save(workSiteDetailDTO); + if(res){ + res = projectDeviceService.saveProjectDeviceList(workSiteDetailDTO.getId(), workSiteDetailDTO.getDeviceList()); + res = res & projectWorkerService.saveProjectWorkerList(workSiteDetailDTO.getId(), workSiteDetailDTO.getWorkerList()); + } + return res; + } + + @Override + @Transactional + public boolean updateWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO) { + workSiteDetailDTO.setUpdateTime(new Date()); + boolean res = this.updateById(workSiteDetailDTO); + if(res){ + res = projectDeviceService.updateProjectDeviceList(workSiteDetailDTO.getId(), workSiteDetailDTO.getDeviceList()); + res = res & projectWorkerService.updateProjectWorkerList(workSiteDetailDTO.getId(), workSiteDetailDTO.getWorkerList()); + } + return res; + } + + @Override + public boolean deleteProjects(List projectIds) { + if(CollUtil.isNotEmpty(projectIds)) { + projectDeviceService.deleteByProjectIds(projectIds); + projectWorkerService.deleteByProjectIds(projectIds); + return this.removeByIds(projectIds); + } + return true; + } + + @Override + public WorkSiteDetailDTO getWorkSiteDetail(Long projectId) { + WorkSiteInfo workSiteInfo = this.getById(projectId); + WorkSiteDetailDTO workSiteDetailDTO = new WorkSiteDetailDTO(); + BeanUtil.copyProperties(workSiteInfo,workSiteDetailDTO,true); + workSiteDetailDTO.setDeviceList(projectDeviceService.selectDetailByProjectId(projectId)); + workSiteDetailDTO.setWorkerList(projectWorkerService.selectDetailByProjectId(projectId,WORKER_TYPE_NORMAL)); + + Worker responseWorker = workerService.selectWorkerDetail(workSiteDetailDTO.getWorkPerson()); + if(ObjectUtil.isNotEmpty(responseWorker)){ + workSiteDetailDTO.setWorkPersonName(responseWorker.getWorkerName()); + workSiteDetailDTO.setWorkPersonPhoneNumber(responseWorker.getPhoneNumber()); + workSiteDetailDTO.setWorkPersonDeptId(responseWorker.getDeptId()); + workSiteDetailDTO.setWorkPersonDeptName(responseWorker.getDeptName()); + } + return workSiteDetailDTO; + } + + @Override + public Page selectListPage(Page page, QueryWrapper queryWrapper) { + page = this.baseMapper.selectListPage(page, queryWrapper); + for (WorkSiteInfo workSiteInfo : page.getRecords()) { + workSiteInfo.setProjectStateName(dictService.getDictNameByCode("projectState", workSiteInfo.getProjectState())); + if(ObjectUtil.isNotEmpty(workSiteInfo.getWorkPersonDeptId())){ + workSiteInfo.setWorkPersonDeptName(deptService.getDeptName(workSiteInfo.getWorkPersonDeptId())); + } + workSiteInfo.setRegisterTime(DateUtil.formatDate(workSiteInfo.getCreateTime())); + } + return page; + } + + @Override + public boolean start(Long projectId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",projectId); + updateWrapper.set("PROJECT_STATE",PROJECT_STATE_WORKING); + updateWrapper.set("START_TIME",new Date()); + boolean res = this.update(updateWrapper); + //braceletService.enableBracelet(selectProjectBracelets(projectId)); + return res; + } + + @Override + public boolean finish(Long projectId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",projectId); + updateWrapper.set("PROJECT_STATE",PROJECT_STATE_FINISH); + updateWrapper.set("FINISH_TIME",new Date()); + boolean res = this.update(updateWrapper); + //braceletService.disableBracelet(selectProjectBracelets(projectId)); + return res; + } + + private List selectProjectBracelets(Long projectId){ + List deviceCodes = new ArrayList<>(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("PROJECT_ID",projectId); + queryWrapper.isNotNull("BRACELET_CODE"); + queryWrapper.select("BRACELET_CODE"); + List res = projectWorkerService.listObjs(queryWrapper); + if(CollUtil.isNotEmpty(res)){ + deviceCodes = res.stream().map(Object::toString).distinct().collect(Collectors.toList()); + } + return deviceCodes; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkerServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkerServiceImpl.java new file mode 100644 index 0000000..6859cff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkerServiceImpl.java @@ -0,0 +1,110 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.mapper.WorkerMapper; +import com.casic.missiles.modular.system.service.*; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.modular.system.consts.ProjectConst.WORKER_TYPE_TEMP; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class WorkerServiceImpl extends ServiceImpl implements IWorkerService { + + private final IProjectWorkerService projectWorkerService; + + private final IProjectDeviceService projectDeviceService; + private final AbstractDictService dictService; + private final AbstractDeptService deptService; + private final IDeviceExtService deviceExtService; + + @Override + @Transactional + public boolean addWorker(Worker worker, Long projectId) { + worker.setCreateTime(new Date()); + boolean res = this.save(worker); + if(res && ObjectUtil.isNotEmpty(projectId)){ + res = projectWorkerService.save(new ProjectWorker(projectId, worker.getId())); + if(ObjectUtil.isNotEmpty(worker.getWorkerAvatar())){ + // todo 向一体机推送人脸图片 + } + } + return res; + } + + @Override + public Page selectListPage(Page page, QueryWrapper ew) { + page = this.baseMapper.selectListPage(page, ew); + for (Worker worker : page.getRecords()) { + wrapperWorker(worker); + } + return page; + } + + private void wrapperWorker(Worker worker) { + if(StrUtil.isNotEmpty(worker.getGender())){ + worker.setGenderName(dictService.getDictNameByCode("sysSex", worker.getGender())); + } + if(ObjectUtil.isNotEmpty(worker.getDeptId())){ + worker.setDeptName(deptService.getDeptName(worker.getDeptId())); + } + worker.setRegisterTime(DateUtil.formatDate(worker.getCreateTime())); + if(StrUtil.isNotEmpty(worker.getStatus())){ + worker.setStatusName(dictService.getDictNameByCode("workerStatus", worker.getStatus())); + } + } + + @Override + public Worker selectWorkerDetail(Long workerId) { + Worker worker = this.getById(workerId); + if(ObjectUtil.isNotEmpty(worker)){ + wrapperWorker(worker); + } + return worker; + } + + @Override + public List faceRegister(String cameraIp, String cameraPort) { + Long deviceId = deviceExtService.selectByCameraIpPort(cameraIp, cameraPort); + if(ObjectUtil.isNotEmpty(deviceId)){ + Long projectId = projectDeviceService.selectProjectIdByDevice(deviceId); + if(ObjectUtil.isNotEmpty(projectId)){ + return this.baseMapper.selectWorkerAvatars(projectId); + } + } + return null; + } + + @Override + public List projectTempWorker(Long projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("WORKER_TYPE",WORKER_TYPE_TEMP); + queryWrapper.exists("(select ID FROM br_project_worker WHERE PROJECT_ID = "+ projectId +")"); + List workers = this.list(queryWrapper); + workers.forEach(this::wrapperWorker); + return workers; + } +} diff --git a/casic_video_283_web/pom.xml b/casic_video_283_web/pom.xml new file mode 100644 index 0000000..feace49 --- /dev/null +++ b/casic_video_283_web/pom.xml @@ -0,0 +1,166 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + casic_video_283_web + 1.0.0 + jar + casic_video_283_web + casic web启动入口 + + + + dev + + true + + + dev + + + + test + + test + + + + prod + + prod + + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-actuator + + + io.micrometer + micrometer-core + + + + + org.springframework.boot + spring-boot-starter-jdbc + + + + com.casic + casic-core + ${core.version} + + + com.casic + casic-admin-core + ${admin.version} + + + io.springfox + springfox-swagger-ui + + + + + com.casic + casic-admin-support + ${admin.version} + + + mysql + mysql-connector-java + ${mysql.driver.version} + + + com.casic + casic-area-starter + ${admin.version} + + + + com.casic + casic_video_283_server + ${pro.version} + + + + org.springframework.boot + spring-boot-starter-tomcat + + + + + casic_video_283_web-${pro.version} + + + org.apache.maven.plugins + maven-jar-plugin + ${maven.jar.plugin.version} + + + + /config/*-*.yml + **/MockController.class + + + + com.casic.missiles.CasicApplication + true + ./ + + + + + + org.apache.maven.plugins + maven-assembly-plugin + ${maven.assembly.plugin.version} + + + make-assembly + package + + single + + + + + + org.apache.maven.plugins + maven-war-plugin + ${maven.war.plugin.version} + + + + + src/main/resources + + + /config/*/* + /config/*-*.yml + + true + + + src/main/java + + **/*.xml + + true + + + + \ No newline at end of file diff --git a/casic_video_283_web/src/main/build/bin/start.bat b/casic_video_283_web/src/main/build/bin/start.bat new file mode 100644 index 0000000..1db4e88 --- /dev/null +++ b/casic_video_283_web/src/main/build/bin/start.bat @@ -0,0 +1,4 @@ +@echo off +title ${project.build.finalName} +java -jar ./lib/${project.build.finalName}.jar +@pause diff --git a/casic_video_283_web/src/main/build/bin/start.sh b/casic_video_283_web/src/main/build/bin/start.sh new file mode 100644 index 0000000..1cc33fc --- /dev/null +++ b/casic_video_283_web/src/main/build/bin/start.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +jar_name="${project.build.finalName}.jar" +echo "starting $jar_name ..." + +PID=$(ps -ef | grep ${jar_name} | grep -v grep | awk '{print $2}') + +OLD_IFS="$IFS" +IFS="," +PIDARR=($PID) +IFS="$OLD_IFS" + +if [ ! $PID ]; then + echo "process ${jar_name} not exit" +else + echo "process id: $PID" + + kill -9 ${PID} + + if [ $? -eq 0 ]; then + echo "kill ${jar_name} success" + else + echo "kill ${jar_name} fail" + exit + fi +fi + + + +nohup java -jar ./lib/${jar_name} >/dev/null 2>log & +echo "start ${jar_name} ..." \ No newline at end of file diff --git a/casic_video_283_web/src/main/build/package.xml b/casic_video_283_web/src/main/build/package.xml new file mode 100644 index 0000000..c9259ad --- /dev/null +++ b/casic_video_283_web/src/main/build/package.xml @@ -0,0 +1,43 @@ + + + package + + zip + tar.gz + + true + + + + true + true + lib + runtime + + + + + src/main/build/bin + + start.bat + start.sh + + true + 0744 + / + + + src/main/resources/config + true + + *.yml + /*/* + + /config + + + src/main/resources/i18n + / + + + \ No newline at end of file diff --git a/casic_video_283_web/src/main/java/com/casic/missiles/CasicApplication.java b/casic_video_283_web/src/main/java/com/casic/missiles/CasicApplication.java new file mode 100644 index 0000000..7b8791f --- /dev/null +++ b/casic_video_283_web/src/main/java/com/casic/missiles/CasicApplication.java @@ -0,0 +1,35 @@ +package com.casic.missiles; + +import lombok.extern.slf4j.Slf4j; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.web.servlet.ServletComponentScan; +import org.springframework.cache.annotation.EnableCaching; +import org.springframework.scheduling.annotation.EnableAsync; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +/** + * SpringBoot方式启动类 + * + * @author lwh + * @Date 2021/06/06 12:06 + */ +@SpringBootApplication +@EnableCaching +@EnableTransactionManagement(proxyTargetClass = true) +@EnableAsync +@Slf4j +@MapperScan(value = "com.casic.missiles.modular.system.mapper") +public class CasicApplication { + + static { + System.setProperty("druid.mysql.usePingMethod","false"); + } + + public static void main(String[] args) { + SpringApplication.run(CasicApplication.class, args); + log.info("CasicApplication is success!"); + } + +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java new file mode 100644 index 0000000..73d7799 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.dto; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "AlarmUpload",description = "报警上传") +@Data +public class AlarmUpload { + + @ApiModelProperty(value = "摄像头ip") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + @ApiModelProperty(value = "安全树甲烷设备ip") + private String gasIp; + @ApiModelProperty(value = "安全树甲烷设备端口") + private String gasPort; + @ApiModelProperty(value = "报警值") + private String alarmValue; + @ApiModelProperty(value = "报警时间") + private String alarmTime; + @ApiModelProperty(value = "报警类型") + private String alarmType; + @ApiModelProperty(value = "报警图片") + private String alarmImage; + @ApiModelProperty(value = "报警内容") + private String alarmContent; + + @Override + public String toString() { + return "AlarmUpload{" + + "cameraIp='" + cameraIp + '\'' + + ", cameraPort='" + cameraPort + '\'' + + ", gasIp='" + gasIp + '\'' + + ", gasPort='" + gasPort + '\'' + + ", alarmValue='" + alarmValue + '\'' + + ", alarmTime='" + alarmTime + '\'' + + ", alarmType='" + alarmType + '\'' + + ", alarmImage='" + (StrUtil.isNotEmpty(alarmImage) ? alarmImage.substring(0,50) : "null") + '\'' + + ", alarmContent='" + alarmContent + '\'' + + '}'; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java new file mode 100644 index 0000000..ea518d9 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.modular.system.entity.Device; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("DeviceDetailDTO") +@Data +public class DeviceDetailDTO extends Device { + + @ApiModelProperty(value = "摄像头编号") + private String cameraCode; + + @ApiModelProperty(value = "摄像头IP") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + + @ApiModelProperty(value = "激甲编号") + private String gasCode; + + @ApiModelProperty(value = "激甲IP") + private String gasIp; + + @ApiModelProperty(value = "激甲端口") + private String gasPort; + + @ApiModelProperty(value = "智能帽衬编号") + private String hatLiningCode; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java new file mode 100644 index 0000000..29378ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("WorkSiteDetailDTO") +public class WorkSiteDetailDTO extends WorkSiteInfo { + + @ApiModelProperty(value = "安全树列表",dataType = "ProjectDevice") + private List deviceList; + + @ApiModelProperty(value = "人员列表",dataType = "ProjectWorker") + private List workerList; + + + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java new file mode 100644 index 0000000..6fd7b24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java @@ -0,0 +1,68 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "WorkerLocationDTO",description = "人员位置列表(首页)") +@Data +public class WorkerLocationDTO { + + @ApiModelProperty("人员ID") + private Long workerId; + + @ApiModelProperty("人员姓名") + private String workerName; + + @ApiModelProperty("安全帽编号") + private String hatCode; + + @ApiModelProperty("安全帽ID") + private Long hatId; + + @ApiModelProperty("背心编号") + private String vastCode; + + @ApiModelProperty("手环编号") + private String braceletCode; + + @ApiModelProperty("位置") + private String location; + + @ApiModelProperty("时间") + private String time; + + @ApiModelProperty("经度") + private String lng; + + @ApiModelProperty("纬度") + private String lat; + + @ApiModelProperty("心率") + private String heartRate; + + @ApiModelProperty("血氧") + private String bloodOxygen; + + @ApiModelProperty("一氧化碳") + private String co; + + @ApiModelProperty("甲烷") + private String gas; + + @ApiModelProperty("硫化氢") + private String h2s; + + @ApiModelProperty("氧气") + private String o2; + + @ApiModelProperty("信号") + private String signal; + + @ApiModelProperty("电量") + private String cell; + + @ApiModelProperty("是否报警") + private boolean alarmFlag; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java new file mode 100644 index 0000000..efb4a23 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java @@ -0,0 +1,159 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 报警记录表 + *

+ * + * @author zyj + * @since 2023-05-16 + */ +@Data +@ApiModel("Alarm") +@TableName("br_bus_alarm") +public class BusAlarm implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @ApiModelProperty(value = "设备ID") + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 报警类型 + */ + @ApiModelProperty(value = "报警类型") + @TableField("ALARM_TYPE") + private String alarmType; + + /** + * 报警状态 + */ + @ApiModelProperty(value = "报警状态") + @TableField("ALARM_STATUS") + private String alarmStatus; + + /** + * 报警值 + */ + @ApiModelProperty(value = "报警值") + @TableField("ALARM_VALUE") + private String alarmValue; + + /** + * 报警图片 + */ + @ApiModelProperty(value = "报警图片") + @TableField("ALARM_IMAGE") + private String alarmImage; + + /** + * 报警内容 + */ + @ApiModelProperty(value = "报警内容") + @TableField("ALARM_CONTENT") + private String alarmContent; + + /** + * 报警时间 + */ + @ApiModelProperty(value = "报警时间") + @TableField("ALARM_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date alarmTime; + + /** + * 消警时间 + */ + @ApiModelProperty(value = "消警时间") + @TableField("CANCEL_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + /** + * 报警位置经度 + */ + @ApiModelProperty(value = "报警位置经度") + @TableField("ALARM_LNG") + private String alarmLng; + + /** + * 报警位置纬度 + */ + @ApiModelProperty(value = "报警位置纬度") + @TableField("ALARM_LAT") + private String alarmLat; + + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmStatusName; + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmTypeName; + @ApiModelProperty("作业名称") + @TableField(exist = false) + private String workTitle; + @ApiModelProperty("所属道路") + @TableField(exist = false) + private String workRoad; + @ApiModelProperty("作业状态") + @TableField(exist = false) + private String projectState; + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + @ApiModelProperty("负责人姓名") + @TableField(exist = false) + private String workPersonName; + @ApiModelProperty("负责人联系方式") + @TableField(exist = false) + private String workPersonPhoneNumber; + + + @Override + public String toString() { + return "BusAlarm{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + ", alarmType=" + alarmType + + ", alarmValue=" + alarmValue + + ", alarmStatus=" + alarmStatus + + ", alarmImage=" + alarmImage + + ", alarmContent=" + alarmContent + + ", alarmTime=" + alarmTime + + ", cancelTime=" + cancelTime + + ", alarmLng=" + alarmLng + + ", alarmLat=" + alarmLat + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java new file mode 100644 index 0000000..a0b7543 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + *

+ * 事件表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event") +@Data +@ApiModel("BusEvent") +public class BusEvent implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("事件ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件标题 + */ + @ApiModelProperty("事件名称") + @TableField("EVENT_TITLE") + private String eventTitle; + + /** + * 上报人员 + */ + @ApiModelProperty("上报人员") + @TableField("UPLOAD_NAME") + private String uploadName; + + /** + * 联系方式 + */ + @ApiModelProperty("联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 事件描述 + */ + @ApiModelProperty("事件描述") + @TableField("EVENT_DESCRIPTION") + private String eventDescription; + + @ApiModelProperty("经度") + @TableField("LNG") + private String lng; + + @ApiModelProperty("纬度") + @TableField("LAT") + private String lat; + + /** + * 事件上传时间 + */ + @ApiModelProperty("事件上传时间") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty("事件照片") + @TableField(exist = false) + private List imageList; + + + + @Override + public String toString() { + return "BusEvent{" + + "id=" + id + + ", eventTitle=" + eventTitle + + ", uploadName=" + uploadName + + ", phoneNumber=" + phoneNumber + + ", eventDescription=" + eventDescription + + ", lng=" + lng + + ", lat=" + lat + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java new file mode 100644 index 0000000..1e75245 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 事件图片表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event_image") +@Data +@ApiModel("BusEventImage") +public class BusEventImage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件ID + */ + @TableField("EVENT_ID") + private Long eventId; + + /** + * 报警图片 + */ + @TableField("IMAGE") + @ApiModelProperty("图片url") + private String image; + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java new file mode 100644 index 0000000..df89c70 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.core.base.json.DateDeserializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Device") +@TableName("br_device") +@Data +public class Device implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "设备ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty(value = "设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + /** + * 设备类型 + */ + @ApiModelProperty(value = "设备类型") + @TableField("DEVICE_TYPE") + private String deviceType; + + /** + * 设备批次 + */ + @ApiModelProperty(value = "设备批次") + @TableField("DEVICE_BATCH") + private String deviceBatch; + + /** + * 厂家 + */ + @ApiModelProperty(value = "厂家") + @TableField("MANUFACTURER") + private String manufacturer; + + /** + * 是否供电 + */ + @ApiModelProperty(value = "是否供电") + @TableField("IS_POWER_SUPPLY") + private String isPowerSupply; + + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间",dataType = "Date") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty(value = "设备类型名称") + @TableField(exist = false) + private String deviceTypeName; + + @ApiModelProperty(value = "是否供电名称") + @TableField(exist = false) + private String isPowerSupplyName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", deviceCode=" + deviceCode + + ", deviceType=" + deviceType + + ", deviceBatch=" + deviceBatch + + ", manufacturer=" + manufacturer + + ", isPowerSupply=" + isPowerSupply + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java new file mode 100644 index 0000000..5ee7015 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java @@ -0,0 +1,99 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 设备扩展信息表(安全树) + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Data +@TableName("br_device_ext") +public class DeviceExt implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 摄像头编号 + */ + @TableField("CAMERA_CODE") + private String cameraCode; + + /** + * 摄像头IP + */ + @TableField("CAMERA_IP") + private String cameraIp; + + /** + * 摄像头端口 + */ + @TableField("CAMERA_PORT") + private String cameraPort; + + /** + * 激甲编号 + */ + @TableField("GAS_CODE") + private String gasCode; + + /** + * 激甲IP + */ + @TableField("GAS_IP") + private String gasIp; + + /** + * 激甲端口 + */ + @TableField("GAS_PORT") + private String gasPort; + + /** + * 甲烷报警阈值 + */ + @TableField("GAS_THRESHOLD") + private String gasThreshold; + + @TableField(value = "HAT_LINING_CODE") + private String hatLiningCode; + + + @Override + public String toString() { + return "DeviceExt{" + + "id=" + id + + ", deviceId=" + deviceId + + ", cameraCode=" + cameraCode + + ", cameraIp=" + cameraIp + + ", cameraPort=" + cameraPort + + ", gasCode=" + gasCode + + ", gasIp=" + gasIp + + ", gasPort=" + gasPort + + ", gasThreshold=" + gasThreshold + + ", hatLiningCode=" + hatLiningCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java new file mode 100644 index 0000000..c4f3472 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java @@ -0,0 +1,62 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Data +@ApiModel("ProjectDevice") +@TableName("br_project_device") +public class ProjectDevice implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + @ApiModelProperty("设备ID(新增编辑时传)") + private Long deviceId; + + /** + * 设备编号 + */ + @TableField(exist = false) + @ApiModelProperty("设备编号(详情中展示,新增编辑不用传)") + private String deviceCode; + + @Override + public String toString() { + return "ProjectDevice{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java new file mode 100644 index 0000000..10b23c4 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java @@ -0,0 +1,104 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("ProjectWorker") +@TableName("br_project_worker") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ProjectWorker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 人员ID + */ + @ApiModelProperty("人员ID") + @TableField("WORKER_ID") + private Long workerId; + + /** + * 安全帽编号 + */ + @ApiModelProperty("安全帽编号") + @TableField("HAT_CODE") + private String hatCode; + + /** + * 背心编号 + */ + @ApiModelProperty("背心编号") + @TableField("VAST_CODE") + private String vastCode; + + /** + * 手环编号 + */ + @ApiModelProperty("手环编号") + @TableField("BRACELET_CODE") + private String braceletCode; + + @ApiModelProperty("人员姓名(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerName; + + @ApiModelProperty("人员部门ID(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptId; + + @ApiModelProperty("人员部门名称(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptName; + + @ApiModelProperty("人员联系方式(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerPhoneNumber; + + public ProjectWorker(Long projectId, Long workerId) { + this.projectId = projectId; + this.workerId = workerId; + } + + @Override + public String toString() { + return "ProjectWorker{" + + "id=" + id + + ", projectId=" + projectId + + ", workerId=" + workerId + + ", hatCode=" + hatCode + + ", vastCode=" + vastCode + + ", braceletCode=" + braceletCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java new file mode 100644 index 0000000..fa6f41d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 作业现场表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("WorkSiteInfo") +@TableName("br_work_site_info") +@Data +public class WorkSiteInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("作业现场ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业名称 + */ + @ApiModelProperty("作业名称") + @TableField("WORK_TITLE") + private String workTitle; + + /** + * 责任人 + */ + @ApiModelProperty("责任人(人员ID)") + @TableField("WORK_PERSON") + private Long workPerson; + + /** + * 作业描述 + */ + @ApiModelProperty("作业描述") + @TableField("WORK_SITE_DESC") + private String workSiteDesc; + + /** + * 作业状态 + */ + @ApiModelProperty("作业状态") + @TableField("PROJECT_STATE") + private String projectState; + + /** + * 所属道路 + */ + @ApiModelProperty("所属道路") + @TableField("WORK_ROAD") + private String workRoad; + + @TableField("IMAGE_URL") + private String imageUrl; + + @TableField("CREATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + @TableField("UPDATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("FINISH_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + @ApiModelProperty("负责人姓名(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonName; + + @ApiModelProperty("负责人联系方式(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonPhoneNumber; + + @ApiModelProperty("负责人所属部门ID(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private Long workPersonDeptId; + + @ApiModelProperty("负责人所属部门名称(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonDeptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + + @Override + public String toString() { + return "WorkSiteInfo{" + + "id=" + id + + ", workTitle=" + workTitle + + ", workPerson=" + workPerson + + ", workSiteDesc=" + workSiteDesc + + ", projectState=" + projectState + + ", imageUrl=" + imageUrl + + ", updateTime=" + updateTime + + ", workRoad=" + workRoad + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java new file mode 100644 index 0000000..28a4daa --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java @@ -0,0 +1,147 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Worker") +@TableName("br_worker") +@Data +public class Worker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "人员ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 姓名 + */ + @ApiModelProperty(value = "姓名") + @TableField("WORKER_NAME") + private String workerName; + + /** + * 性别 + */ + @ApiModelProperty(value = "性别") + @TableField("GENDER") + private String gender; + + /** + * 所属部门 + */ + @ApiModelProperty(value = "所属部门(人员管理)") + @TableField("DEPT_ID") + private Long deptId; + + /** + * 所属单位 + */ + @ApiModelProperty(value = "所属单位(入场申请中使用)") + @TableField("OWNER_SHIP") + private String ownerShip; + + /** + * 联系方式 + */ + @ApiModelProperty(value = "联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 证件号 + */ + @ApiModelProperty(value = "证件号") + @TableField("ID_CARD_NUMBER") + private String idCardNumber; + + /** + * 入场原因 + */ + @ApiModelProperty(value = "入场原因(入场申请中使用)") + @TableField("ENTER_REASON") + private String enterReason; + + /** + * 入场人脸照片 + */ + @ApiModelProperty(value = "人脸照片(照片路径)") + @TableField("WORKER_AVATAR") + private String workerAvatar; + + /** + * 申请入场时间 + */ + @ApiModelProperty(value = "注册时间/申请入场时间") + @TableField("CREATE_TIME") + private Date createTime; + + /** + * 人员类型 + */ + @ApiModelProperty(value = "人员类型(区分人员管理和入场申请)") + @TableField("WORKER_TYPE") + private String workerType; + + @ApiModelProperty(value = "性别名称") + @TableField(exist = false) + private String genderName; + + @ApiModelProperty(value = "部门名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @ApiModelProperty(value = "是否注册(0未注册;1已注册)",allowableValues = "0,1") + @TableField(exist = false) + private String isRegister; + + @Override + public String toString() { + return "Worker{" + + "id=" + id + + ", workerName=" + workerName + + ", gender=" + gender + + ", deptId=" + deptId + + ", ownerShip=" + ownerShip + + ", phoneNumber=" + phoneNumber + + ", idCardNumber=" + idCardNumber + + ", enterReason=" + enterReason + + ", workerAvatar=" + workerAvatar + + ", createTime=" + createTime + + ", workerType=" + workerType + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java new file mode 100644 index 0000000..9801742 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警记录表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusAlarmMapper extends BaseMapper { + + Page listPage(Page page,@Param("ew") QueryWrapper queryWrapper); + + void cancelAlarm(@Param("deviceId")Long deviceId,@Param("alarmType") String alarmType); + + List alarmCount(@Param("projectId")Long projectId, @Param("alarmStatus")String alarmStatus); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java new file mode 100644 index 0000000..9590b7d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件图片表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventImageMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java new file mode 100644 index 0000000..3c85edf --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java new file mode 100644 index 0000000..4ca9212 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 设备扩展信息表(安全树) Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface DeviceExtMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java new file mode 100644 index 0000000..444c0c5 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Mapper +public interface DeviceMapper extends BaseMapper { + + Page listDetailPage(Page page,@Param("ew") QueryWrapper ew); + + List selectProjectDevice(@Param("projectId") Long projectId); + + List selectHelmetList(@Param("deviceType")String deviceType); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java new file mode 100644 index 0000000..1d0c14e --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectDeviceMapper extends BaseMapper { + List selectDetailByProjectId(@Param("projectId") Long projectId); + + List selectDeviceLocationList(@Param("projectId") Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java new file mode 100644 index 0000000..58583d1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectWorkerMapper extends BaseMapper { + + List selectDetailByProjectId(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + + List selectWorkerLocationList(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java new file mode 100644 index 0000000..a4934d2 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +/** + *

+ * 作业现场表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkSiteInfoMapper extends BaseMapper { + + Page selectListPage(Page page,@Param("ew") QueryWrapper ew); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java new file mode 100644 index 0000000..258fb12 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkerMapper extends BaseMapper { + + + Page selectListPage(Page page, @Param("ew") QueryWrapper ew); + + List selectWorkerAvatars(@Param("projectId")Long projectId); + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml new file mode 100644 index 0000000..595088a --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml @@ -0,0 +1,58 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml new file mode 100644 index 0000000..fbc3db3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml new file mode 100644 index 0000000..627d573 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml new file mode 100644 index 0000000..5321d1c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml new file mode 100644 index 0000000..94262e1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml @@ -0,0 +1,97 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml new file mode 100644 index 0000000..c6d1c24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml @@ -0,0 +1,29 @@ + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml new file mode 100644 index 0000000..8d2de10 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml new file mode 100644 index 0000000..8f01326 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml @@ -0,0 +1,26 @@ + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml new file mode 100644 index 0000000..3e28b39 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml @@ -0,0 +1,56 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java new file mode 100644 index 0000000..f63c19c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 报警记录表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusAlarmService extends IService { + + boolean alarmUpload(AlarmUpload alarmUpload); + + Page listPage(Page page,QueryWrapper queryWrapper); + + List alarmCount(Long projectId,String alarmStatus); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java new file mode 100644 index 0000000..b1187ed --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 事件图片表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusEventImageService extends IService { + + boolean saveBusEventImages(Long eventId, List imageList); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java new file mode 100644 index 0000000..85c48d0 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 事件表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusEventService extends IService { + + boolean saveBusEvent(BusEvent busEvent); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java new file mode 100644 index 0000000..6fc5361 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 设备扩展信息表(安全树) 服务类 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface IDeviceExtService extends IService { + + boolean saveDeviceExt(DeviceDetailDTO deviceDetailDTO); + + boolean updateDeviceExt(DeviceDetailDTO deviceDetailDTO); + + boolean removeByDeviceIds(List deviceIds); + + boolean setGasThreshold(String gasIp,String gasPort,String threshold); + + String getGasThreshold(String gasIp,String gasPort); + + Long selectByGasIpPort(String gasIp,String gasPort); + + Long selectByCameraIpPort(String cameraIp,String cameraPort); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java new file mode 100644 index 0000000..9e62756 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java @@ -0,0 +1,32 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IDeviceService extends IService { + + boolean saveDevice(DeviceDetailDTO deviceDetailDTO); + + boolean updateDevice(DeviceDetailDTO deviceDetailDTO); + + boolean deleteDevices(List deviceIds); + + Page listPage(Page page, QueryWrapper queryWrapper, String status,Long projectId); + + List selectProjectDevice(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java new file mode 100644 index 0000000..8599411 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IProjectDeviceService extends IService { + + boolean saveProjectDeviceList(Long projectId, List projectDeviceList); + + boolean updateProjectDeviceList(Long projectId, List projectDeviceList); + + boolean deleteByProjectId(Long projectId); + + boolean deleteByProjectIds(List projectIds); + + List selectDetailByProjectId(Long projectId); + + Long selectProjectIdByDevice(Long deviceId); + + List selectDeviceLocationList(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java new file mode 100644 index 0000000..e921bc3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IProjectWorkerService extends IService { + + boolean saveProjectWorkerList(Long projectId, List projectWorkerList); + + boolean updateProjectWorkerList(Long projectId, List projectWorkerList); + + boolean deleteByProjectId(Long projectId); + + boolean deleteByProjectIds(List projectIds); + + List selectDetailByProjectId(Long projectId,String workerType); + + List selectWorkerLocationDTO(Long projectId); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java new file mode 100644 index 0000000..58a8590 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; +/** + *

+ * 作业现场表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IWorkSiteInfoService extends IService { + + boolean addWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO); + + boolean updateWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO); + + boolean deleteProjects(List projectIds); + + WorkSiteDetailDTO getWorkSiteDetail(Long projectId); + + Page selectListPage(Page page, QueryWrapper queryWrapper); + + boolean start(Long projectId); + + boolean finish(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java new file mode 100644 index 0000000..6c6ee98 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.extension.service.IService; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IWorkerService extends IService { + + boolean addWorker(Worker worker,Long projectId); + + Page selectListPage(Page page,QueryWrapper ew); + + Worker selectWorkerDetail(Long workerId); + + List faceRegister(String cameraIp,String cameraPort); + + List projectTempWorker(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java new file mode 100644 index 0000000..b44de1d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.consts.AlarmTypeEnum; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.entity.DataTreeLocation; +import com.casic.missiles.modular.system.mapper.BusAlarmMapper; +import com.casic.missiles.modular.system.service.*; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +/** + *

+ * 报警记录表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +@Slf4j +public class BusAlarmServiceImpl extends ServiceImpl implements IBusAlarmService { + + private final IDeviceExtService deviceExtService; + private final IDeviceService deviceService; + private final IProjectDeviceService projectDeviceService; + + private final ICasicFileService fileService; + + private final AbstractDictService dictService; + private final IDataSupportService dataSupportService; + + @Override + @Transactional + public boolean alarmUpload(AlarmUpload alarmUpload) { + log.info("alarm upload ==> {}",alarmUpload.toString()); + Long deviceId = null; + if(StrUtil.isAllNotBlank(alarmUpload.getGasIp(),alarmUpload.getGasPort())){ + deviceId = deviceExtService.selectByGasIpPort(alarmUpload.getGasIp(),alarmUpload.getGasPort()); + } + if(ObjectUtil.isEmpty(deviceId) && StrUtil.isAllNotBlank(alarmUpload.getCameraIp(),alarmUpload.getCameraPort())){ + deviceId = deviceExtService.selectByCameraIpPort(alarmUpload.getCameraIp(),alarmUpload.getCameraPort()); + } + + if(ObjectUtil.isEmpty(deviceId)){ + return false; + } + + BusAlarm alarm = new BusAlarm(); + alarm.setDeviceId(deviceId); + alarm.setProjectId(projectDeviceService.selectProjectIdByDevice(deviceId)); + alarm.setAlarmValue(alarmUpload.getAlarmValue()); + if(StrUtil.isNotEmpty(alarmUpload.getAlarmTime())){ + alarm.setAlarmTime(DateUtil.parseDateTime(alarmUpload.getAlarmTime())); + }else { + alarm.setAlarmTime(new Date()); + } + + alarm.setAlarmType(alarmUpload.getAlarmType()); + alarm.setAlarmContent(alarmUpload.getAlarmContent()); + if(StrUtil.isNotEmpty(alarmUpload.getAlarmImage())){ + String imgBase64 = "data:image/jpeg;base64," + alarmUpload.getAlarmImage(); + String imageUrl = fileService.saveFile(imgBase64); + alarm.setAlarmImage(imageUrl); + } + alarm.setAlarmStatus(ALARM_STATUS_ON); + + DataTreeLocation treeLocation = dataSupportService.getTreeLocation(deviceId); + if(ObjectUtil.isNotEmpty(treeLocation)){ + alarm.setAlarmLng(treeLocation.getGdLng()); + alarm.setAlarmLat(treeLocation.getGdLat()); + } + + //自动消警 + AlarmTypeEnum alarmTypeEnum = AlarmTypeEnum.getByAlarmType(alarm.getAlarmType()); + if(ObjectUtil.isNotEmpty(alarmTypeEnum) && alarmTypeEnum.isAutoCancel()){ + this.baseMapper.cancelAlarm(deviceId,alarm.getAlarmType()); + } + return this.save(alarm); + } + + @Override + public Page listPage(Page page, QueryWrapper queryWrapper) { + page = this.baseMapper.listPage(page, queryWrapper); + for (BusAlarm alarm : page.getRecords()) { + alarm.setAlarmTypeName(dictService.getDictNameByCode("alarmType",alarm.getAlarmType())); + alarm.setAlarmStatusName(dictService.getDictNameByCode("alarmStatus",alarm.getAlarmStatus())); + if(StrUtil.isNotEmpty(alarm.getProjectState())){ + alarm.setProjectStateName(dictService.getDictNameByCode("projectStatus",alarm.getProjectState())); + } + } + return page; + } + + @Override + public List alarmCount(Long projectId, String alarmStatus) { + List list = this.baseMapper.alarmCount(projectId, alarmStatus); + list = list.stream().filter(i->StrUtil.isNotEmpty(i.getAlarmType())).collect(Collectors.toList()); + for (AlarmTypeCountDTO countDTO : list) { + countDTO.setAlarmTypeName(dictService.getDictNameByCode("alarmType",countDTO.getAlarmType())); + } + return list; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java new file mode 100644 index 0000000..a43f7c1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.casic.missiles.modular.system.mapper.BusEventImageMapper; +import com.casic.missiles.modular.system.service.IBusEventImageService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 事件图片表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +public class BusEventImageServiceImpl extends ServiceImpl implements IBusEventImageService { + + @Override + public boolean saveBusEventImages(Long eventId, List imageList) { + imageList.forEach(i->i.setEventId(eventId)); + return this.saveBatch(imageList); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java new file mode 100644 index 0000000..21e511c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java @@ -0,0 +1,39 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.mapper.BusEventMapper; +import com.casic.missiles.modular.system.service.IBusEventImageService; +import com.casic.missiles.modular.system.service.IBusEventService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; + +/** + *

+ * 事件表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class BusEventServiceImpl extends ServiceImpl implements IBusEventService { + + private final IBusEventImageService busEventImageService; + + + @Override + @Transactional + public boolean saveBusEvent(BusEvent busEvent) { + busEvent.setCreateTime(new Date()); + boolean res = this.save(busEvent); + if(res){ + res = busEventImageService.saveBusEventImages(busEvent.getId(),busEvent.getImageList()); + } + return res; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java new file mode 100644 index 0000000..2bdb63d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java @@ -0,0 +1,102 @@ +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.core.conditions.update.UpdateWrapper; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.casic.missiles.modular.system.mapper.DeviceExtMapper; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 设备扩展信息表(安全树) 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Service +public class DeviceExtServiceImpl extends ServiceImpl implements IDeviceExtService { + + + @Override + public boolean saveDeviceExt(DeviceDetailDTO deviceDetailDTO) { + DeviceExt ext = new DeviceExt(); + ext.setDeviceId(deviceDetailDTO.getId()); + ext.setCameraCode(deviceDetailDTO.getCameraCode()); + ext.setCameraIp(deviceDetailDTO.getCameraIp()); + ext.setCameraPort(deviceDetailDTO.getCameraPort()); + ext.setGasCode(deviceDetailDTO.getGasCode()); + ext.setGasIp(deviceDetailDTO.getGasIp()); + ext.setGasPort(deviceDetailDTO.getGasPort()); + ext.setHatLiningCode(deviceDetailDTO.getHatLiningCode()); + return this.save(ext); + } + + @Override + public boolean updateDeviceExt(DeviceDetailDTO deviceDetailDTO) { + DeviceExt ext = this.selectByDeviceId(deviceDetailDTO.getId()); + ext.setCameraCode(deviceDetailDTO.getCameraCode()); + ext.setCameraIp(deviceDetailDTO.getCameraIp()); + ext.setCameraPort(deviceDetailDTO.getCameraPort()); + ext.setGasCode(deviceDetailDTO.getGasCode()); + ext.setGasIp(deviceDetailDTO.getGasIp()); + ext.setGasPort(deviceDetailDTO.getGasPort()); + ext.setHatLiningCode(deviceDetailDTO.getHatLiningCode()); + return this.updateById(ext); + } + + @Override + public boolean removeByDeviceIds(List deviceIds) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("DEVICE_ID",deviceIds); + return this.remove(queryWrapper); + } + + @Override + public boolean setGasThreshold(String gasIp, String gasPort, String threshold) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.set("GAS_THRESHOLD",threshold); + updateWrapper.eq("GAS_IP",gasIp); + updateWrapper.eq("GAS_PORT",gasPort); + return this.update(updateWrapper); + } + + @Override + public String getGasThreshold(String gasIp, String gasPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("GAS_IP",gasIp); + queryWrapper.eq("GAS_PORT",gasPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getGasThreshold() : null; + } + + private DeviceExt selectByDeviceId(Long deviceId){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVICE_ID",deviceId); + return this.getOne(queryWrapper); + } + + @Override + public Long selectByGasIpPort(String gasIp, String gasPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("GAS_IP",gasIp); + queryWrapper.eq("GAS_PORT",gasPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getDeviceId() : null; + } + + @Override + public Long selectByCameraIpPort(String cameraIp, String cameraPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("CAMERA_IP",cameraIp); + queryWrapper.eq("CAMERA_PORT",cameraPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getDeviceId() : null; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java new file mode 100644 index 0000000..9df79ef --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.mapper.DeviceMapper; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.modular.system.consts.DeviceConst.*; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class DeviceServiceImpl extends ServiceImpl implements IDeviceService { + + private final AbstractDictService dictService; + private final IDeviceExtService deviceExtService; + + private final IProjectDeviceService projectDeviceService; + + @Transactional + @Override + public boolean saveDevice(DeviceDetailDTO deviceDetailDTO) { + deviceDetailDTO.setCreateTime(new Date()); + boolean deviceRes = this.save(deviceDetailDTO); + if(deviceRes && DEVICE_TYPE_TREE.equals(deviceDetailDTO.getDeviceType())){ + deviceRes = deviceExtService.saveDeviceExt(deviceDetailDTO); + } + return deviceRes; + } + + @Transactional + @Override + public boolean updateDevice(DeviceDetailDTO deviceDetailDTO) { + boolean deviceRes = this.updateById(deviceDetailDTO); + if(deviceRes && DEVICE_TYPE_TREE.equals(deviceDetailDTO.getDeviceType())){ + deviceRes = deviceExtService.updateDeviceExt(deviceDetailDTO); + } + return deviceRes; + } + + @Transactional + @Override + public boolean deleteDevices(List deviceIds) { + return this.removeByIds(deviceIds) & deviceExtService.removeByDeviceIds(deviceIds); + } + + @Override + public Page listPage(Page page, QueryWrapper queryWrapper,String status,Long projectId) { + String ID_COLUMN_NAME = "br_device.ID"; + List useDevices = this.selectProjectDevice(null); + List projectDevices; + if(ObjectUtil.isNotEmpty(projectId)){ + projectDevices = this.selectProjectDevice(projectId); + } else { + projectDevices = null; + } + + // 查询使用中的设备(如果传了 projectId,查询 使用中&&此现场) + if(DEVICE_STATUS_USE.equals(status)){ + if(CollUtil.isEmpty(useDevices)){ + return page; + } + if(ObjectUtil.isNotEmpty(projectId) && CollUtil.isEmpty(projectDevices)){ + return page; + } + queryWrapper.in(ID_COLUMN_NAME,useDevices); + if(CollUtil.isNotEmpty(projectDevices)){ + queryWrapper.in(ID_COLUMN_NAME,projectDevices); + } + + } + + // 查询未使用的设备(如果传了 projectId,查询 未使用||此现场) + if(DEVICE_STATUS_NORMAL.equals(status)) { + if (CollUtil.isNotEmpty(useDevices)) { + if (CollUtil.isEmpty(projectDevices)) { + queryWrapper.notIn(ID_COLUMN_NAME, useDevices); + } else { + queryWrapper.and(i -> i.notIn(ID_COLUMN_NAME, useDevices).or().in(ID_COLUMN_NAME, projectDevices)); + } + } + } + + page = this.baseMapper.listDetailPage(page, queryWrapper); + for (DeviceDetailDTO record : page.getRecords()) { + record.setDeviceTypeName(dictService.getDictNameByCode("deviceType",record.getDeviceType())); + record.setIsPowerSupplyName(dictService.getDictNameByCode("isPowerSupply",record.getIsPowerSupply())); + record.setRegisterTime(DateUtil.formatDate(record.getCreateTime())); + record.setStatus(useDevices.contains(record.getId()) ? DEVICE_STATUS_USE : DEVICE_STATUS_NORMAL); + record.setStatusName(dictService.getDictNameByCode("deviceStatus",record.getStatus())); + } + return page; + } + + @Override + public List selectProjectDevice(Long projectId) { + return this.baseMapper.selectProjectDevice(projectId); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceSupportServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceSupportServiceImpl.java new file mode 100644 index 0000000..ffd01ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceSupportServiceImpl.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.mapper.DeviceMapper; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceSupportService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; + +import static com.casic.missiles.modular.system.consts.DeviceConst.DEVICE_TYPE_HAT; + +@Service +@RequiredArgsConstructor +public class DeviceSupportServiceImpl implements IDeviceSupportService { + + private final IDeviceExtService deviceExtService; + + private final DeviceMapper deviceMapper; + + @Override + public Long selectByGasIpPort(String gasIp, String gasPort) { + return deviceExtService.selectByGasIpPort(gasIp, gasPort); + } + + @Override + public List selectHelmetList() { + return deviceMapper.selectHelmetList(DEVICE_TYPE_HAT); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectDeviceServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectDeviceServiceImpl.java new file mode 100644 index 0000000..965f55c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectDeviceServiceImpl.java @@ -0,0 +1,96 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.DataGas; +import com.casic.missiles.modular.system.entity.DataTreeLocation; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.mapper.ProjectDeviceMapper; +import com.casic.missiles.modular.system.service.IDataSupportService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.utils.LngLatUtil; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.stream.Collectors; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class ProjectDeviceServiceImpl extends ServiceImpl implements IProjectDeviceService { + + private final IDataSupportService dataSupportService; + + @Override + public boolean saveProjectDeviceList(Long projectId, List projectDeviceList) { + projectDeviceList.forEach(i->i.setProjectId(projectId)); + return this.saveBatch(projectDeviceList); + } + + @Transactional + @Override + public boolean updateProjectDeviceList(Long projectId, List projectDeviceList) { + return this.deleteByProjectId(projectId) && this.saveProjectDeviceList(projectId, projectDeviceList); + } + + @Override + public boolean deleteByProjectId(Long projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("PROJECT_ID",projectId); + return this.remove(queryWrapper); + } + + @Override + public boolean deleteByProjectIds(List projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("PROJECT_ID",projectId); + return this.remove(queryWrapper); + } + + @Override + public List selectDetailByProjectId(Long projectId) { + return this.baseMapper.selectDetailByProjectId(projectId); + } + + @Override + public Long selectProjectIdByDevice(Long deviceId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVICE_ID",deviceId); + queryWrapper.exists("(select Id FROM br_work_site_info p where p.ID = br_project_device.PROJECT_ID AND p.PROJECT_STATE != '3')"); + ProjectDevice projectDevice = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(projectDevice) ? projectDevice.getProjectId() : null; + } + + @Override + public List selectDeviceLocationList(Long projectId) { + List list = this.baseMapper.selectDeviceLocationList(projectId); + for (DeviceLocationDTO locationDTO : list) { + DataGas dataGas = dataSupportService.getGasData(locationDTO.getDeviceId()); + DataTreeLocation location = dataSupportService.getTreeLocation(locationDTO.getDeviceId(),true); + if(ObjectUtil.isNotEmpty(dataGas)){ + locationDTO.setGasValue(dataGas.getGasValue()); + locationDTO.setTime(DateUtil.formatDateTime(dataGas.getTs())); + } + if(ObjectUtil.isNotEmpty(location)){ + locationDTO.setLng(location.getGdLng()); + locationDTO.setLat(location.getGdLat()); + locationDTO.setLocation(location.getLocation()); + } + } + list = list.stream().filter(i-> StrUtil.isAllNotEmpty(i.getLng(),i.getLat())).collect(Collectors.toList()); + return LngLatUtil.sort(list); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectWorkerServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectWorkerServiceImpl.java new file mode 100644 index 0000000..c3ec86c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectWorkerServiceImpl.java @@ -0,0 +1,101 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.DataHelmetHealth; +import com.casic.missiles.modular.system.entity.DataHelmetLocation; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.mapper.ProjectWorkerMapper; +import com.casic.missiles.modular.system.service.IHelmetSupportService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.system.consts.ProjectConst.WORKER_TYPE_NORMAL; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class ProjectWorkerServiceImpl extends ServiceImpl implements IProjectWorkerService { + + private final AbstractDeptService deptService; + private final IHelmetSupportService helmetSupportService; + + @Override + public boolean saveProjectWorkerList(Long projectId, List projectWorkerList) { + projectWorkerList.forEach(i->i.setProjectId(projectId)); + return this.saveBatch(projectWorkerList); + } + + @Transactional + @Override + public boolean updateProjectWorkerList(Long projectId, List projectWorkerList) { + return this.deleteByProjectId(projectId) && this.saveProjectWorkerList(projectId, projectWorkerList) ; + } + + @Override + public boolean deleteByProjectId(Long projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("PROJECT_ID",projectId); + return this.remove(queryWrapper); + } + + @Override + public boolean deleteByProjectIds(List projectIds) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("PROJECT_ID",projectIds); + return this.remove(queryWrapper); + } + + + @Override + public List selectDetailByProjectId(Long projectId,String workerType) { + List projectWorkerList = this.baseMapper.selectDetailByProjectId(projectId,workerType); + for (ProjectWorker projectWorker : projectWorkerList) { + if(ObjectUtil.isNotEmpty(projectWorker.getWorkerDeptId())){ + projectWorker.setWorkerDeptName(deptService.getDeptName(projectWorker.getWorkerDeptId())); + } + } + return projectWorkerList; + } + + @Override + public List selectWorkerLocationDTO(Long projectId) { + List projectWorkerList = this.baseMapper.selectWorkerLocationList(projectId,WORKER_TYPE_NORMAL); + for (WorkerLocationDTO workerLocationDTO : projectWorkerList) { + if(ObjectUtil.isNotEmpty(workerLocationDTO.getHatId())){ + DataHelmetLocation location = helmetSupportService.getHelmetLocation(workerLocationDTO.getHatId(),true); + if(ObjectUtil.isNotEmpty(location)){ + workerLocationDTO.setLng(location.getGdLng()); + workerLocationDTO.setLat(location.getGdLat()); + workerLocationDTO.setLocation(location.getLocation()); + } + + DataHelmetHealth health = helmetSupportService.getHelmetHealth(workerLocationDTO.getHatId()); + if(ObjectUtil.isNotEmpty(health)){ + workerLocationDTO.setBloodOxygen(health.getBloodOxygen()); + workerLocationDTO.setHeartRate(health.getHeartRate()); + workerLocationDTO.setTime(DateUtil.formatDateTime(health.getTs())); + } + } + } + projectWorkerList = projectWorkerList.stream().filter(i-> StrUtil.isAllNotEmpty(i.getLng(),i.getLat())).collect(Collectors.toList()); + return projectWorkerList; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkSiteInfoServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkSiteInfoServiceImpl.java new file mode 100644 index 0000000..5068da2 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkSiteInfoServiceImpl.java @@ -0,0 +1,151 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.mapper.WorkSiteInfoMapper; +import com.casic.missiles.modular.system.service.*; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.system.consts.ProjectConst.*; + +/** + *

+ * 作业现场表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class WorkSiteInfoServiceImpl extends ServiceImpl implements IWorkSiteInfoService { + + private final IProjectWorkerService projectWorkerService; + private final IProjectDeviceService projectDeviceService; + + private final IWorkerService workerService; + private final IBraceletService braceletService; + + private final AbstractDeptService deptService; + private final AbstractDictService dictService; + @Override + @Transactional + public boolean addWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO) { + workSiteDetailDTO.setCreateTime(new Date()); + workSiteDetailDTO.setUpdateTime(new Date()); + workSiteDetailDTO.setProjectState(PROJECT_STATE_PREPARE); + boolean res = this.save(workSiteDetailDTO); + if(res){ + res = projectDeviceService.saveProjectDeviceList(workSiteDetailDTO.getId(), workSiteDetailDTO.getDeviceList()); + res = res & projectWorkerService.saveProjectWorkerList(workSiteDetailDTO.getId(), workSiteDetailDTO.getWorkerList()); + } + return res; + } + + @Override + @Transactional + public boolean updateWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO) { + workSiteDetailDTO.setUpdateTime(new Date()); + boolean res = this.updateById(workSiteDetailDTO); + if(res){ + res = projectDeviceService.updateProjectDeviceList(workSiteDetailDTO.getId(), workSiteDetailDTO.getDeviceList()); + res = res & projectWorkerService.updateProjectWorkerList(workSiteDetailDTO.getId(), workSiteDetailDTO.getWorkerList()); + } + return res; + } + + @Override + public boolean deleteProjects(List projectIds) { + if(CollUtil.isNotEmpty(projectIds)) { + projectDeviceService.deleteByProjectIds(projectIds); + projectWorkerService.deleteByProjectIds(projectIds); + return this.removeByIds(projectIds); + } + return true; + } + + @Override + public WorkSiteDetailDTO getWorkSiteDetail(Long projectId) { + WorkSiteInfo workSiteInfo = this.getById(projectId); + WorkSiteDetailDTO workSiteDetailDTO = new WorkSiteDetailDTO(); + BeanUtil.copyProperties(workSiteInfo,workSiteDetailDTO,true); + workSiteDetailDTO.setDeviceList(projectDeviceService.selectDetailByProjectId(projectId)); + workSiteDetailDTO.setWorkerList(projectWorkerService.selectDetailByProjectId(projectId,WORKER_TYPE_NORMAL)); + + Worker responseWorker = workerService.selectWorkerDetail(workSiteDetailDTO.getWorkPerson()); + if(ObjectUtil.isNotEmpty(responseWorker)){ + workSiteDetailDTO.setWorkPersonName(responseWorker.getWorkerName()); + workSiteDetailDTO.setWorkPersonPhoneNumber(responseWorker.getPhoneNumber()); + workSiteDetailDTO.setWorkPersonDeptId(responseWorker.getDeptId()); + workSiteDetailDTO.setWorkPersonDeptName(responseWorker.getDeptName()); + } + return workSiteDetailDTO; + } + + @Override + public Page selectListPage(Page page, QueryWrapper queryWrapper) { + page = this.baseMapper.selectListPage(page, queryWrapper); + for (WorkSiteInfo workSiteInfo : page.getRecords()) { + workSiteInfo.setProjectStateName(dictService.getDictNameByCode("projectState", workSiteInfo.getProjectState())); + if(ObjectUtil.isNotEmpty(workSiteInfo.getWorkPersonDeptId())){ + workSiteInfo.setWorkPersonDeptName(deptService.getDeptName(workSiteInfo.getWorkPersonDeptId())); + } + workSiteInfo.setRegisterTime(DateUtil.formatDate(workSiteInfo.getCreateTime())); + } + return page; + } + + @Override + public boolean start(Long projectId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",projectId); + updateWrapper.set("PROJECT_STATE",PROJECT_STATE_WORKING); + updateWrapper.set("START_TIME",new Date()); + boolean res = this.update(updateWrapper); + //braceletService.enableBracelet(selectProjectBracelets(projectId)); + return res; + } + + @Override + public boolean finish(Long projectId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",projectId); + updateWrapper.set("PROJECT_STATE",PROJECT_STATE_FINISH); + updateWrapper.set("FINISH_TIME",new Date()); + boolean res = this.update(updateWrapper); + //braceletService.disableBracelet(selectProjectBracelets(projectId)); + return res; + } + + private List selectProjectBracelets(Long projectId){ + List deviceCodes = new ArrayList<>(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("PROJECT_ID",projectId); + queryWrapper.isNotNull("BRACELET_CODE"); + queryWrapper.select("BRACELET_CODE"); + List res = projectWorkerService.listObjs(queryWrapper); + if(CollUtil.isNotEmpty(res)){ + deviceCodes = res.stream().map(Object::toString).distinct().collect(Collectors.toList()); + } + return deviceCodes; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkerServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkerServiceImpl.java new file mode 100644 index 0000000..6859cff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkerServiceImpl.java @@ -0,0 +1,110 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.mapper.WorkerMapper; +import com.casic.missiles.modular.system.service.*; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.modular.system.consts.ProjectConst.WORKER_TYPE_TEMP; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class WorkerServiceImpl extends ServiceImpl implements IWorkerService { + + private final IProjectWorkerService projectWorkerService; + + private final IProjectDeviceService projectDeviceService; + private final AbstractDictService dictService; + private final AbstractDeptService deptService; + private final IDeviceExtService deviceExtService; + + @Override + @Transactional + public boolean addWorker(Worker worker, Long projectId) { + worker.setCreateTime(new Date()); + boolean res = this.save(worker); + if(res && ObjectUtil.isNotEmpty(projectId)){ + res = projectWorkerService.save(new ProjectWorker(projectId, worker.getId())); + if(ObjectUtil.isNotEmpty(worker.getWorkerAvatar())){ + // todo 向一体机推送人脸图片 + } + } + return res; + } + + @Override + public Page selectListPage(Page page, QueryWrapper ew) { + page = this.baseMapper.selectListPage(page, ew); + for (Worker worker : page.getRecords()) { + wrapperWorker(worker); + } + return page; + } + + private void wrapperWorker(Worker worker) { + if(StrUtil.isNotEmpty(worker.getGender())){ + worker.setGenderName(dictService.getDictNameByCode("sysSex", worker.getGender())); + } + if(ObjectUtil.isNotEmpty(worker.getDeptId())){ + worker.setDeptName(deptService.getDeptName(worker.getDeptId())); + } + worker.setRegisterTime(DateUtil.formatDate(worker.getCreateTime())); + if(StrUtil.isNotEmpty(worker.getStatus())){ + worker.setStatusName(dictService.getDictNameByCode("workerStatus", worker.getStatus())); + } + } + + @Override + public Worker selectWorkerDetail(Long workerId) { + Worker worker = this.getById(workerId); + if(ObjectUtil.isNotEmpty(worker)){ + wrapperWorker(worker); + } + return worker; + } + + @Override + public List faceRegister(String cameraIp, String cameraPort) { + Long deviceId = deviceExtService.selectByCameraIpPort(cameraIp, cameraPort); + if(ObjectUtil.isNotEmpty(deviceId)){ + Long projectId = projectDeviceService.selectProjectIdByDevice(deviceId); + if(ObjectUtil.isNotEmpty(projectId)){ + return this.baseMapper.selectWorkerAvatars(projectId); + } + } + return null; + } + + @Override + public List projectTempWorker(Long projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("WORKER_TYPE",WORKER_TYPE_TEMP); + queryWrapper.exists("(select ID FROM br_project_worker WHERE PROJECT_ID = "+ projectId +")"); + List workers = this.list(queryWrapper); + workers.forEach(this::wrapperWorker); + return workers; + } +} diff --git a/casic_video_283_web/pom.xml b/casic_video_283_web/pom.xml new file mode 100644 index 0000000..feace49 --- /dev/null +++ b/casic_video_283_web/pom.xml @@ -0,0 +1,166 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + casic_video_283_web + 1.0.0 + jar + casic_video_283_web + casic web启动入口 + + + + dev + + true + + + dev + + + + test + + test + + + + prod + + prod + + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-actuator + + + io.micrometer + micrometer-core + + + + + org.springframework.boot + spring-boot-starter-jdbc + + + + com.casic + casic-core + ${core.version} + + + com.casic + casic-admin-core + ${admin.version} + + + io.springfox + springfox-swagger-ui + + + + + com.casic + casic-admin-support + ${admin.version} + + + mysql + mysql-connector-java + ${mysql.driver.version} + + + com.casic + casic-area-starter + ${admin.version} + + + + com.casic + casic_video_283_server + ${pro.version} + + + + org.springframework.boot + spring-boot-starter-tomcat + + + + + casic_video_283_web-${pro.version} + + + org.apache.maven.plugins + maven-jar-plugin + ${maven.jar.plugin.version} + + + + /config/*-*.yml + **/MockController.class + + + + com.casic.missiles.CasicApplication + true + ./ + + + + + + org.apache.maven.plugins + maven-assembly-plugin + ${maven.assembly.plugin.version} + + + make-assembly + package + + single + + + + + + org.apache.maven.plugins + maven-war-plugin + ${maven.war.plugin.version} + + + + + src/main/resources + + + /config/*/* + /config/*-*.yml + + true + + + src/main/java + + **/*.xml + + true + + + + \ No newline at end of file diff --git a/casic_video_283_web/src/main/build/bin/start.bat b/casic_video_283_web/src/main/build/bin/start.bat new file mode 100644 index 0000000..1db4e88 --- /dev/null +++ b/casic_video_283_web/src/main/build/bin/start.bat @@ -0,0 +1,4 @@ +@echo off +title ${project.build.finalName} +java -jar ./lib/${project.build.finalName}.jar +@pause diff --git a/casic_video_283_web/src/main/build/bin/start.sh b/casic_video_283_web/src/main/build/bin/start.sh new file mode 100644 index 0000000..1cc33fc --- /dev/null +++ b/casic_video_283_web/src/main/build/bin/start.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +jar_name="${project.build.finalName}.jar" +echo "starting $jar_name ..." + +PID=$(ps -ef | grep ${jar_name} | grep -v grep | awk '{print $2}') + +OLD_IFS="$IFS" +IFS="," +PIDARR=($PID) +IFS="$OLD_IFS" + +if [ ! $PID ]; then + echo "process ${jar_name} not exit" +else + echo "process id: $PID" + + kill -9 ${PID} + + if [ $? -eq 0 ]; then + echo "kill ${jar_name} success" + else + echo "kill ${jar_name} fail" + exit + fi +fi + + + +nohup java -jar ./lib/${jar_name} >/dev/null 2>log & +echo "start ${jar_name} ..." \ No newline at end of file diff --git a/casic_video_283_web/src/main/build/package.xml b/casic_video_283_web/src/main/build/package.xml new file mode 100644 index 0000000..c9259ad --- /dev/null +++ b/casic_video_283_web/src/main/build/package.xml @@ -0,0 +1,43 @@ + + + package + + zip + tar.gz + + true + + + + true + true + lib + runtime + + + + + src/main/build/bin + + start.bat + start.sh + + true + 0744 + / + + + src/main/resources/config + true + + *.yml + /*/* + + /config + + + src/main/resources/i18n + / + + + \ No newline at end of file diff --git a/casic_video_283_web/src/main/java/com/casic/missiles/CasicApplication.java b/casic_video_283_web/src/main/java/com/casic/missiles/CasicApplication.java new file mode 100644 index 0000000..7b8791f --- /dev/null +++ b/casic_video_283_web/src/main/java/com/casic/missiles/CasicApplication.java @@ -0,0 +1,35 @@ +package com.casic.missiles; + +import lombok.extern.slf4j.Slf4j; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.web.servlet.ServletComponentScan; +import org.springframework.cache.annotation.EnableCaching; +import org.springframework.scheduling.annotation.EnableAsync; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +/** + * SpringBoot方式启动类 + * + * @author lwh + * @Date 2021/06/06 12:06 + */ +@SpringBootApplication +@EnableCaching +@EnableTransactionManagement(proxyTargetClass = true) +@EnableAsync +@Slf4j +@MapperScan(value = "com.casic.missiles.modular.system.mapper") +public class CasicApplication { + + static { + System.setProperty("druid.mysql.usePingMethod","false"); + } + + public static void main(String[] args) { + SpringApplication.run(CasicApplication.class, args); + log.info("CasicApplication is success!"); + } + +} diff --git a/casic_video_283_web/src/main/java/com/casic/missiles/CasicServletInitializer.java b/casic_video_283_web/src/main/java/com/casic/missiles/CasicServletInitializer.java new file mode 100644 index 0000000..e30585b --- /dev/null +++ b/casic_video_283_web/src/main/java/com/casic/missiles/CasicServletInitializer.java @@ -0,0 +1,18 @@ +package com.casic.missiles; + +import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; + +/** + * Guns Web程序启动类 + * + * @author fengshuonan + * @date 2017-05-21 9:43 + */ +public class CasicServletInitializer extends SpringBootServletInitializer { + + @Override + protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { + return application.sources(CasicApplication.class); + } +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java new file mode 100644 index 0000000..73d7799 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.dto; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "AlarmUpload",description = "报警上传") +@Data +public class AlarmUpload { + + @ApiModelProperty(value = "摄像头ip") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + @ApiModelProperty(value = "安全树甲烷设备ip") + private String gasIp; + @ApiModelProperty(value = "安全树甲烷设备端口") + private String gasPort; + @ApiModelProperty(value = "报警值") + private String alarmValue; + @ApiModelProperty(value = "报警时间") + private String alarmTime; + @ApiModelProperty(value = "报警类型") + private String alarmType; + @ApiModelProperty(value = "报警图片") + private String alarmImage; + @ApiModelProperty(value = "报警内容") + private String alarmContent; + + @Override + public String toString() { + return "AlarmUpload{" + + "cameraIp='" + cameraIp + '\'' + + ", cameraPort='" + cameraPort + '\'' + + ", gasIp='" + gasIp + '\'' + + ", gasPort='" + gasPort + '\'' + + ", alarmValue='" + alarmValue + '\'' + + ", alarmTime='" + alarmTime + '\'' + + ", alarmType='" + alarmType + '\'' + + ", alarmImage='" + (StrUtil.isNotEmpty(alarmImage) ? alarmImage.substring(0,50) : "null") + '\'' + + ", alarmContent='" + alarmContent + '\'' + + '}'; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java new file mode 100644 index 0000000..ea518d9 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.modular.system.entity.Device; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("DeviceDetailDTO") +@Data +public class DeviceDetailDTO extends Device { + + @ApiModelProperty(value = "摄像头编号") + private String cameraCode; + + @ApiModelProperty(value = "摄像头IP") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + + @ApiModelProperty(value = "激甲编号") + private String gasCode; + + @ApiModelProperty(value = "激甲IP") + private String gasIp; + + @ApiModelProperty(value = "激甲端口") + private String gasPort; + + @ApiModelProperty(value = "智能帽衬编号") + private String hatLiningCode; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java new file mode 100644 index 0000000..29378ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("WorkSiteDetailDTO") +public class WorkSiteDetailDTO extends WorkSiteInfo { + + @ApiModelProperty(value = "安全树列表",dataType = "ProjectDevice") + private List deviceList; + + @ApiModelProperty(value = "人员列表",dataType = "ProjectWorker") + private List workerList; + + + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java new file mode 100644 index 0000000..6fd7b24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java @@ -0,0 +1,68 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "WorkerLocationDTO",description = "人员位置列表(首页)") +@Data +public class WorkerLocationDTO { + + @ApiModelProperty("人员ID") + private Long workerId; + + @ApiModelProperty("人员姓名") + private String workerName; + + @ApiModelProperty("安全帽编号") + private String hatCode; + + @ApiModelProperty("安全帽ID") + private Long hatId; + + @ApiModelProperty("背心编号") + private String vastCode; + + @ApiModelProperty("手环编号") + private String braceletCode; + + @ApiModelProperty("位置") + private String location; + + @ApiModelProperty("时间") + private String time; + + @ApiModelProperty("经度") + private String lng; + + @ApiModelProperty("纬度") + private String lat; + + @ApiModelProperty("心率") + private String heartRate; + + @ApiModelProperty("血氧") + private String bloodOxygen; + + @ApiModelProperty("一氧化碳") + private String co; + + @ApiModelProperty("甲烷") + private String gas; + + @ApiModelProperty("硫化氢") + private String h2s; + + @ApiModelProperty("氧气") + private String o2; + + @ApiModelProperty("信号") + private String signal; + + @ApiModelProperty("电量") + private String cell; + + @ApiModelProperty("是否报警") + private boolean alarmFlag; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java new file mode 100644 index 0000000..efb4a23 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java @@ -0,0 +1,159 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 报警记录表 + *

+ * + * @author zyj + * @since 2023-05-16 + */ +@Data +@ApiModel("Alarm") +@TableName("br_bus_alarm") +public class BusAlarm implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @ApiModelProperty(value = "设备ID") + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 报警类型 + */ + @ApiModelProperty(value = "报警类型") + @TableField("ALARM_TYPE") + private String alarmType; + + /** + * 报警状态 + */ + @ApiModelProperty(value = "报警状态") + @TableField("ALARM_STATUS") + private String alarmStatus; + + /** + * 报警值 + */ + @ApiModelProperty(value = "报警值") + @TableField("ALARM_VALUE") + private String alarmValue; + + /** + * 报警图片 + */ + @ApiModelProperty(value = "报警图片") + @TableField("ALARM_IMAGE") + private String alarmImage; + + /** + * 报警内容 + */ + @ApiModelProperty(value = "报警内容") + @TableField("ALARM_CONTENT") + private String alarmContent; + + /** + * 报警时间 + */ + @ApiModelProperty(value = "报警时间") + @TableField("ALARM_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date alarmTime; + + /** + * 消警时间 + */ + @ApiModelProperty(value = "消警时间") + @TableField("CANCEL_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + /** + * 报警位置经度 + */ + @ApiModelProperty(value = "报警位置经度") + @TableField("ALARM_LNG") + private String alarmLng; + + /** + * 报警位置纬度 + */ + @ApiModelProperty(value = "报警位置纬度") + @TableField("ALARM_LAT") + private String alarmLat; + + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmStatusName; + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmTypeName; + @ApiModelProperty("作业名称") + @TableField(exist = false) + private String workTitle; + @ApiModelProperty("所属道路") + @TableField(exist = false) + private String workRoad; + @ApiModelProperty("作业状态") + @TableField(exist = false) + private String projectState; + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + @ApiModelProperty("负责人姓名") + @TableField(exist = false) + private String workPersonName; + @ApiModelProperty("负责人联系方式") + @TableField(exist = false) + private String workPersonPhoneNumber; + + + @Override + public String toString() { + return "BusAlarm{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + ", alarmType=" + alarmType + + ", alarmValue=" + alarmValue + + ", alarmStatus=" + alarmStatus + + ", alarmImage=" + alarmImage + + ", alarmContent=" + alarmContent + + ", alarmTime=" + alarmTime + + ", cancelTime=" + cancelTime + + ", alarmLng=" + alarmLng + + ", alarmLat=" + alarmLat + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java new file mode 100644 index 0000000..a0b7543 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + *

+ * 事件表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event") +@Data +@ApiModel("BusEvent") +public class BusEvent implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("事件ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件标题 + */ + @ApiModelProperty("事件名称") + @TableField("EVENT_TITLE") + private String eventTitle; + + /** + * 上报人员 + */ + @ApiModelProperty("上报人员") + @TableField("UPLOAD_NAME") + private String uploadName; + + /** + * 联系方式 + */ + @ApiModelProperty("联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 事件描述 + */ + @ApiModelProperty("事件描述") + @TableField("EVENT_DESCRIPTION") + private String eventDescription; + + @ApiModelProperty("经度") + @TableField("LNG") + private String lng; + + @ApiModelProperty("纬度") + @TableField("LAT") + private String lat; + + /** + * 事件上传时间 + */ + @ApiModelProperty("事件上传时间") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty("事件照片") + @TableField(exist = false) + private List imageList; + + + + @Override + public String toString() { + return "BusEvent{" + + "id=" + id + + ", eventTitle=" + eventTitle + + ", uploadName=" + uploadName + + ", phoneNumber=" + phoneNumber + + ", eventDescription=" + eventDescription + + ", lng=" + lng + + ", lat=" + lat + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java new file mode 100644 index 0000000..1e75245 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 事件图片表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event_image") +@Data +@ApiModel("BusEventImage") +public class BusEventImage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件ID + */ + @TableField("EVENT_ID") + private Long eventId; + + /** + * 报警图片 + */ + @TableField("IMAGE") + @ApiModelProperty("图片url") + private String image; + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java new file mode 100644 index 0000000..df89c70 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.core.base.json.DateDeserializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Device") +@TableName("br_device") +@Data +public class Device implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "设备ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty(value = "设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + /** + * 设备类型 + */ + @ApiModelProperty(value = "设备类型") + @TableField("DEVICE_TYPE") + private String deviceType; + + /** + * 设备批次 + */ + @ApiModelProperty(value = "设备批次") + @TableField("DEVICE_BATCH") + private String deviceBatch; + + /** + * 厂家 + */ + @ApiModelProperty(value = "厂家") + @TableField("MANUFACTURER") + private String manufacturer; + + /** + * 是否供电 + */ + @ApiModelProperty(value = "是否供电") + @TableField("IS_POWER_SUPPLY") + private String isPowerSupply; + + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间",dataType = "Date") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty(value = "设备类型名称") + @TableField(exist = false) + private String deviceTypeName; + + @ApiModelProperty(value = "是否供电名称") + @TableField(exist = false) + private String isPowerSupplyName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", deviceCode=" + deviceCode + + ", deviceType=" + deviceType + + ", deviceBatch=" + deviceBatch + + ", manufacturer=" + manufacturer + + ", isPowerSupply=" + isPowerSupply + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java new file mode 100644 index 0000000..5ee7015 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java @@ -0,0 +1,99 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 设备扩展信息表(安全树) + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Data +@TableName("br_device_ext") +public class DeviceExt implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 摄像头编号 + */ + @TableField("CAMERA_CODE") + private String cameraCode; + + /** + * 摄像头IP + */ + @TableField("CAMERA_IP") + private String cameraIp; + + /** + * 摄像头端口 + */ + @TableField("CAMERA_PORT") + private String cameraPort; + + /** + * 激甲编号 + */ + @TableField("GAS_CODE") + private String gasCode; + + /** + * 激甲IP + */ + @TableField("GAS_IP") + private String gasIp; + + /** + * 激甲端口 + */ + @TableField("GAS_PORT") + private String gasPort; + + /** + * 甲烷报警阈值 + */ + @TableField("GAS_THRESHOLD") + private String gasThreshold; + + @TableField(value = "HAT_LINING_CODE") + private String hatLiningCode; + + + @Override + public String toString() { + return "DeviceExt{" + + "id=" + id + + ", deviceId=" + deviceId + + ", cameraCode=" + cameraCode + + ", cameraIp=" + cameraIp + + ", cameraPort=" + cameraPort + + ", gasCode=" + gasCode + + ", gasIp=" + gasIp + + ", gasPort=" + gasPort + + ", gasThreshold=" + gasThreshold + + ", hatLiningCode=" + hatLiningCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java new file mode 100644 index 0000000..c4f3472 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java @@ -0,0 +1,62 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Data +@ApiModel("ProjectDevice") +@TableName("br_project_device") +public class ProjectDevice implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + @ApiModelProperty("设备ID(新增编辑时传)") + private Long deviceId; + + /** + * 设备编号 + */ + @TableField(exist = false) + @ApiModelProperty("设备编号(详情中展示,新增编辑不用传)") + private String deviceCode; + + @Override + public String toString() { + return "ProjectDevice{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java new file mode 100644 index 0000000..10b23c4 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java @@ -0,0 +1,104 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("ProjectWorker") +@TableName("br_project_worker") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ProjectWorker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 人员ID + */ + @ApiModelProperty("人员ID") + @TableField("WORKER_ID") + private Long workerId; + + /** + * 安全帽编号 + */ + @ApiModelProperty("安全帽编号") + @TableField("HAT_CODE") + private String hatCode; + + /** + * 背心编号 + */ + @ApiModelProperty("背心编号") + @TableField("VAST_CODE") + private String vastCode; + + /** + * 手环编号 + */ + @ApiModelProperty("手环编号") + @TableField("BRACELET_CODE") + private String braceletCode; + + @ApiModelProperty("人员姓名(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerName; + + @ApiModelProperty("人员部门ID(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptId; + + @ApiModelProperty("人员部门名称(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptName; + + @ApiModelProperty("人员联系方式(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerPhoneNumber; + + public ProjectWorker(Long projectId, Long workerId) { + this.projectId = projectId; + this.workerId = workerId; + } + + @Override + public String toString() { + return "ProjectWorker{" + + "id=" + id + + ", projectId=" + projectId + + ", workerId=" + workerId + + ", hatCode=" + hatCode + + ", vastCode=" + vastCode + + ", braceletCode=" + braceletCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java new file mode 100644 index 0000000..fa6f41d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 作业现场表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("WorkSiteInfo") +@TableName("br_work_site_info") +@Data +public class WorkSiteInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("作业现场ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业名称 + */ + @ApiModelProperty("作业名称") + @TableField("WORK_TITLE") + private String workTitle; + + /** + * 责任人 + */ + @ApiModelProperty("责任人(人员ID)") + @TableField("WORK_PERSON") + private Long workPerson; + + /** + * 作业描述 + */ + @ApiModelProperty("作业描述") + @TableField("WORK_SITE_DESC") + private String workSiteDesc; + + /** + * 作业状态 + */ + @ApiModelProperty("作业状态") + @TableField("PROJECT_STATE") + private String projectState; + + /** + * 所属道路 + */ + @ApiModelProperty("所属道路") + @TableField("WORK_ROAD") + private String workRoad; + + @TableField("IMAGE_URL") + private String imageUrl; + + @TableField("CREATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + @TableField("UPDATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("FINISH_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + @ApiModelProperty("负责人姓名(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonName; + + @ApiModelProperty("负责人联系方式(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonPhoneNumber; + + @ApiModelProperty("负责人所属部门ID(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private Long workPersonDeptId; + + @ApiModelProperty("负责人所属部门名称(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonDeptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + + @Override + public String toString() { + return "WorkSiteInfo{" + + "id=" + id + + ", workTitle=" + workTitle + + ", workPerson=" + workPerson + + ", workSiteDesc=" + workSiteDesc + + ", projectState=" + projectState + + ", imageUrl=" + imageUrl + + ", updateTime=" + updateTime + + ", workRoad=" + workRoad + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java new file mode 100644 index 0000000..28a4daa --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java @@ -0,0 +1,147 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Worker") +@TableName("br_worker") +@Data +public class Worker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "人员ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 姓名 + */ + @ApiModelProperty(value = "姓名") + @TableField("WORKER_NAME") + private String workerName; + + /** + * 性别 + */ + @ApiModelProperty(value = "性别") + @TableField("GENDER") + private String gender; + + /** + * 所属部门 + */ + @ApiModelProperty(value = "所属部门(人员管理)") + @TableField("DEPT_ID") + private Long deptId; + + /** + * 所属单位 + */ + @ApiModelProperty(value = "所属单位(入场申请中使用)") + @TableField("OWNER_SHIP") + private String ownerShip; + + /** + * 联系方式 + */ + @ApiModelProperty(value = "联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 证件号 + */ + @ApiModelProperty(value = "证件号") + @TableField("ID_CARD_NUMBER") + private String idCardNumber; + + /** + * 入场原因 + */ + @ApiModelProperty(value = "入场原因(入场申请中使用)") + @TableField("ENTER_REASON") + private String enterReason; + + /** + * 入场人脸照片 + */ + @ApiModelProperty(value = "人脸照片(照片路径)") + @TableField("WORKER_AVATAR") + private String workerAvatar; + + /** + * 申请入场时间 + */ + @ApiModelProperty(value = "注册时间/申请入场时间") + @TableField("CREATE_TIME") + private Date createTime; + + /** + * 人员类型 + */ + @ApiModelProperty(value = "人员类型(区分人员管理和入场申请)") + @TableField("WORKER_TYPE") + private String workerType; + + @ApiModelProperty(value = "性别名称") + @TableField(exist = false) + private String genderName; + + @ApiModelProperty(value = "部门名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @ApiModelProperty(value = "是否注册(0未注册;1已注册)",allowableValues = "0,1") + @TableField(exist = false) + private String isRegister; + + @Override + public String toString() { + return "Worker{" + + "id=" + id + + ", workerName=" + workerName + + ", gender=" + gender + + ", deptId=" + deptId + + ", ownerShip=" + ownerShip + + ", phoneNumber=" + phoneNumber + + ", idCardNumber=" + idCardNumber + + ", enterReason=" + enterReason + + ", workerAvatar=" + workerAvatar + + ", createTime=" + createTime + + ", workerType=" + workerType + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java new file mode 100644 index 0000000..9801742 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警记录表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusAlarmMapper extends BaseMapper { + + Page listPage(Page page,@Param("ew") QueryWrapper queryWrapper); + + void cancelAlarm(@Param("deviceId")Long deviceId,@Param("alarmType") String alarmType); + + List alarmCount(@Param("projectId")Long projectId, @Param("alarmStatus")String alarmStatus); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java new file mode 100644 index 0000000..9590b7d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件图片表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventImageMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java new file mode 100644 index 0000000..3c85edf --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java new file mode 100644 index 0000000..4ca9212 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 设备扩展信息表(安全树) Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface DeviceExtMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java new file mode 100644 index 0000000..444c0c5 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Mapper +public interface DeviceMapper extends BaseMapper { + + Page listDetailPage(Page page,@Param("ew") QueryWrapper ew); + + List selectProjectDevice(@Param("projectId") Long projectId); + + List selectHelmetList(@Param("deviceType")String deviceType); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java new file mode 100644 index 0000000..1d0c14e --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectDeviceMapper extends BaseMapper { + List selectDetailByProjectId(@Param("projectId") Long projectId); + + List selectDeviceLocationList(@Param("projectId") Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java new file mode 100644 index 0000000..58583d1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectWorkerMapper extends BaseMapper { + + List selectDetailByProjectId(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + + List selectWorkerLocationList(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java new file mode 100644 index 0000000..a4934d2 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +/** + *

+ * 作业现场表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkSiteInfoMapper extends BaseMapper { + + Page selectListPage(Page page,@Param("ew") QueryWrapper ew); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java new file mode 100644 index 0000000..258fb12 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkerMapper extends BaseMapper { + + + Page selectListPage(Page page, @Param("ew") QueryWrapper ew); + + List selectWorkerAvatars(@Param("projectId")Long projectId); + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml new file mode 100644 index 0000000..595088a --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml @@ -0,0 +1,58 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml new file mode 100644 index 0000000..fbc3db3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml new file mode 100644 index 0000000..627d573 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml new file mode 100644 index 0000000..5321d1c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml new file mode 100644 index 0000000..94262e1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml @@ -0,0 +1,97 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml new file mode 100644 index 0000000..c6d1c24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml @@ -0,0 +1,29 @@ + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml new file mode 100644 index 0000000..8d2de10 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml new file mode 100644 index 0000000..8f01326 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml @@ -0,0 +1,26 @@ + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml new file mode 100644 index 0000000..3e28b39 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml @@ -0,0 +1,56 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java new file mode 100644 index 0000000..f63c19c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 报警记录表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusAlarmService extends IService { + + boolean alarmUpload(AlarmUpload alarmUpload); + + Page listPage(Page page,QueryWrapper queryWrapper); + + List alarmCount(Long projectId,String alarmStatus); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java new file mode 100644 index 0000000..b1187ed --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 事件图片表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusEventImageService extends IService { + + boolean saveBusEventImages(Long eventId, List imageList); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java new file mode 100644 index 0000000..85c48d0 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 事件表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusEventService extends IService { + + boolean saveBusEvent(BusEvent busEvent); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java new file mode 100644 index 0000000..6fc5361 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 设备扩展信息表(安全树) 服务类 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface IDeviceExtService extends IService { + + boolean saveDeviceExt(DeviceDetailDTO deviceDetailDTO); + + boolean updateDeviceExt(DeviceDetailDTO deviceDetailDTO); + + boolean removeByDeviceIds(List deviceIds); + + boolean setGasThreshold(String gasIp,String gasPort,String threshold); + + String getGasThreshold(String gasIp,String gasPort); + + Long selectByGasIpPort(String gasIp,String gasPort); + + Long selectByCameraIpPort(String cameraIp,String cameraPort); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java new file mode 100644 index 0000000..9e62756 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java @@ -0,0 +1,32 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IDeviceService extends IService { + + boolean saveDevice(DeviceDetailDTO deviceDetailDTO); + + boolean updateDevice(DeviceDetailDTO deviceDetailDTO); + + boolean deleteDevices(List deviceIds); + + Page listPage(Page page, QueryWrapper queryWrapper, String status,Long projectId); + + List selectProjectDevice(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java new file mode 100644 index 0000000..8599411 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IProjectDeviceService extends IService { + + boolean saveProjectDeviceList(Long projectId, List projectDeviceList); + + boolean updateProjectDeviceList(Long projectId, List projectDeviceList); + + boolean deleteByProjectId(Long projectId); + + boolean deleteByProjectIds(List projectIds); + + List selectDetailByProjectId(Long projectId); + + Long selectProjectIdByDevice(Long deviceId); + + List selectDeviceLocationList(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java new file mode 100644 index 0000000..e921bc3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IProjectWorkerService extends IService { + + boolean saveProjectWorkerList(Long projectId, List projectWorkerList); + + boolean updateProjectWorkerList(Long projectId, List projectWorkerList); + + boolean deleteByProjectId(Long projectId); + + boolean deleteByProjectIds(List projectIds); + + List selectDetailByProjectId(Long projectId,String workerType); + + List selectWorkerLocationDTO(Long projectId); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java new file mode 100644 index 0000000..58a8590 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; +/** + *

+ * 作业现场表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IWorkSiteInfoService extends IService { + + boolean addWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO); + + boolean updateWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO); + + boolean deleteProjects(List projectIds); + + WorkSiteDetailDTO getWorkSiteDetail(Long projectId); + + Page selectListPage(Page page, QueryWrapper queryWrapper); + + boolean start(Long projectId); + + boolean finish(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java new file mode 100644 index 0000000..6c6ee98 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.extension.service.IService; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IWorkerService extends IService { + + boolean addWorker(Worker worker,Long projectId); + + Page selectListPage(Page page,QueryWrapper ew); + + Worker selectWorkerDetail(Long workerId); + + List faceRegister(String cameraIp,String cameraPort); + + List projectTempWorker(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java new file mode 100644 index 0000000..b44de1d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.consts.AlarmTypeEnum; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.entity.DataTreeLocation; +import com.casic.missiles.modular.system.mapper.BusAlarmMapper; +import com.casic.missiles.modular.system.service.*; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +/** + *

+ * 报警记录表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +@Slf4j +public class BusAlarmServiceImpl extends ServiceImpl implements IBusAlarmService { + + private final IDeviceExtService deviceExtService; + private final IDeviceService deviceService; + private final IProjectDeviceService projectDeviceService; + + private final ICasicFileService fileService; + + private final AbstractDictService dictService; + private final IDataSupportService dataSupportService; + + @Override + @Transactional + public boolean alarmUpload(AlarmUpload alarmUpload) { + log.info("alarm upload ==> {}",alarmUpload.toString()); + Long deviceId = null; + if(StrUtil.isAllNotBlank(alarmUpload.getGasIp(),alarmUpload.getGasPort())){ + deviceId = deviceExtService.selectByGasIpPort(alarmUpload.getGasIp(),alarmUpload.getGasPort()); + } + if(ObjectUtil.isEmpty(deviceId) && StrUtil.isAllNotBlank(alarmUpload.getCameraIp(),alarmUpload.getCameraPort())){ + deviceId = deviceExtService.selectByCameraIpPort(alarmUpload.getCameraIp(),alarmUpload.getCameraPort()); + } + + if(ObjectUtil.isEmpty(deviceId)){ + return false; + } + + BusAlarm alarm = new BusAlarm(); + alarm.setDeviceId(deviceId); + alarm.setProjectId(projectDeviceService.selectProjectIdByDevice(deviceId)); + alarm.setAlarmValue(alarmUpload.getAlarmValue()); + if(StrUtil.isNotEmpty(alarmUpload.getAlarmTime())){ + alarm.setAlarmTime(DateUtil.parseDateTime(alarmUpload.getAlarmTime())); + }else { + alarm.setAlarmTime(new Date()); + } + + alarm.setAlarmType(alarmUpload.getAlarmType()); + alarm.setAlarmContent(alarmUpload.getAlarmContent()); + if(StrUtil.isNotEmpty(alarmUpload.getAlarmImage())){ + String imgBase64 = "data:image/jpeg;base64," + alarmUpload.getAlarmImage(); + String imageUrl = fileService.saveFile(imgBase64); + alarm.setAlarmImage(imageUrl); + } + alarm.setAlarmStatus(ALARM_STATUS_ON); + + DataTreeLocation treeLocation = dataSupportService.getTreeLocation(deviceId); + if(ObjectUtil.isNotEmpty(treeLocation)){ + alarm.setAlarmLng(treeLocation.getGdLng()); + alarm.setAlarmLat(treeLocation.getGdLat()); + } + + //自动消警 + AlarmTypeEnum alarmTypeEnum = AlarmTypeEnum.getByAlarmType(alarm.getAlarmType()); + if(ObjectUtil.isNotEmpty(alarmTypeEnum) && alarmTypeEnum.isAutoCancel()){ + this.baseMapper.cancelAlarm(deviceId,alarm.getAlarmType()); + } + return this.save(alarm); + } + + @Override + public Page listPage(Page page, QueryWrapper queryWrapper) { + page = this.baseMapper.listPage(page, queryWrapper); + for (BusAlarm alarm : page.getRecords()) { + alarm.setAlarmTypeName(dictService.getDictNameByCode("alarmType",alarm.getAlarmType())); + alarm.setAlarmStatusName(dictService.getDictNameByCode("alarmStatus",alarm.getAlarmStatus())); + if(StrUtil.isNotEmpty(alarm.getProjectState())){ + alarm.setProjectStateName(dictService.getDictNameByCode("projectStatus",alarm.getProjectState())); + } + } + return page; + } + + @Override + public List alarmCount(Long projectId, String alarmStatus) { + List list = this.baseMapper.alarmCount(projectId, alarmStatus); + list = list.stream().filter(i->StrUtil.isNotEmpty(i.getAlarmType())).collect(Collectors.toList()); + for (AlarmTypeCountDTO countDTO : list) { + countDTO.setAlarmTypeName(dictService.getDictNameByCode("alarmType",countDTO.getAlarmType())); + } + return list; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java new file mode 100644 index 0000000..a43f7c1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.casic.missiles.modular.system.mapper.BusEventImageMapper; +import com.casic.missiles.modular.system.service.IBusEventImageService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 事件图片表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +public class BusEventImageServiceImpl extends ServiceImpl implements IBusEventImageService { + + @Override + public boolean saveBusEventImages(Long eventId, List imageList) { + imageList.forEach(i->i.setEventId(eventId)); + return this.saveBatch(imageList); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java new file mode 100644 index 0000000..21e511c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java @@ -0,0 +1,39 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.mapper.BusEventMapper; +import com.casic.missiles.modular.system.service.IBusEventImageService; +import com.casic.missiles.modular.system.service.IBusEventService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; + +/** + *

+ * 事件表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class BusEventServiceImpl extends ServiceImpl implements IBusEventService { + + private final IBusEventImageService busEventImageService; + + + @Override + @Transactional + public boolean saveBusEvent(BusEvent busEvent) { + busEvent.setCreateTime(new Date()); + boolean res = this.save(busEvent); + if(res){ + res = busEventImageService.saveBusEventImages(busEvent.getId(),busEvent.getImageList()); + } + return res; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java new file mode 100644 index 0000000..2bdb63d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java @@ -0,0 +1,102 @@ +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.core.conditions.update.UpdateWrapper; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.casic.missiles.modular.system.mapper.DeviceExtMapper; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 设备扩展信息表(安全树) 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Service +public class DeviceExtServiceImpl extends ServiceImpl implements IDeviceExtService { + + + @Override + public boolean saveDeviceExt(DeviceDetailDTO deviceDetailDTO) { + DeviceExt ext = new DeviceExt(); + ext.setDeviceId(deviceDetailDTO.getId()); + ext.setCameraCode(deviceDetailDTO.getCameraCode()); + ext.setCameraIp(deviceDetailDTO.getCameraIp()); + ext.setCameraPort(deviceDetailDTO.getCameraPort()); + ext.setGasCode(deviceDetailDTO.getGasCode()); + ext.setGasIp(deviceDetailDTO.getGasIp()); + ext.setGasPort(deviceDetailDTO.getGasPort()); + ext.setHatLiningCode(deviceDetailDTO.getHatLiningCode()); + return this.save(ext); + } + + @Override + public boolean updateDeviceExt(DeviceDetailDTO deviceDetailDTO) { + DeviceExt ext = this.selectByDeviceId(deviceDetailDTO.getId()); + ext.setCameraCode(deviceDetailDTO.getCameraCode()); + ext.setCameraIp(deviceDetailDTO.getCameraIp()); + ext.setCameraPort(deviceDetailDTO.getCameraPort()); + ext.setGasCode(deviceDetailDTO.getGasCode()); + ext.setGasIp(deviceDetailDTO.getGasIp()); + ext.setGasPort(deviceDetailDTO.getGasPort()); + ext.setHatLiningCode(deviceDetailDTO.getHatLiningCode()); + return this.updateById(ext); + } + + @Override + public boolean removeByDeviceIds(List deviceIds) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("DEVICE_ID",deviceIds); + return this.remove(queryWrapper); + } + + @Override + public boolean setGasThreshold(String gasIp, String gasPort, String threshold) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.set("GAS_THRESHOLD",threshold); + updateWrapper.eq("GAS_IP",gasIp); + updateWrapper.eq("GAS_PORT",gasPort); + return this.update(updateWrapper); + } + + @Override + public String getGasThreshold(String gasIp, String gasPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("GAS_IP",gasIp); + queryWrapper.eq("GAS_PORT",gasPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getGasThreshold() : null; + } + + private DeviceExt selectByDeviceId(Long deviceId){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVICE_ID",deviceId); + return this.getOne(queryWrapper); + } + + @Override + public Long selectByGasIpPort(String gasIp, String gasPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("GAS_IP",gasIp); + queryWrapper.eq("GAS_PORT",gasPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getDeviceId() : null; + } + + @Override + public Long selectByCameraIpPort(String cameraIp, String cameraPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("CAMERA_IP",cameraIp); + queryWrapper.eq("CAMERA_PORT",cameraPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getDeviceId() : null; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java new file mode 100644 index 0000000..9df79ef --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.mapper.DeviceMapper; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.modular.system.consts.DeviceConst.*; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class DeviceServiceImpl extends ServiceImpl implements IDeviceService { + + private final AbstractDictService dictService; + private final IDeviceExtService deviceExtService; + + private final IProjectDeviceService projectDeviceService; + + @Transactional + @Override + public boolean saveDevice(DeviceDetailDTO deviceDetailDTO) { + deviceDetailDTO.setCreateTime(new Date()); + boolean deviceRes = this.save(deviceDetailDTO); + if(deviceRes && DEVICE_TYPE_TREE.equals(deviceDetailDTO.getDeviceType())){ + deviceRes = deviceExtService.saveDeviceExt(deviceDetailDTO); + } + return deviceRes; + } + + @Transactional + @Override + public boolean updateDevice(DeviceDetailDTO deviceDetailDTO) { + boolean deviceRes = this.updateById(deviceDetailDTO); + if(deviceRes && DEVICE_TYPE_TREE.equals(deviceDetailDTO.getDeviceType())){ + deviceRes = deviceExtService.updateDeviceExt(deviceDetailDTO); + } + return deviceRes; + } + + @Transactional + @Override + public boolean deleteDevices(List deviceIds) { + return this.removeByIds(deviceIds) & deviceExtService.removeByDeviceIds(deviceIds); + } + + @Override + public Page listPage(Page page, QueryWrapper queryWrapper,String status,Long projectId) { + String ID_COLUMN_NAME = "br_device.ID"; + List useDevices = this.selectProjectDevice(null); + List projectDevices; + if(ObjectUtil.isNotEmpty(projectId)){ + projectDevices = this.selectProjectDevice(projectId); + } else { + projectDevices = null; + } + + // 查询使用中的设备(如果传了 projectId,查询 使用中&&此现场) + if(DEVICE_STATUS_USE.equals(status)){ + if(CollUtil.isEmpty(useDevices)){ + return page; + } + if(ObjectUtil.isNotEmpty(projectId) && CollUtil.isEmpty(projectDevices)){ + return page; + } + queryWrapper.in(ID_COLUMN_NAME,useDevices); + if(CollUtil.isNotEmpty(projectDevices)){ + queryWrapper.in(ID_COLUMN_NAME,projectDevices); + } + + } + + // 查询未使用的设备(如果传了 projectId,查询 未使用||此现场) + if(DEVICE_STATUS_NORMAL.equals(status)) { + if (CollUtil.isNotEmpty(useDevices)) { + if (CollUtil.isEmpty(projectDevices)) { + queryWrapper.notIn(ID_COLUMN_NAME, useDevices); + } else { + queryWrapper.and(i -> i.notIn(ID_COLUMN_NAME, useDevices).or().in(ID_COLUMN_NAME, projectDevices)); + } + } + } + + page = this.baseMapper.listDetailPage(page, queryWrapper); + for (DeviceDetailDTO record : page.getRecords()) { + record.setDeviceTypeName(dictService.getDictNameByCode("deviceType",record.getDeviceType())); + record.setIsPowerSupplyName(dictService.getDictNameByCode("isPowerSupply",record.getIsPowerSupply())); + record.setRegisterTime(DateUtil.formatDate(record.getCreateTime())); + record.setStatus(useDevices.contains(record.getId()) ? DEVICE_STATUS_USE : DEVICE_STATUS_NORMAL); + record.setStatusName(dictService.getDictNameByCode("deviceStatus",record.getStatus())); + } + return page; + } + + @Override + public List selectProjectDevice(Long projectId) { + return this.baseMapper.selectProjectDevice(projectId); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceSupportServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceSupportServiceImpl.java new file mode 100644 index 0000000..ffd01ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceSupportServiceImpl.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.mapper.DeviceMapper; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceSupportService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; + +import static com.casic.missiles.modular.system.consts.DeviceConst.DEVICE_TYPE_HAT; + +@Service +@RequiredArgsConstructor +public class DeviceSupportServiceImpl implements IDeviceSupportService { + + private final IDeviceExtService deviceExtService; + + private final DeviceMapper deviceMapper; + + @Override + public Long selectByGasIpPort(String gasIp, String gasPort) { + return deviceExtService.selectByGasIpPort(gasIp, gasPort); + } + + @Override + public List selectHelmetList() { + return deviceMapper.selectHelmetList(DEVICE_TYPE_HAT); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectDeviceServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectDeviceServiceImpl.java new file mode 100644 index 0000000..965f55c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectDeviceServiceImpl.java @@ -0,0 +1,96 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.DataGas; +import com.casic.missiles.modular.system.entity.DataTreeLocation; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.mapper.ProjectDeviceMapper; +import com.casic.missiles.modular.system.service.IDataSupportService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.utils.LngLatUtil; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.stream.Collectors; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class ProjectDeviceServiceImpl extends ServiceImpl implements IProjectDeviceService { + + private final IDataSupportService dataSupportService; + + @Override + public boolean saveProjectDeviceList(Long projectId, List projectDeviceList) { + projectDeviceList.forEach(i->i.setProjectId(projectId)); + return this.saveBatch(projectDeviceList); + } + + @Transactional + @Override + public boolean updateProjectDeviceList(Long projectId, List projectDeviceList) { + return this.deleteByProjectId(projectId) && this.saveProjectDeviceList(projectId, projectDeviceList); + } + + @Override + public boolean deleteByProjectId(Long projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("PROJECT_ID",projectId); + return this.remove(queryWrapper); + } + + @Override + public boolean deleteByProjectIds(List projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("PROJECT_ID",projectId); + return this.remove(queryWrapper); + } + + @Override + public List selectDetailByProjectId(Long projectId) { + return this.baseMapper.selectDetailByProjectId(projectId); + } + + @Override + public Long selectProjectIdByDevice(Long deviceId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVICE_ID",deviceId); + queryWrapper.exists("(select Id FROM br_work_site_info p where p.ID = br_project_device.PROJECT_ID AND p.PROJECT_STATE != '3')"); + ProjectDevice projectDevice = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(projectDevice) ? projectDevice.getProjectId() : null; + } + + @Override + public List selectDeviceLocationList(Long projectId) { + List list = this.baseMapper.selectDeviceLocationList(projectId); + for (DeviceLocationDTO locationDTO : list) { + DataGas dataGas = dataSupportService.getGasData(locationDTO.getDeviceId()); + DataTreeLocation location = dataSupportService.getTreeLocation(locationDTO.getDeviceId(),true); + if(ObjectUtil.isNotEmpty(dataGas)){ + locationDTO.setGasValue(dataGas.getGasValue()); + locationDTO.setTime(DateUtil.formatDateTime(dataGas.getTs())); + } + if(ObjectUtil.isNotEmpty(location)){ + locationDTO.setLng(location.getGdLng()); + locationDTO.setLat(location.getGdLat()); + locationDTO.setLocation(location.getLocation()); + } + } + list = list.stream().filter(i-> StrUtil.isAllNotEmpty(i.getLng(),i.getLat())).collect(Collectors.toList()); + return LngLatUtil.sort(list); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectWorkerServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectWorkerServiceImpl.java new file mode 100644 index 0000000..c3ec86c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectWorkerServiceImpl.java @@ -0,0 +1,101 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.DataHelmetHealth; +import com.casic.missiles.modular.system.entity.DataHelmetLocation; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.mapper.ProjectWorkerMapper; +import com.casic.missiles.modular.system.service.IHelmetSupportService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.system.consts.ProjectConst.WORKER_TYPE_NORMAL; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class ProjectWorkerServiceImpl extends ServiceImpl implements IProjectWorkerService { + + private final AbstractDeptService deptService; + private final IHelmetSupportService helmetSupportService; + + @Override + public boolean saveProjectWorkerList(Long projectId, List projectWorkerList) { + projectWorkerList.forEach(i->i.setProjectId(projectId)); + return this.saveBatch(projectWorkerList); + } + + @Transactional + @Override + public boolean updateProjectWorkerList(Long projectId, List projectWorkerList) { + return this.deleteByProjectId(projectId) && this.saveProjectWorkerList(projectId, projectWorkerList) ; + } + + @Override + public boolean deleteByProjectId(Long projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("PROJECT_ID",projectId); + return this.remove(queryWrapper); + } + + @Override + public boolean deleteByProjectIds(List projectIds) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("PROJECT_ID",projectIds); + return this.remove(queryWrapper); + } + + + @Override + public List selectDetailByProjectId(Long projectId,String workerType) { + List projectWorkerList = this.baseMapper.selectDetailByProjectId(projectId,workerType); + for (ProjectWorker projectWorker : projectWorkerList) { + if(ObjectUtil.isNotEmpty(projectWorker.getWorkerDeptId())){ + projectWorker.setWorkerDeptName(deptService.getDeptName(projectWorker.getWorkerDeptId())); + } + } + return projectWorkerList; + } + + @Override + public List selectWorkerLocationDTO(Long projectId) { + List projectWorkerList = this.baseMapper.selectWorkerLocationList(projectId,WORKER_TYPE_NORMAL); + for (WorkerLocationDTO workerLocationDTO : projectWorkerList) { + if(ObjectUtil.isNotEmpty(workerLocationDTO.getHatId())){ + DataHelmetLocation location = helmetSupportService.getHelmetLocation(workerLocationDTO.getHatId(),true); + if(ObjectUtil.isNotEmpty(location)){ + workerLocationDTO.setLng(location.getGdLng()); + workerLocationDTO.setLat(location.getGdLat()); + workerLocationDTO.setLocation(location.getLocation()); + } + + DataHelmetHealth health = helmetSupportService.getHelmetHealth(workerLocationDTO.getHatId()); + if(ObjectUtil.isNotEmpty(health)){ + workerLocationDTO.setBloodOxygen(health.getBloodOxygen()); + workerLocationDTO.setHeartRate(health.getHeartRate()); + workerLocationDTO.setTime(DateUtil.formatDateTime(health.getTs())); + } + } + } + projectWorkerList = projectWorkerList.stream().filter(i-> StrUtil.isAllNotEmpty(i.getLng(),i.getLat())).collect(Collectors.toList()); + return projectWorkerList; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkSiteInfoServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkSiteInfoServiceImpl.java new file mode 100644 index 0000000..5068da2 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkSiteInfoServiceImpl.java @@ -0,0 +1,151 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.mapper.WorkSiteInfoMapper; +import com.casic.missiles.modular.system.service.*; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.system.consts.ProjectConst.*; + +/** + *

+ * 作业现场表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class WorkSiteInfoServiceImpl extends ServiceImpl implements IWorkSiteInfoService { + + private final IProjectWorkerService projectWorkerService; + private final IProjectDeviceService projectDeviceService; + + private final IWorkerService workerService; + private final IBraceletService braceletService; + + private final AbstractDeptService deptService; + private final AbstractDictService dictService; + @Override + @Transactional + public boolean addWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO) { + workSiteDetailDTO.setCreateTime(new Date()); + workSiteDetailDTO.setUpdateTime(new Date()); + workSiteDetailDTO.setProjectState(PROJECT_STATE_PREPARE); + boolean res = this.save(workSiteDetailDTO); + if(res){ + res = projectDeviceService.saveProjectDeviceList(workSiteDetailDTO.getId(), workSiteDetailDTO.getDeviceList()); + res = res & projectWorkerService.saveProjectWorkerList(workSiteDetailDTO.getId(), workSiteDetailDTO.getWorkerList()); + } + return res; + } + + @Override + @Transactional + public boolean updateWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO) { + workSiteDetailDTO.setUpdateTime(new Date()); + boolean res = this.updateById(workSiteDetailDTO); + if(res){ + res = projectDeviceService.updateProjectDeviceList(workSiteDetailDTO.getId(), workSiteDetailDTO.getDeviceList()); + res = res & projectWorkerService.updateProjectWorkerList(workSiteDetailDTO.getId(), workSiteDetailDTO.getWorkerList()); + } + return res; + } + + @Override + public boolean deleteProjects(List projectIds) { + if(CollUtil.isNotEmpty(projectIds)) { + projectDeviceService.deleteByProjectIds(projectIds); + projectWorkerService.deleteByProjectIds(projectIds); + return this.removeByIds(projectIds); + } + return true; + } + + @Override + public WorkSiteDetailDTO getWorkSiteDetail(Long projectId) { + WorkSiteInfo workSiteInfo = this.getById(projectId); + WorkSiteDetailDTO workSiteDetailDTO = new WorkSiteDetailDTO(); + BeanUtil.copyProperties(workSiteInfo,workSiteDetailDTO,true); + workSiteDetailDTO.setDeviceList(projectDeviceService.selectDetailByProjectId(projectId)); + workSiteDetailDTO.setWorkerList(projectWorkerService.selectDetailByProjectId(projectId,WORKER_TYPE_NORMAL)); + + Worker responseWorker = workerService.selectWorkerDetail(workSiteDetailDTO.getWorkPerson()); + if(ObjectUtil.isNotEmpty(responseWorker)){ + workSiteDetailDTO.setWorkPersonName(responseWorker.getWorkerName()); + workSiteDetailDTO.setWorkPersonPhoneNumber(responseWorker.getPhoneNumber()); + workSiteDetailDTO.setWorkPersonDeptId(responseWorker.getDeptId()); + workSiteDetailDTO.setWorkPersonDeptName(responseWorker.getDeptName()); + } + return workSiteDetailDTO; + } + + @Override + public Page selectListPage(Page page, QueryWrapper queryWrapper) { + page = this.baseMapper.selectListPage(page, queryWrapper); + for (WorkSiteInfo workSiteInfo : page.getRecords()) { + workSiteInfo.setProjectStateName(dictService.getDictNameByCode("projectState", workSiteInfo.getProjectState())); + if(ObjectUtil.isNotEmpty(workSiteInfo.getWorkPersonDeptId())){ + workSiteInfo.setWorkPersonDeptName(deptService.getDeptName(workSiteInfo.getWorkPersonDeptId())); + } + workSiteInfo.setRegisterTime(DateUtil.formatDate(workSiteInfo.getCreateTime())); + } + return page; + } + + @Override + public boolean start(Long projectId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",projectId); + updateWrapper.set("PROJECT_STATE",PROJECT_STATE_WORKING); + updateWrapper.set("START_TIME",new Date()); + boolean res = this.update(updateWrapper); + //braceletService.enableBracelet(selectProjectBracelets(projectId)); + return res; + } + + @Override + public boolean finish(Long projectId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",projectId); + updateWrapper.set("PROJECT_STATE",PROJECT_STATE_FINISH); + updateWrapper.set("FINISH_TIME",new Date()); + boolean res = this.update(updateWrapper); + //braceletService.disableBracelet(selectProjectBracelets(projectId)); + return res; + } + + private List selectProjectBracelets(Long projectId){ + List deviceCodes = new ArrayList<>(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("PROJECT_ID",projectId); + queryWrapper.isNotNull("BRACELET_CODE"); + queryWrapper.select("BRACELET_CODE"); + List res = projectWorkerService.listObjs(queryWrapper); + if(CollUtil.isNotEmpty(res)){ + deviceCodes = res.stream().map(Object::toString).distinct().collect(Collectors.toList()); + } + return deviceCodes; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkerServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkerServiceImpl.java new file mode 100644 index 0000000..6859cff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkerServiceImpl.java @@ -0,0 +1,110 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.mapper.WorkerMapper; +import com.casic.missiles.modular.system.service.*; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.modular.system.consts.ProjectConst.WORKER_TYPE_TEMP; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class WorkerServiceImpl extends ServiceImpl implements IWorkerService { + + private final IProjectWorkerService projectWorkerService; + + private final IProjectDeviceService projectDeviceService; + private final AbstractDictService dictService; + private final AbstractDeptService deptService; + private final IDeviceExtService deviceExtService; + + @Override + @Transactional + public boolean addWorker(Worker worker, Long projectId) { + worker.setCreateTime(new Date()); + boolean res = this.save(worker); + if(res && ObjectUtil.isNotEmpty(projectId)){ + res = projectWorkerService.save(new ProjectWorker(projectId, worker.getId())); + if(ObjectUtil.isNotEmpty(worker.getWorkerAvatar())){ + // todo 向一体机推送人脸图片 + } + } + return res; + } + + @Override + public Page selectListPage(Page page, QueryWrapper ew) { + page = this.baseMapper.selectListPage(page, ew); + for (Worker worker : page.getRecords()) { + wrapperWorker(worker); + } + return page; + } + + private void wrapperWorker(Worker worker) { + if(StrUtil.isNotEmpty(worker.getGender())){ + worker.setGenderName(dictService.getDictNameByCode("sysSex", worker.getGender())); + } + if(ObjectUtil.isNotEmpty(worker.getDeptId())){ + worker.setDeptName(deptService.getDeptName(worker.getDeptId())); + } + worker.setRegisterTime(DateUtil.formatDate(worker.getCreateTime())); + if(StrUtil.isNotEmpty(worker.getStatus())){ + worker.setStatusName(dictService.getDictNameByCode("workerStatus", worker.getStatus())); + } + } + + @Override + public Worker selectWorkerDetail(Long workerId) { + Worker worker = this.getById(workerId); + if(ObjectUtil.isNotEmpty(worker)){ + wrapperWorker(worker); + } + return worker; + } + + @Override + public List faceRegister(String cameraIp, String cameraPort) { + Long deviceId = deviceExtService.selectByCameraIpPort(cameraIp, cameraPort); + if(ObjectUtil.isNotEmpty(deviceId)){ + Long projectId = projectDeviceService.selectProjectIdByDevice(deviceId); + if(ObjectUtil.isNotEmpty(projectId)){ + return this.baseMapper.selectWorkerAvatars(projectId); + } + } + return null; + } + + @Override + public List projectTempWorker(Long projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("WORKER_TYPE",WORKER_TYPE_TEMP); + queryWrapper.exists("(select ID FROM br_project_worker WHERE PROJECT_ID = "+ projectId +")"); + List workers = this.list(queryWrapper); + workers.forEach(this::wrapperWorker); + return workers; + } +} diff --git a/casic_video_283_web/pom.xml b/casic_video_283_web/pom.xml new file mode 100644 index 0000000..feace49 --- /dev/null +++ b/casic_video_283_web/pom.xml @@ -0,0 +1,166 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + casic_video_283_web + 1.0.0 + jar + casic_video_283_web + casic web启动入口 + + + + dev + + true + + + dev + + + + test + + test + + + + prod + + prod + + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-actuator + + + io.micrometer + micrometer-core + + + + + org.springframework.boot + spring-boot-starter-jdbc + + + + com.casic + casic-core + ${core.version} + + + com.casic + casic-admin-core + ${admin.version} + + + io.springfox + springfox-swagger-ui + + + + + com.casic + casic-admin-support + ${admin.version} + + + mysql + mysql-connector-java + ${mysql.driver.version} + + + com.casic + casic-area-starter + ${admin.version} + + + + com.casic + casic_video_283_server + ${pro.version} + + + + org.springframework.boot + spring-boot-starter-tomcat + + + + + casic_video_283_web-${pro.version} + + + org.apache.maven.plugins + maven-jar-plugin + ${maven.jar.plugin.version} + + + + /config/*-*.yml + **/MockController.class + + + + com.casic.missiles.CasicApplication + true + ./ + + + + + + org.apache.maven.plugins + maven-assembly-plugin + ${maven.assembly.plugin.version} + + + make-assembly + package + + single + + + + + + org.apache.maven.plugins + maven-war-plugin + ${maven.war.plugin.version} + + + + + src/main/resources + + + /config/*/* + /config/*-*.yml + + true + + + src/main/java + + **/*.xml + + true + + + + \ No newline at end of file diff --git a/casic_video_283_web/src/main/build/bin/start.bat b/casic_video_283_web/src/main/build/bin/start.bat new file mode 100644 index 0000000..1db4e88 --- /dev/null +++ b/casic_video_283_web/src/main/build/bin/start.bat @@ -0,0 +1,4 @@ +@echo off +title ${project.build.finalName} +java -jar ./lib/${project.build.finalName}.jar +@pause diff --git a/casic_video_283_web/src/main/build/bin/start.sh b/casic_video_283_web/src/main/build/bin/start.sh new file mode 100644 index 0000000..1cc33fc --- /dev/null +++ b/casic_video_283_web/src/main/build/bin/start.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +jar_name="${project.build.finalName}.jar" +echo "starting $jar_name ..." + +PID=$(ps -ef | grep ${jar_name} | grep -v grep | awk '{print $2}') + +OLD_IFS="$IFS" +IFS="," +PIDARR=($PID) +IFS="$OLD_IFS" + +if [ ! $PID ]; then + echo "process ${jar_name} not exit" +else + echo "process id: $PID" + + kill -9 ${PID} + + if [ $? -eq 0 ]; then + echo "kill ${jar_name} success" + else + echo "kill ${jar_name} fail" + exit + fi +fi + + + +nohup java -jar ./lib/${jar_name} >/dev/null 2>log & +echo "start ${jar_name} ..." \ No newline at end of file diff --git a/casic_video_283_web/src/main/build/package.xml b/casic_video_283_web/src/main/build/package.xml new file mode 100644 index 0000000..c9259ad --- /dev/null +++ b/casic_video_283_web/src/main/build/package.xml @@ -0,0 +1,43 @@ + + + package + + zip + tar.gz + + true + + + + true + true + lib + runtime + + + + + src/main/build/bin + + start.bat + start.sh + + true + 0744 + / + + + src/main/resources/config + true + + *.yml + /*/* + + /config + + + src/main/resources/i18n + / + + + \ No newline at end of file diff --git a/casic_video_283_web/src/main/java/com/casic/missiles/CasicApplication.java b/casic_video_283_web/src/main/java/com/casic/missiles/CasicApplication.java new file mode 100644 index 0000000..7b8791f --- /dev/null +++ b/casic_video_283_web/src/main/java/com/casic/missiles/CasicApplication.java @@ -0,0 +1,35 @@ +package com.casic.missiles; + +import lombok.extern.slf4j.Slf4j; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.web.servlet.ServletComponentScan; +import org.springframework.cache.annotation.EnableCaching; +import org.springframework.scheduling.annotation.EnableAsync; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +/** + * SpringBoot方式启动类 + * + * @author lwh + * @Date 2021/06/06 12:06 + */ +@SpringBootApplication +@EnableCaching +@EnableTransactionManagement(proxyTargetClass = true) +@EnableAsync +@Slf4j +@MapperScan(value = "com.casic.missiles.modular.system.mapper") +public class CasicApplication { + + static { + System.setProperty("druid.mysql.usePingMethod","false"); + } + + public static void main(String[] args) { + SpringApplication.run(CasicApplication.class, args); + log.info("CasicApplication is success!"); + } + +} diff --git a/casic_video_283_web/src/main/java/com/casic/missiles/CasicServletInitializer.java b/casic_video_283_web/src/main/java/com/casic/missiles/CasicServletInitializer.java new file mode 100644 index 0000000..e30585b --- /dev/null +++ b/casic_video_283_web/src/main/java/com/casic/missiles/CasicServletInitializer.java @@ -0,0 +1,18 @@ +package com.casic.missiles; + +import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; + +/** + * Guns Web程序启动类 + * + * @author fengshuonan + * @date 2017-05-21 9:43 + */ +public class CasicServletInitializer extends SpringBootServletInitializer { + + @Override + protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { + return application.sources(CasicApplication.class); + } +} diff --git a/casic_video_283_web/src/main/java/com/casic/missiles/config/SwaggerConfig.java b/casic_video_283_web/src/main/java/com/casic/missiles/config/SwaggerConfig.java new file mode 100644 index 0000000..fd233d8 --- /dev/null +++ b/casic_video_283_web/src/main/java/com/casic/missiles/config/SwaggerConfig.java @@ -0,0 +1,40 @@ +package com.casic.missiles.config; + + +import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j; +import io.swagger.annotations.ApiOperation; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import springfox.documentation.builders.ApiInfoBuilder; +import springfox.documentation.builders.PathSelectors; +import springfox.documentation.builders.RequestHandlerSelectors; +import springfox.documentation.service.ApiInfo; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spring.web.plugins.Docket; +import springfox.documentation.swagger2.annotations.EnableSwagger2; + +@Configuration //声明该类为配置类 +@EnableSwagger2 //声明启动Swagger2 +@EnableKnife4j +public class SwaggerConfig{ + private ApiInfo apiInfo() { + return new ApiInfoBuilder() + .title("北燃四分二期接口文档")//文档说明 + .version("1.0.0")//文档版本说明 + .build(); + } + + @Bean + public Docket productApi() { + return new Docket(DocumentationType.SWAGGER_2) + .apiInfo(apiInfo()) + .select() + .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) //添加ApiOperiation注解的被扫描 + .paths(PathSelectors.any()) + .build(); + + } + + +} + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java new file mode 100644 index 0000000..73d7799 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.dto; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "AlarmUpload",description = "报警上传") +@Data +public class AlarmUpload { + + @ApiModelProperty(value = "摄像头ip") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + @ApiModelProperty(value = "安全树甲烷设备ip") + private String gasIp; + @ApiModelProperty(value = "安全树甲烷设备端口") + private String gasPort; + @ApiModelProperty(value = "报警值") + private String alarmValue; + @ApiModelProperty(value = "报警时间") + private String alarmTime; + @ApiModelProperty(value = "报警类型") + private String alarmType; + @ApiModelProperty(value = "报警图片") + private String alarmImage; + @ApiModelProperty(value = "报警内容") + private String alarmContent; + + @Override + public String toString() { + return "AlarmUpload{" + + "cameraIp='" + cameraIp + '\'' + + ", cameraPort='" + cameraPort + '\'' + + ", gasIp='" + gasIp + '\'' + + ", gasPort='" + gasPort + '\'' + + ", alarmValue='" + alarmValue + '\'' + + ", alarmTime='" + alarmTime + '\'' + + ", alarmType='" + alarmType + '\'' + + ", alarmImage='" + (StrUtil.isNotEmpty(alarmImage) ? alarmImage.substring(0,50) : "null") + '\'' + + ", alarmContent='" + alarmContent + '\'' + + '}'; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java new file mode 100644 index 0000000..ea518d9 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.modular.system.entity.Device; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("DeviceDetailDTO") +@Data +public class DeviceDetailDTO extends Device { + + @ApiModelProperty(value = "摄像头编号") + private String cameraCode; + + @ApiModelProperty(value = "摄像头IP") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + + @ApiModelProperty(value = "激甲编号") + private String gasCode; + + @ApiModelProperty(value = "激甲IP") + private String gasIp; + + @ApiModelProperty(value = "激甲端口") + private String gasPort; + + @ApiModelProperty(value = "智能帽衬编号") + private String hatLiningCode; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java new file mode 100644 index 0000000..29378ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("WorkSiteDetailDTO") +public class WorkSiteDetailDTO extends WorkSiteInfo { + + @ApiModelProperty(value = "安全树列表",dataType = "ProjectDevice") + private List deviceList; + + @ApiModelProperty(value = "人员列表",dataType = "ProjectWorker") + private List workerList; + + + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java new file mode 100644 index 0000000..6fd7b24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java @@ -0,0 +1,68 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "WorkerLocationDTO",description = "人员位置列表(首页)") +@Data +public class WorkerLocationDTO { + + @ApiModelProperty("人员ID") + private Long workerId; + + @ApiModelProperty("人员姓名") + private String workerName; + + @ApiModelProperty("安全帽编号") + private String hatCode; + + @ApiModelProperty("安全帽ID") + private Long hatId; + + @ApiModelProperty("背心编号") + private String vastCode; + + @ApiModelProperty("手环编号") + private String braceletCode; + + @ApiModelProperty("位置") + private String location; + + @ApiModelProperty("时间") + private String time; + + @ApiModelProperty("经度") + private String lng; + + @ApiModelProperty("纬度") + private String lat; + + @ApiModelProperty("心率") + private String heartRate; + + @ApiModelProperty("血氧") + private String bloodOxygen; + + @ApiModelProperty("一氧化碳") + private String co; + + @ApiModelProperty("甲烷") + private String gas; + + @ApiModelProperty("硫化氢") + private String h2s; + + @ApiModelProperty("氧气") + private String o2; + + @ApiModelProperty("信号") + private String signal; + + @ApiModelProperty("电量") + private String cell; + + @ApiModelProperty("是否报警") + private boolean alarmFlag; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java new file mode 100644 index 0000000..efb4a23 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java @@ -0,0 +1,159 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 报警记录表 + *

+ * + * @author zyj + * @since 2023-05-16 + */ +@Data +@ApiModel("Alarm") +@TableName("br_bus_alarm") +public class BusAlarm implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @ApiModelProperty(value = "设备ID") + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 报警类型 + */ + @ApiModelProperty(value = "报警类型") + @TableField("ALARM_TYPE") + private String alarmType; + + /** + * 报警状态 + */ + @ApiModelProperty(value = "报警状态") + @TableField("ALARM_STATUS") + private String alarmStatus; + + /** + * 报警值 + */ + @ApiModelProperty(value = "报警值") + @TableField("ALARM_VALUE") + private String alarmValue; + + /** + * 报警图片 + */ + @ApiModelProperty(value = "报警图片") + @TableField("ALARM_IMAGE") + private String alarmImage; + + /** + * 报警内容 + */ + @ApiModelProperty(value = "报警内容") + @TableField("ALARM_CONTENT") + private String alarmContent; + + /** + * 报警时间 + */ + @ApiModelProperty(value = "报警时间") + @TableField("ALARM_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date alarmTime; + + /** + * 消警时间 + */ + @ApiModelProperty(value = "消警时间") + @TableField("CANCEL_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + /** + * 报警位置经度 + */ + @ApiModelProperty(value = "报警位置经度") + @TableField("ALARM_LNG") + private String alarmLng; + + /** + * 报警位置纬度 + */ + @ApiModelProperty(value = "报警位置纬度") + @TableField("ALARM_LAT") + private String alarmLat; + + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmStatusName; + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmTypeName; + @ApiModelProperty("作业名称") + @TableField(exist = false) + private String workTitle; + @ApiModelProperty("所属道路") + @TableField(exist = false) + private String workRoad; + @ApiModelProperty("作业状态") + @TableField(exist = false) + private String projectState; + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + @ApiModelProperty("负责人姓名") + @TableField(exist = false) + private String workPersonName; + @ApiModelProperty("负责人联系方式") + @TableField(exist = false) + private String workPersonPhoneNumber; + + + @Override + public String toString() { + return "BusAlarm{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + ", alarmType=" + alarmType + + ", alarmValue=" + alarmValue + + ", alarmStatus=" + alarmStatus + + ", alarmImage=" + alarmImage + + ", alarmContent=" + alarmContent + + ", alarmTime=" + alarmTime + + ", cancelTime=" + cancelTime + + ", alarmLng=" + alarmLng + + ", alarmLat=" + alarmLat + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java new file mode 100644 index 0000000..a0b7543 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + *

+ * 事件表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event") +@Data +@ApiModel("BusEvent") +public class BusEvent implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("事件ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件标题 + */ + @ApiModelProperty("事件名称") + @TableField("EVENT_TITLE") + private String eventTitle; + + /** + * 上报人员 + */ + @ApiModelProperty("上报人员") + @TableField("UPLOAD_NAME") + private String uploadName; + + /** + * 联系方式 + */ + @ApiModelProperty("联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 事件描述 + */ + @ApiModelProperty("事件描述") + @TableField("EVENT_DESCRIPTION") + private String eventDescription; + + @ApiModelProperty("经度") + @TableField("LNG") + private String lng; + + @ApiModelProperty("纬度") + @TableField("LAT") + private String lat; + + /** + * 事件上传时间 + */ + @ApiModelProperty("事件上传时间") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty("事件照片") + @TableField(exist = false) + private List imageList; + + + + @Override + public String toString() { + return "BusEvent{" + + "id=" + id + + ", eventTitle=" + eventTitle + + ", uploadName=" + uploadName + + ", phoneNumber=" + phoneNumber + + ", eventDescription=" + eventDescription + + ", lng=" + lng + + ", lat=" + lat + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java new file mode 100644 index 0000000..1e75245 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 事件图片表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event_image") +@Data +@ApiModel("BusEventImage") +public class BusEventImage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件ID + */ + @TableField("EVENT_ID") + private Long eventId; + + /** + * 报警图片 + */ + @TableField("IMAGE") + @ApiModelProperty("图片url") + private String image; + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java new file mode 100644 index 0000000..df89c70 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.core.base.json.DateDeserializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Device") +@TableName("br_device") +@Data +public class Device implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "设备ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty(value = "设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + /** + * 设备类型 + */ + @ApiModelProperty(value = "设备类型") + @TableField("DEVICE_TYPE") + private String deviceType; + + /** + * 设备批次 + */ + @ApiModelProperty(value = "设备批次") + @TableField("DEVICE_BATCH") + private String deviceBatch; + + /** + * 厂家 + */ + @ApiModelProperty(value = "厂家") + @TableField("MANUFACTURER") + private String manufacturer; + + /** + * 是否供电 + */ + @ApiModelProperty(value = "是否供电") + @TableField("IS_POWER_SUPPLY") + private String isPowerSupply; + + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间",dataType = "Date") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty(value = "设备类型名称") + @TableField(exist = false) + private String deviceTypeName; + + @ApiModelProperty(value = "是否供电名称") + @TableField(exist = false) + private String isPowerSupplyName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", deviceCode=" + deviceCode + + ", deviceType=" + deviceType + + ", deviceBatch=" + deviceBatch + + ", manufacturer=" + manufacturer + + ", isPowerSupply=" + isPowerSupply + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java new file mode 100644 index 0000000..5ee7015 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java @@ -0,0 +1,99 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 设备扩展信息表(安全树) + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Data +@TableName("br_device_ext") +public class DeviceExt implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 摄像头编号 + */ + @TableField("CAMERA_CODE") + private String cameraCode; + + /** + * 摄像头IP + */ + @TableField("CAMERA_IP") + private String cameraIp; + + /** + * 摄像头端口 + */ + @TableField("CAMERA_PORT") + private String cameraPort; + + /** + * 激甲编号 + */ + @TableField("GAS_CODE") + private String gasCode; + + /** + * 激甲IP + */ + @TableField("GAS_IP") + private String gasIp; + + /** + * 激甲端口 + */ + @TableField("GAS_PORT") + private String gasPort; + + /** + * 甲烷报警阈值 + */ + @TableField("GAS_THRESHOLD") + private String gasThreshold; + + @TableField(value = "HAT_LINING_CODE") + private String hatLiningCode; + + + @Override + public String toString() { + return "DeviceExt{" + + "id=" + id + + ", deviceId=" + deviceId + + ", cameraCode=" + cameraCode + + ", cameraIp=" + cameraIp + + ", cameraPort=" + cameraPort + + ", gasCode=" + gasCode + + ", gasIp=" + gasIp + + ", gasPort=" + gasPort + + ", gasThreshold=" + gasThreshold + + ", hatLiningCode=" + hatLiningCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java new file mode 100644 index 0000000..c4f3472 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java @@ -0,0 +1,62 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Data +@ApiModel("ProjectDevice") +@TableName("br_project_device") +public class ProjectDevice implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + @ApiModelProperty("设备ID(新增编辑时传)") + private Long deviceId; + + /** + * 设备编号 + */ + @TableField(exist = false) + @ApiModelProperty("设备编号(详情中展示,新增编辑不用传)") + private String deviceCode; + + @Override + public String toString() { + return "ProjectDevice{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java new file mode 100644 index 0000000..10b23c4 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java @@ -0,0 +1,104 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("ProjectWorker") +@TableName("br_project_worker") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ProjectWorker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 人员ID + */ + @ApiModelProperty("人员ID") + @TableField("WORKER_ID") + private Long workerId; + + /** + * 安全帽编号 + */ + @ApiModelProperty("安全帽编号") + @TableField("HAT_CODE") + private String hatCode; + + /** + * 背心编号 + */ + @ApiModelProperty("背心编号") + @TableField("VAST_CODE") + private String vastCode; + + /** + * 手环编号 + */ + @ApiModelProperty("手环编号") + @TableField("BRACELET_CODE") + private String braceletCode; + + @ApiModelProperty("人员姓名(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerName; + + @ApiModelProperty("人员部门ID(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptId; + + @ApiModelProperty("人员部门名称(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptName; + + @ApiModelProperty("人员联系方式(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerPhoneNumber; + + public ProjectWorker(Long projectId, Long workerId) { + this.projectId = projectId; + this.workerId = workerId; + } + + @Override + public String toString() { + return "ProjectWorker{" + + "id=" + id + + ", projectId=" + projectId + + ", workerId=" + workerId + + ", hatCode=" + hatCode + + ", vastCode=" + vastCode + + ", braceletCode=" + braceletCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java new file mode 100644 index 0000000..fa6f41d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 作业现场表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("WorkSiteInfo") +@TableName("br_work_site_info") +@Data +public class WorkSiteInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("作业现场ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业名称 + */ + @ApiModelProperty("作业名称") + @TableField("WORK_TITLE") + private String workTitle; + + /** + * 责任人 + */ + @ApiModelProperty("责任人(人员ID)") + @TableField("WORK_PERSON") + private Long workPerson; + + /** + * 作业描述 + */ + @ApiModelProperty("作业描述") + @TableField("WORK_SITE_DESC") + private String workSiteDesc; + + /** + * 作业状态 + */ + @ApiModelProperty("作业状态") + @TableField("PROJECT_STATE") + private String projectState; + + /** + * 所属道路 + */ + @ApiModelProperty("所属道路") + @TableField("WORK_ROAD") + private String workRoad; + + @TableField("IMAGE_URL") + private String imageUrl; + + @TableField("CREATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + @TableField("UPDATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("FINISH_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + @ApiModelProperty("负责人姓名(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonName; + + @ApiModelProperty("负责人联系方式(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonPhoneNumber; + + @ApiModelProperty("负责人所属部门ID(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private Long workPersonDeptId; + + @ApiModelProperty("负责人所属部门名称(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonDeptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + + @Override + public String toString() { + return "WorkSiteInfo{" + + "id=" + id + + ", workTitle=" + workTitle + + ", workPerson=" + workPerson + + ", workSiteDesc=" + workSiteDesc + + ", projectState=" + projectState + + ", imageUrl=" + imageUrl + + ", updateTime=" + updateTime + + ", workRoad=" + workRoad + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java new file mode 100644 index 0000000..28a4daa --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java @@ -0,0 +1,147 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Worker") +@TableName("br_worker") +@Data +public class Worker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "人员ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 姓名 + */ + @ApiModelProperty(value = "姓名") + @TableField("WORKER_NAME") + private String workerName; + + /** + * 性别 + */ + @ApiModelProperty(value = "性别") + @TableField("GENDER") + private String gender; + + /** + * 所属部门 + */ + @ApiModelProperty(value = "所属部门(人员管理)") + @TableField("DEPT_ID") + private Long deptId; + + /** + * 所属单位 + */ + @ApiModelProperty(value = "所属单位(入场申请中使用)") + @TableField("OWNER_SHIP") + private String ownerShip; + + /** + * 联系方式 + */ + @ApiModelProperty(value = "联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 证件号 + */ + @ApiModelProperty(value = "证件号") + @TableField("ID_CARD_NUMBER") + private String idCardNumber; + + /** + * 入场原因 + */ + @ApiModelProperty(value = "入场原因(入场申请中使用)") + @TableField("ENTER_REASON") + private String enterReason; + + /** + * 入场人脸照片 + */ + @ApiModelProperty(value = "人脸照片(照片路径)") + @TableField("WORKER_AVATAR") + private String workerAvatar; + + /** + * 申请入场时间 + */ + @ApiModelProperty(value = "注册时间/申请入场时间") + @TableField("CREATE_TIME") + private Date createTime; + + /** + * 人员类型 + */ + @ApiModelProperty(value = "人员类型(区分人员管理和入场申请)") + @TableField("WORKER_TYPE") + private String workerType; + + @ApiModelProperty(value = "性别名称") + @TableField(exist = false) + private String genderName; + + @ApiModelProperty(value = "部门名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @ApiModelProperty(value = "是否注册(0未注册;1已注册)",allowableValues = "0,1") + @TableField(exist = false) + private String isRegister; + + @Override + public String toString() { + return "Worker{" + + "id=" + id + + ", workerName=" + workerName + + ", gender=" + gender + + ", deptId=" + deptId + + ", ownerShip=" + ownerShip + + ", phoneNumber=" + phoneNumber + + ", idCardNumber=" + idCardNumber + + ", enterReason=" + enterReason + + ", workerAvatar=" + workerAvatar + + ", createTime=" + createTime + + ", workerType=" + workerType + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java new file mode 100644 index 0000000..9801742 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警记录表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusAlarmMapper extends BaseMapper { + + Page listPage(Page page,@Param("ew") QueryWrapper queryWrapper); + + void cancelAlarm(@Param("deviceId")Long deviceId,@Param("alarmType") String alarmType); + + List alarmCount(@Param("projectId")Long projectId, @Param("alarmStatus")String alarmStatus); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java new file mode 100644 index 0000000..9590b7d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件图片表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventImageMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java new file mode 100644 index 0000000..3c85edf --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java new file mode 100644 index 0000000..4ca9212 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 设备扩展信息表(安全树) Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface DeviceExtMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java new file mode 100644 index 0000000..444c0c5 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Mapper +public interface DeviceMapper extends BaseMapper { + + Page listDetailPage(Page page,@Param("ew") QueryWrapper ew); + + List selectProjectDevice(@Param("projectId") Long projectId); + + List selectHelmetList(@Param("deviceType")String deviceType); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java new file mode 100644 index 0000000..1d0c14e --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectDeviceMapper extends BaseMapper { + List selectDetailByProjectId(@Param("projectId") Long projectId); + + List selectDeviceLocationList(@Param("projectId") Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java new file mode 100644 index 0000000..58583d1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectWorkerMapper extends BaseMapper { + + List selectDetailByProjectId(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + + List selectWorkerLocationList(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java new file mode 100644 index 0000000..a4934d2 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +/** + *

+ * 作业现场表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkSiteInfoMapper extends BaseMapper { + + Page selectListPage(Page page,@Param("ew") QueryWrapper ew); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java new file mode 100644 index 0000000..258fb12 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkerMapper extends BaseMapper { + + + Page selectListPage(Page page, @Param("ew") QueryWrapper ew); + + List selectWorkerAvatars(@Param("projectId")Long projectId); + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml new file mode 100644 index 0000000..595088a --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml @@ -0,0 +1,58 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml new file mode 100644 index 0000000..fbc3db3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml new file mode 100644 index 0000000..627d573 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml new file mode 100644 index 0000000..5321d1c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml new file mode 100644 index 0000000..94262e1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml @@ -0,0 +1,97 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml new file mode 100644 index 0000000..c6d1c24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml @@ -0,0 +1,29 @@ + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml new file mode 100644 index 0000000..8d2de10 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml new file mode 100644 index 0000000..8f01326 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml @@ -0,0 +1,26 @@ + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml new file mode 100644 index 0000000..3e28b39 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml @@ -0,0 +1,56 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java new file mode 100644 index 0000000..f63c19c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 报警记录表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusAlarmService extends IService { + + boolean alarmUpload(AlarmUpload alarmUpload); + + Page listPage(Page page,QueryWrapper queryWrapper); + + List alarmCount(Long projectId,String alarmStatus); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java new file mode 100644 index 0000000..b1187ed --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 事件图片表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusEventImageService extends IService { + + boolean saveBusEventImages(Long eventId, List imageList); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java new file mode 100644 index 0000000..85c48d0 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 事件表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusEventService extends IService { + + boolean saveBusEvent(BusEvent busEvent); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java new file mode 100644 index 0000000..6fc5361 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 设备扩展信息表(安全树) 服务类 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface IDeviceExtService extends IService { + + boolean saveDeviceExt(DeviceDetailDTO deviceDetailDTO); + + boolean updateDeviceExt(DeviceDetailDTO deviceDetailDTO); + + boolean removeByDeviceIds(List deviceIds); + + boolean setGasThreshold(String gasIp,String gasPort,String threshold); + + String getGasThreshold(String gasIp,String gasPort); + + Long selectByGasIpPort(String gasIp,String gasPort); + + Long selectByCameraIpPort(String cameraIp,String cameraPort); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java new file mode 100644 index 0000000..9e62756 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java @@ -0,0 +1,32 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IDeviceService extends IService { + + boolean saveDevice(DeviceDetailDTO deviceDetailDTO); + + boolean updateDevice(DeviceDetailDTO deviceDetailDTO); + + boolean deleteDevices(List deviceIds); + + Page listPage(Page page, QueryWrapper queryWrapper, String status,Long projectId); + + List selectProjectDevice(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java new file mode 100644 index 0000000..8599411 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IProjectDeviceService extends IService { + + boolean saveProjectDeviceList(Long projectId, List projectDeviceList); + + boolean updateProjectDeviceList(Long projectId, List projectDeviceList); + + boolean deleteByProjectId(Long projectId); + + boolean deleteByProjectIds(List projectIds); + + List selectDetailByProjectId(Long projectId); + + Long selectProjectIdByDevice(Long deviceId); + + List selectDeviceLocationList(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java new file mode 100644 index 0000000..e921bc3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IProjectWorkerService extends IService { + + boolean saveProjectWorkerList(Long projectId, List projectWorkerList); + + boolean updateProjectWorkerList(Long projectId, List projectWorkerList); + + boolean deleteByProjectId(Long projectId); + + boolean deleteByProjectIds(List projectIds); + + List selectDetailByProjectId(Long projectId,String workerType); + + List selectWorkerLocationDTO(Long projectId); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java new file mode 100644 index 0000000..58a8590 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; +/** + *

+ * 作业现场表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IWorkSiteInfoService extends IService { + + boolean addWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO); + + boolean updateWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO); + + boolean deleteProjects(List projectIds); + + WorkSiteDetailDTO getWorkSiteDetail(Long projectId); + + Page selectListPage(Page page, QueryWrapper queryWrapper); + + boolean start(Long projectId); + + boolean finish(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java new file mode 100644 index 0000000..6c6ee98 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.extension.service.IService; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IWorkerService extends IService { + + boolean addWorker(Worker worker,Long projectId); + + Page selectListPage(Page page,QueryWrapper ew); + + Worker selectWorkerDetail(Long workerId); + + List faceRegister(String cameraIp,String cameraPort); + + List projectTempWorker(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java new file mode 100644 index 0000000..b44de1d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.consts.AlarmTypeEnum; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.entity.DataTreeLocation; +import com.casic.missiles.modular.system.mapper.BusAlarmMapper; +import com.casic.missiles.modular.system.service.*; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +/** + *

+ * 报警记录表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +@Slf4j +public class BusAlarmServiceImpl extends ServiceImpl implements IBusAlarmService { + + private final IDeviceExtService deviceExtService; + private final IDeviceService deviceService; + private final IProjectDeviceService projectDeviceService; + + private final ICasicFileService fileService; + + private final AbstractDictService dictService; + private final IDataSupportService dataSupportService; + + @Override + @Transactional + public boolean alarmUpload(AlarmUpload alarmUpload) { + log.info("alarm upload ==> {}",alarmUpload.toString()); + Long deviceId = null; + if(StrUtil.isAllNotBlank(alarmUpload.getGasIp(),alarmUpload.getGasPort())){ + deviceId = deviceExtService.selectByGasIpPort(alarmUpload.getGasIp(),alarmUpload.getGasPort()); + } + if(ObjectUtil.isEmpty(deviceId) && StrUtil.isAllNotBlank(alarmUpload.getCameraIp(),alarmUpload.getCameraPort())){ + deviceId = deviceExtService.selectByCameraIpPort(alarmUpload.getCameraIp(),alarmUpload.getCameraPort()); + } + + if(ObjectUtil.isEmpty(deviceId)){ + return false; + } + + BusAlarm alarm = new BusAlarm(); + alarm.setDeviceId(deviceId); + alarm.setProjectId(projectDeviceService.selectProjectIdByDevice(deviceId)); + alarm.setAlarmValue(alarmUpload.getAlarmValue()); + if(StrUtil.isNotEmpty(alarmUpload.getAlarmTime())){ + alarm.setAlarmTime(DateUtil.parseDateTime(alarmUpload.getAlarmTime())); + }else { + alarm.setAlarmTime(new Date()); + } + + alarm.setAlarmType(alarmUpload.getAlarmType()); + alarm.setAlarmContent(alarmUpload.getAlarmContent()); + if(StrUtil.isNotEmpty(alarmUpload.getAlarmImage())){ + String imgBase64 = "data:image/jpeg;base64," + alarmUpload.getAlarmImage(); + String imageUrl = fileService.saveFile(imgBase64); + alarm.setAlarmImage(imageUrl); + } + alarm.setAlarmStatus(ALARM_STATUS_ON); + + DataTreeLocation treeLocation = dataSupportService.getTreeLocation(deviceId); + if(ObjectUtil.isNotEmpty(treeLocation)){ + alarm.setAlarmLng(treeLocation.getGdLng()); + alarm.setAlarmLat(treeLocation.getGdLat()); + } + + //自动消警 + AlarmTypeEnum alarmTypeEnum = AlarmTypeEnum.getByAlarmType(alarm.getAlarmType()); + if(ObjectUtil.isNotEmpty(alarmTypeEnum) && alarmTypeEnum.isAutoCancel()){ + this.baseMapper.cancelAlarm(deviceId,alarm.getAlarmType()); + } + return this.save(alarm); + } + + @Override + public Page listPage(Page page, QueryWrapper queryWrapper) { + page = this.baseMapper.listPage(page, queryWrapper); + for (BusAlarm alarm : page.getRecords()) { + alarm.setAlarmTypeName(dictService.getDictNameByCode("alarmType",alarm.getAlarmType())); + alarm.setAlarmStatusName(dictService.getDictNameByCode("alarmStatus",alarm.getAlarmStatus())); + if(StrUtil.isNotEmpty(alarm.getProjectState())){ + alarm.setProjectStateName(dictService.getDictNameByCode("projectStatus",alarm.getProjectState())); + } + } + return page; + } + + @Override + public List alarmCount(Long projectId, String alarmStatus) { + List list = this.baseMapper.alarmCount(projectId, alarmStatus); + list = list.stream().filter(i->StrUtil.isNotEmpty(i.getAlarmType())).collect(Collectors.toList()); + for (AlarmTypeCountDTO countDTO : list) { + countDTO.setAlarmTypeName(dictService.getDictNameByCode("alarmType",countDTO.getAlarmType())); + } + return list; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java new file mode 100644 index 0000000..a43f7c1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.casic.missiles.modular.system.mapper.BusEventImageMapper; +import com.casic.missiles.modular.system.service.IBusEventImageService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 事件图片表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +public class BusEventImageServiceImpl extends ServiceImpl implements IBusEventImageService { + + @Override + public boolean saveBusEventImages(Long eventId, List imageList) { + imageList.forEach(i->i.setEventId(eventId)); + return this.saveBatch(imageList); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java new file mode 100644 index 0000000..21e511c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java @@ -0,0 +1,39 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.mapper.BusEventMapper; +import com.casic.missiles.modular.system.service.IBusEventImageService; +import com.casic.missiles.modular.system.service.IBusEventService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; + +/** + *

+ * 事件表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class BusEventServiceImpl extends ServiceImpl implements IBusEventService { + + private final IBusEventImageService busEventImageService; + + + @Override + @Transactional + public boolean saveBusEvent(BusEvent busEvent) { + busEvent.setCreateTime(new Date()); + boolean res = this.save(busEvent); + if(res){ + res = busEventImageService.saveBusEventImages(busEvent.getId(),busEvent.getImageList()); + } + return res; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java new file mode 100644 index 0000000..2bdb63d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java @@ -0,0 +1,102 @@ +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.core.conditions.update.UpdateWrapper; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.casic.missiles.modular.system.mapper.DeviceExtMapper; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 设备扩展信息表(安全树) 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Service +public class DeviceExtServiceImpl extends ServiceImpl implements IDeviceExtService { + + + @Override + public boolean saveDeviceExt(DeviceDetailDTO deviceDetailDTO) { + DeviceExt ext = new DeviceExt(); + ext.setDeviceId(deviceDetailDTO.getId()); + ext.setCameraCode(deviceDetailDTO.getCameraCode()); + ext.setCameraIp(deviceDetailDTO.getCameraIp()); + ext.setCameraPort(deviceDetailDTO.getCameraPort()); + ext.setGasCode(deviceDetailDTO.getGasCode()); + ext.setGasIp(deviceDetailDTO.getGasIp()); + ext.setGasPort(deviceDetailDTO.getGasPort()); + ext.setHatLiningCode(deviceDetailDTO.getHatLiningCode()); + return this.save(ext); + } + + @Override + public boolean updateDeviceExt(DeviceDetailDTO deviceDetailDTO) { + DeviceExt ext = this.selectByDeviceId(deviceDetailDTO.getId()); + ext.setCameraCode(deviceDetailDTO.getCameraCode()); + ext.setCameraIp(deviceDetailDTO.getCameraIp()); + ext.setCameraPort(deviceDetailDTO.getCameraPort()); + ext.setGasCode(deviceDetailDTO.getGasCode()); + ext.setGasIp(deviceDetailDTO.getGasIp()); + ext.setGasPort(deviceDetailDTO.getGasPort()); + ext.setHatLiningCode(deviceDetailDTO.getHatLiningCode()); + return this.updateById(ext); + } + + @Override + public boolean removeByDeviceIds(List deviceIds) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("DEVICE_ID",deviceIds); + return this.remove(queryWrapper); + } + + @Override + public boolean setGasThreshold(String gasIp, String gasPort, String threshold) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.set("GAS_THRESHOLD",threshold); + updateWrapper.eq("GAS_IP",gasIp); + updateWrapper.eq("GAS_PORT",gasPort); + return this.update(updateWrapper); + } + + @Override + public String getGasThreshold(String gasIp, String gasPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("GAS_IP",gasIp); + queryWrapper.eq("GAS_PORT",gasPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getGasThreshold() : null; + } + + private DeviceExt selectByDeviceId(Long deviceId){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVICE_ID",deviceId); + return this.getOne(queryWrapper); + } + + @Override + public Long selectByGasIpPort(String gasIp, String gasPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("GAS_IP",gasIp); + queryWrapper.eq("GAS_PORT",gasPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getDeviceId() : null; + } + + @Override + public Long selectByCameraIpPort(String cameraIp, String cameraPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("CAMERA_IP",cameraIp); + queryWrapper.eq("CAMERA_PORT",cameraPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getDeviceId() : null; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java new file mode 100644 index 0000000..9df79ef --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.mapper.DeviceMapper; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.modular.system.consts.DeviceConst.*; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class DeviceServiceImpl extends ServiceImpl implements IDeviceService { + + private final AbstractDictService dictService; + private final IDeviceExtService deviceExtService; + + private final IProjectDeviceService projectDeviceService; + + @Transactional + @Override + public boolean saveDevice(DeviceDetailDTO deviceDetailDTO) { + deviceDetailDTO.setCreateTime(new Date()); + boolean deviceRes = this.save(deviceDetailDTO); + if(deviceRes && DEVICE_TYPE_TREE.equals(deviceDetailDTO.getDeviceType())){ + deviceRes = deviceExtService.saveDeviceExt(deviceDetailDTO); + } + return deviceRes; + } + + @Transactional + @Override + public boolean updateDevice(DeviceDetailDTO deviceDetailDTO) { + boolean deviceRes = this.updateById(deviceDetailDTO); + if(deviceRes && DEVICE_TYPE_TREE.equals(deviceDetailDTO.getDeviceType())){ + deviceRes = deviceExtService.updateDeviceExt(deviceDetailDTO); + } + return deviceRes; + } + + @Transactional + @Override + public boolean deleteDevices(List deviceIds) { + return this.removeByIds(deviceIds) & deviceExtService.removeByDeviceIds(deviceIds); + } + + @Override + public Page listPage(Page page, QueryWrapper queryWrapper,String status,Long projectId) { + String ID_COLUMN_NAME = "br_device.ID"; + List useDevices = this.selectProjectDevice(null); + List projectDevices; + if(ObjectUtil.isNotEmpty(projectId)){ + projectDevices = this.selectProjectDevice(projectId); + } else { + projectDevices = null; + } + + // 查询使用中的设备(如果传了 projectId,查询 使用中&&此现场) + if(DEVICE_STATUS_USE.equals(status)){ + if(CollUtil.isEmpty(useDevices)){ + return page; + } + if(ObjectUtil.isNotEmpty(projectId) && CollUtil.isEmpty(projectDevices)){ + return page; + } + queryWrapper.in(ID_COLUMN_NAME,useDevices); + if(CollUtil.isNotEmpty(projectDevices)){ + queryWrapper.in(ID_COLUMN_NAME,projectDevices); + } + + } + + // 查询未使用的设备(如果传了 projectId,查询 未使用||此现场) + if(DEVICE_STATUS_NORMAL.equals(status)) { + if (CollUtil.isNotEmpty(useDevices)) { + if (CollUtil.isEmpty(projectDevices)) { + queryWrapper.notIn(ID_COLUMN_NAME, useDevices); + } else { + queryWrapper.and(i -> i.notIn(ID_COLUMN_NAME, useDevices).or().in(ID_COLUMN_NAME, projectDevices)); + } + } + } + + page = this.baseMapper.listDetailPage(page, queryWrapper); + for (DeviceDetailDTO record : page.getRecords()) { + record.setDeviceTypeName(dictService.getDictNameByCode("deviceType",record.getDeviceType())); + record.setIsPowerSupplyName(dictService.getDictNameByCode("isPowerSupply",record.getIsPowerSupply())); + record.setRegisterTime(DateUtil.formatDate(record.getCreateTime())); + record.setStatus(useDevices.contains(record.getId()) ? DEVICE_STATUS_USE : DEVICE_STATUS_NORMAL); + record.setStatusName(dictService.getDictNameByCode("deviceStatus",record.getStatus())); + } + return page; + } + + @Override + public List selectProjectDevice(Long projectId) { + return this.baseMapper.selectProjectDevice(projectId); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceSupportServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceSupportServiceImpl.java new file mode 100644 index 0000000..ffd01ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceSupportServiceImpl.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.mapper.DeviceMapper; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceSupportService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; + +import static com.casic.missiles.modular.system.consts.DeviceConst.DEVICE_TYPE_HAT; + +@Service +@RequiredArgsConstructor +public class DeviceSupportServiceImpl implements IDeviceSupportService { + + private final IDeviceExtService deviceExtService; + + private final DeviceMapper deviceMapper; + + @Override + public Long selectByGasIpPort(String gasIp, String gasPort) { + return deviceExtService.selectByGasIpPort(gasIp, gasPort); + } + + @Override + public List selectHelmetList() { + return deviceMapper.selectHelmetList(DEVICE_TYPE_HAT); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectDeviceServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectDeviceServiceImpl.java new file mode 100644 index 0000000..965f55c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectDeviceServiceImpl.java @@ -0,0 +1,96 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.DataGas; +import com.casic.missiles.modular.system.entity.DataTreeLocation; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.mapper.ProjectDeviceMapper; +import com.casic.missiles.modular.system.service.IDataSupportService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.utils.LngLatUtil; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.stream.Collectors; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class ProjectDeviceServiceImpl extends ServiceImpl implements IProjectDeviceService { + + private final IDataSupportService dataSupportService; + + @Override + public boolean saveProjectDeviceList(Long projectId, List projectDeviceList) { + projectDeviceList.forEach(i->i.setProjectId(projectId)); + return this.saveBatch(projectDeviceList); + } + + @Transactional + @Override + public boolean updateProjectDeviceList(Long projectId, List projectDeviceList) { + return this.deleteByProjectId(projectId) && this.saveProjectDeviceList(projectId, projectDeviceList); + } + + @Override + public boolean deleteByProjectId(Long projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("PROJECT_ID",projectId); + return this.remove(queryWrapper); + } + + @Override + public boolean deleteByProjectIds(List projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("PROJECT_ID",projectId); + return this.remove(queryWrapper); + } + + @Override + public List selectDetailByProjectId(Long projectId) { + return this.baseMapper.selectDetailByProjectId(projectId); + } + + @Override + public Long selectProjectIdByDevice(Long deviceId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVICE_ID",deviceId); + queryWrapper.exists("(select Id FROM br_work_site_info p where p.ID = br_project_device.PROJECT_ID AND p.PROJECT_STATE != '3')"); + ProjectDevice projectDevice = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(projectDevice) ? projectDevice.getProjectId() : null; + } + + @Override + public List selectDeviceLocationList(Long projectId) { + List list = this.baseMapper.selectDeviceLocationList(projectId); + for (DeviceLocationDTO locationDTO : list) { + DataGas dataGas = dataSupportService.getGasData(locationDTO.getDeviceId()); + DataTreeLocation location = dataSupportService.getTreeLocation(locationDTO.getDeviceId(),true); + if(ObjectUtil.isNotEmpty(dataGas)){ + locationDTO.setGasValue(dataGas.getGasValue()); + locationDTO.setTime(DateUtil.formatDateTime(dataGas.getTs())); + } + if(ObjectUtil.isNotEmpty(location)){ + locationDTO.setLng(location.getGdLng()); + locationDTO.setLat(location.getGdLat()); + locationDTO.setLocation(location.getLocation()); + } + } + list = list.stream().filter(i-> StrUtil.isAllNotEmpty(i.getLng(),i.getLat())).collect(Collectors.toList()); + return LngLatUtil.sort(list); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectWorkerServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectWorkerServiceImpl.java new file mode 100644 index 0000000..c3ec86c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectWorkerServiceImpl.java @@ -0,0 +1,101 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.DataHelmetHealth; +import com.casic.missiles.modular.system.entity.DataHelmetLocation; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.mapper.ProjectWorkerMapper; +import com.casic.missiles.modular.system.service.IHelmetSupportService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.system.consts.ProjectConst.WORKER_TYPE_NORMAL; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class ProjectWorkerServiceImpl extends ServiceImpl implements IProjectWorkerService { + + private final AbstractDeptService deptService; + private final IHelmetSupportService helmetSupportService; + + @Override + public boolean saveProjectWorkerList(Long projectId, List projectWorkerList) { + projectWorkerList.forEach(i->i.setProjectId(projectId)); + return this.saveBatch(projectWorkerList); + } + + @Transactional + @Override + public boolean updateProjectWorkerList(Long projectId, List projectWorkerList) { + return this.deleteByProjectId(projectId) && this.saveProjectWorkerList(projectId, projectWorkerList) ; + } + + @Override + public boolean deleteByProjectId(Long projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("PROJECT_ID",projectId); + return this.remove(queryWrapper); + } + + @Override + public boolean deleteByProjectIds(List projectIds) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("PROJECT_ID",projectIds); + return this.remove(queryWrapper); + } + + + @Override + public List selectDetailByProjectId(Long projectId,String workerType) { + List projectWorkerList = this.baseMapper.selectDetailByProjectId(projectId,workerType); + for (ProjectWorker projectWorker : projectWorkerList) { + if(ObjectUtil.isNotEmpty(projectWorker.getWorkerDeptId())){ + projectWorker.setWorkerDeptName(deptService.getDeptName(projectWorker.getWorkerDeptId())); + } + } + return projectWorkerList; + } + + @Override + public List selectWorkerLocationDTO(Long projectId) { + List projectWorkerList = this.baseMapper.selectWorkerLocationList(projectId,WORKER_TYPE_NORMAL); + for (WorkerLocationDTO workerLocationDTO : projectWorkerList) { + if(ObjectUtil.isNotEmpty(workerLocationDTO.getHatId())){ + DataHelmetLocation location = helmetSupportService.getHelmetLocation(workerLocationDTO.getHatId(),true); + if(ObjectUtil.isNotEmpty(location)){ + workerLocationDTO.setLng(location.getGdLng()); + workerLocationDTO.setLat(location.getGdLat()); + workerLocationDTO.setLocation(location.getLocation()); + } + + DataHelmetHealth health = helmetSupportService.getHelmetHealth(workerLocationDTO.getHatId()); + if(ObjectUtil.isNotEmpty(health)){ + workerLocationDTO.setBloodOxygen(health.getBloodOxygen()); + workerLocationDTO.setHeartRate(health.getHeartRate()); + workerLocationDTO.setTime(DateUtil.formatDateTime(health.getTs())); + } + } + } + projectWorkerList = projectWorkerList.stream().filter(i-> StrUtil.isAllNotEmpty(i.getLng(),i.getLat())).collect(Collectors.toList()); + return projectWorkerList; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkSiteInfoServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkSiteInfoServiceImpl.java new file mode 100644 index 0000000..5068da2 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkSiteInfoServiceImpl.java @@ -0,0 +1,151 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.mapper.WorkSiteInfoMapper; +import com.casic.missiles.modular.system.service.*; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.system.consts.ProjectConst.*; + +/** + *

+ * 作业现场表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class WorkSiteInfoServiceImpl extends ServiceImpl implements IWorkSiteInfoService { + + private final IProjectWorkerService projectWorkerService; + private final IProjectDeviceService projectDeviceService; + + private final IWorkerService workerService; + private final IBraceletService braceletService; + + private final AbstractDeptService deptService; + private final AbstractDictService dictService; + @Override + @Transactional + public boolean addWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO) { + workSiteDetailDTO.setCreateTime(new Date()); + workSiteDetailDTO.setUpdateTime(new Date()); + workSiteDetailDTO.setProjectState(PROJECT_STATE_PREPARE); + boolean res = this.save(workSiteDetailDTO); + if(res){ + res = projectDeviceService.saveProjectDeviceList(workSiteDetailDTO.getId(), workSiteDetailDTO.getDeviceList()); + res = res & projectWorkerService.saveProjectWorkerList(workSiteDetailDTO.getId(), workSiteDetailDTO.getWorkerList()); + } + return res; + } + + @Override + @Transactional + public boolean updateWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO) { + workSiteDetailDTO.setUpdateTime(new Date()); + boolean res = this.updateById(workSiteDetailDTO); + if(res){ + res = projectDeviceService.updateProjectDeviceList(workSiteDetailDTO.getId(), workSiteDetailDTO.getDeviceList()); + res = res & projectWorkerService.updateProjectWorkerList(workSiteDetailDTO.getId(), workSiteDetailDTO.getWorkerList()); + } + return res; + } + + @Override + public boolean deleteProjects(List projectIds) { + if(CollUtil.isNotEmpty(projectIds)) { + projectDeviceService.deleteByProjectIds(projectIds); + projectWorkerService.deleteByProjectIds(projectIds); + return this.removeByIds(projectIds); + } + return true; + } + + @Override + public WorkSiteDetailDTO getWorkSiteDetail(Long projectId) { + WorkSiteInfo workSiteInfo = this.getById(projectId); + WorkSiteDetailDTO workSiteDetailDTO = new WorkSiteDetailDTO(); + BeanUtil.copyProperties(workSiteInfo,workSiteDetailDTO,true); + workSiteDetailDTO.setDeviceList(projectDeviceService.selectDetailByProjectId(projectId)); + workSiteDetailDTO.setWorkerList(projectWorkerService.selectDetailByProjectId(projectId,WORKER_TYPE_NORMAL)); + + Worker responseWorker = workerService.selectWorkerDetail(workSiteDetailDTO.getWorkPerson()); + if(ObjectUtil.isNotEmpty(responseWorker)){ + workSiteDetailDTO.setWorkPersonName(responseWorker.getWorkerName()); + workSiteDetailDTO.setWorkPersonPhoneNumber(responseWorker.getPhoneNumber()); + workSiteDetailDTO.setWorkPersonDeptId(responseWorker.getDeptId()); + workSiteDetailDTO.setWorkPersonDeptName(responseWorker.getDeptName()); + } + return workSiteDetailDTO; + } + + @Override + public Page selectListPage(Page page, QueryWrapper queryWrapper) { + page = this.baseMapper.selectListPage(page, queryWrapper); + for (WorkSiteInfo workSiteInfo : page.getRecords()) { + workSiteInfo.setProjectStateName(dictService.getDictNameByCode("projectState", workSiteInfo.getProjectState())); + if(ObjectUtil.isNotEmpty(workSiteInfo.getWorkPersonDeptId())){ + workSiteInfo.setWorkPersonDeptName(deptService.getDeptName(workSiteInfo.getWorkPersonDeptId())); + } + workSiteInfo.setRegisterTime(DateUtil.formatDate(workSiteInfo.getCreateTime())); + } + return page; + } + + @Override + public boolean start(Long projectId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",projectId); + updateWrapper.set("PROJECT_STATE",PROJECT_STATE_WORKING); + updateWrapper.set("START_TIME",new Date()); + boolean res = this.update(updateWrapper); + //braceletService.enableBracelet(selectProjectBracelets(projectId)); + return res; + } + + @Override + public boolean finish(Long projectId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",projectId); + updateWrapper.set("PROJECT_STATE",PROJECT_STATE_FINISH); + updateWrapper.set("FINISH_TIME",new Date()); + boolean res = this.update(updateWrapper); + //braceletService.disableBracelet(selectProjectBracelets(projectId)); + return res; + } + + private List selectProjectBracelets(Long projectId){ + List deviceCodes = new ArrayList<>(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("PROJECT_ID",projectId); + queryWrapper.isNotNull("BRACELET_CODE"); + queryWrapper.select("BRACELET_CODE"); + List res = projectWorkerService.listObjs(queryWrapper); + if(CollUtil.isNotEmpty(res)){ + deviceCodes = res.stream().map(Object::toString).distinct().collect(Collectors.toList()); + } + return deviceCodes; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkerServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkerServiceImpl.java new file mode 100644 index 0000000..6859cff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkerServiceImpl.java @@ -0,0 +1,110 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.mapper.WorkerMapper; +import com.casic.missiles.modular.system.service.*; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.modular.system.consts.ProjectConst.WORKER_TYPE_TEMP; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class WorkerServiceImpl extends ServiceImpl implements IWorkerService { + + private final IProjectWorkerService projectWorkerService; + + private final IProjectDeviceService projectDeviceService; + private final AbstractDictService dictService; + private final AbstractDeptService deptService; + private final IDeviceExtService deviceExtService; + + @Override + @Transactional + public boolean addWorker(Worker worker, Long projectId) { + worker.setCreateTime(new Date()); + boolean res = this.save(worker); + if(res && ObjectUtil.isNotEmpty(projectId)){ + res = projectWorkerService.save(new ProjectWorker(projectId, worker.getId())); + if(ObjectUtil.isNotEmpty(worker.getWorkerAvatar())){ + // todo 向一体机推送人脸图片 + } + } + return res; + } + + @Override + public Page selectListPage(Page page, QueryWrapper ew) { + page = this.baseMapper.selectListPage(page, ew); + for (Worker worker : page.getRecords()) { + wrapperWorker(worker); + } + return page; + } + + private void wrapperWorker(Worker worker) { + if(StrUtil.isNotEmpty(worker.getGender())){ + worker.setGenderName(dictService.getDictNameByCode("sysSex", worker.getGender())); + } + if(ObjectUtil.isNotEmpty(worker.getDeptId())){ + worker.setDeptName(deptService.getDeptName(worker.getDeptId())); + } + worker.setRegisterTime(DateUtil.formatDate(worker.getCreateTime())); + if(StrUtil.isNotEmpty(worker.getStatus())){ + worker.setStatusName(dictService.getDictNameByCode("workerStatus", worker.getStatus())); + } + } + + @Override + public Worker selectWorkerDetail(Long workerId) { + Worker worker = this.getById(workerId); + if(ObjectUtil.isNotEmpty(worker)){ + wrapperWorker(worker); + } + return worker; + } + + @Override + public List faceRegister(String cameraIp, String cameraPort) { + Long deviceId = deviceExtService.selectByCameraIpPort(cameraIp, cameraPort); + if(ObjectUtil.isNotEmpty(deviceId)){ + Long projectId = projectDeviceService.selectProjectIdByDevice(deviceId); + if(ObjectUtil.isNotEmpty(projectId)){ + return this.baseMapper.selectWorkerAvatars(projectId); + } + } + return null; + } + + @Override + public List projectTempWorker(Long projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("WORKER_TYPE",WORKER_TYPE_TEMP); + queryWrapper.exists("(select ID FROM br_project_worker WHERE PROJECT_ID = "+ projectId +")"); + List workers = this.list(queryWrapper); + workers.forEach(this::wrapperWorker); + return workers; + } +} diff --git a/casic_video_283_web/pom.xml b/casic_video_283_web/pom.xml new file mode 100644 index 0000000..feace49 --- /dev/null +++ b/casic_video_283_web/pom.xml @@ -0,0 +1,166 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + casic_video_283_web + 1.0.0 + jar + casic_video_283_web + casic web启动入口 + + + + dev + + true + + + dev + + + + test + + test + + + + prod + + prod + + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-actuator + + + io.micrometer + micrometer-core + + + + + org.springframework.boot + spring-boot-starter-jdbc + + + + com.casic + casic-core + ${core.version} + + + com.casic + casic-admin-core + ${admin.version} + + + io.springfox + springfox-swagger-ui + + + + + com.casic + casic-admin-support + ${admin.version} + + + mysql + mysql-connector-java + ${mysql.driver.version} + + + com.casic + casic-area-starter + ${admin.version} + + + + com.casic + casic_video_283_server + ${pro.version} + + + + org.springframework.boot + spring-boot-starter-tomcat + + + + + casic_video_283_web-${pro.version} + + + org.apache.maven.plugins + maven-jar-plugin + ${maven.jar.plugin.version} + + + + /config/*-*.yml + **/MockController.class + + + + com.casic.missiles.CasicApplication + true + ./ + + + + + + org.apache.maven.plugins + maven-assembly-plugin + ${maven.assembly.plugin.version} + + + make-assembly + package + + single + + + + + + org.apache.maven.plugins + maven-war-plugin + ${maven.war.plugin.version} + + + + + src/main/resources + + + /config/*/* + /config/*-*.yml + + true + + + src/main/java + + **/*.xml + + true + + + + \ No newline at end of file diff --git a/casic_video_283_web/src/main/build/bin/start.bat b/casic_video_283_web/src/main/build/bin/start.bat new file mode 100644 index 0000000..1db4e88 --- /dev/null +++ b/casic_video_283_web/src/main/build/bin/start.bat @@ -0,0 +1,4 @@ +@echo off +title ${project.build.finalName} +java -jar ./lib/${project.build.finalName}.jar +@pause diff --git a/casic_video_283_web/src/main/build/bin/start.sh b/casic_video_283_web/src/main/build/bin/start.sh new file mode 100644 index 0000000..1cc33fc --- /dev/null +++ b/casic_video_283_web/src/main/build/bin/start.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +jar_name="${project.build.finalName}.jar" +echo "starting $jar_name ..." + +PID=$(ps -ef | grep ${jar_name} | grep -v grep | awk '{print $2}') + +OLD_IFS="$IFS" +IFS="," +PIDARR=($PID) +IFS="$OLD_IFS" + +if [ ! $PID ]; then + echo "process ${jar_name} not exit" +else + echo "process id: $PID" + + kill -9 ${PID} + + if [ $? -eq 0 ]; then + echo "kill ${jar_name} success" + else + echo "kill ${jar_name} fail" + exit + fi +fi + + + +nohup java -jar ./lib/${jar_name} >/dev/null 2>log & +echo "start ${jar_name} ..." \ No newline at end of file diff --git a/casic_video_283_web/src/main/build/package.xml b/casic_video_283_web/src/main/build/package.xml new file mode 100644 index 0000000..c9259ad --- /dev/null +++ b/casic_video_283_web/src/main/build/package.xml @@ -0,0 +1,43 @@ + + + package + + zip + tar.gz + + true + + + + true + true + lib + runtime + + + + + src/main/build/bin + + start.bat + start.sh + + true + 0744 + / + + + src/main/resources/config + true + + *.yml + /*/* + + /config + + + src/main/resources/i18n + / + + + \ No newline at end of file diff --git a/casic_video_283_web/src/main/java/com/casic/missiles/CasicApplication.java b/casic_video_283_web/src/main/java/com/casic/missiles/CasicApplication.java new file mode 100644 index 0000000..7b8791f --- /dev/null +++ b/casic_video_283_web/src/main/java/com/casic/missiles/CasicApplication.java @@ -0,0 +1,35 @@ +package com.casic.missiles; + +import lombok.extern.slf4j.Slf4j; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.web.servlet.ServletComponentScan; +import org.springframework.cache.annotation.EnableCaching; +import org.springframework.scheduling.annotation.EnableAsync; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +/** + * SpringBoot方式启动类 + * + * @author lwh + * @Date 2021/06/06 12:06 + */ +@SpringBootApplication +@EnableCaching +@EnableTransactionManagement(proxyTargetClass = true) +@EnableAsync +@Slf4j +@MapperScan(value = "com.casic.missiles.modular.system.mapper") +public class CasicApplication { + + static { + System.setProperty("druid.mysql.usePingMethod","false"); + } + + public static void main(String[] args) { + SpringApplication.run(CasicApplication.class, args); + log.info("CasicApplication is success!"); + } + +} diff --git a/casic_video_283_web/src/main/java/com/casic/missiles/CasicServletInitializer.java b/casic_video_283_web/src/main/java/com/casic/missiles/CasicServletInitializer.java new file mode 100644 index 0000000..e30585b --- /dev/null +++ b/casic_video_283_web/src/main/java/com/casic/missiles/CasicServletInitializer.java @@ -0,0 +1,18 @@ +package com.casic.missiles; + +import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; + +/** + * Guns Web程序启动类 + * + * @author fengshuonan + * @date 2017-05-21 9:43 + */ +public class CasicServletInitializer extends SpringBootServletInitializer { + + @Override + protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { + return application.sources(CasicApplication.class); + } +} diff --git a/casic_video_283_web/src/main/java/com/casic/missiles/config/SwaggerConfig.java b/casic_video_283_web/src/main/java/com/casic/missiles/config/SwaggerConfig.java new file mode 100644 index 0000000..fd233d8 --- /dev/null +++ b/casic_video_283_web/src/main/java/com/casic/missiles/config/SwaggerConfig.java @@ -0,0 +1,40 @@ +package com.casic.missiles.config; + + +import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j; +import io.swagger.annotations.ApiOperation; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import springfox.documentation.builders.ApiInfoBuilder; +import springfox.documentation.builders.PathSelectors; +import springfox.documentation.builders.RequestHandlerSelectors; +import springfox.documentation.service.ApiInfo; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spring.web.plugins.Docket; +import springfox.documentation.swagger2.annotations.EnableSwagger2; + +@Configuration //声明该类为配置类 +@EnableSwagger2 //声明启动Swagger2 +@EnableKnife4j +public class SwaggerConfig{ + private ApiInfo apiInfo() { + return new ApiInfoBuilder() + .title("北燃四分二期接口文档")//文档说明 + .version("1.0.0")//文档版本说明 + .build(); + } + + @Bean + public Docket productApi() { + return new Docket(DocumentationType.SWAGGER_2) + .apiInfo(apiInfo()) + .select() + .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) //添加ApiOperiation注解的被扫描 + .paths(PathSelectors.any()) + .build(); + + } + + +} + diff --git a/casic_video_283_web/src/main/java/com/casic/missiles/controller/MockController.java b/casic_video_283_web/src/main/java/com/casic/missiles/controller/MockController.java new file mode 100644 index 0000000..eae6c54 --- /dev/null +++ b/casic_video_283_web/src/main/java/com/casic/missiles/controller/MockController.java @@ -0,0 +1,82 @@ +package com.casic.missiles.controller; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.application.enums.LoginType; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.model.auth.CasicCustomToken; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.response.SuccessResponseData; +import com.casic.missiles.modular.domain.constants.PermissionConstants; +import com.casic.missiles.modular.interfaces.log.LogManager; +import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; +import com.casic.missiles.modular.system.dto.LoginSuccessDTO; +import lombok.extern.slf4j.Slf4j; +import org.apache.shiro.subject.Subject; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.security.NoSuchAlgorithmException; +import java.util.Map; + +import static com.casic.missiles.core.util.HttpContext.getIp; + + +/** + * 仅为mock登录使用 + * + * @author lenovo + */ +@Controller +@RequestMapping("/route") +@Slf4j +public class MockController extends BaseController { + + /** + * 获取mockToken + */ + @GetMapping("/mockToken") + @ResponseBody + public Object mockToken(String username, String password) { + super.getSession().setAttribute(PermissionConstants.IS_APP, false); + SuccessResponseData resultData = new SuccessResponseData(); + if (StrUtil.hasEmpty(username, password)) { + username = "admin"; + password = "111111"; + } + Subject currentUser = ShiroKit.getSubject(); + + try { + Map key = RSAUtils.genKeyPair(); + ShiroKit.getSession().setAttribute(PermissionConstants.PRIVATE_KEY, key.get(RSAUtils.RSAPrivateKey)); + + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } + + //token自定义 + CasicCustomToken token = new CasicCustomToken(username, password); + token.setType(LoginType.PASSWORD); + token.setRememberMe(false); + + try { + currentUser.login(token); + } catch (Exception e) { + e.printStackTrace(); + } + AuthUser shiroUser = ShiroKit.getUser(); + super.getSession().setAttribute("shiroUser", shiroUser); + super.getSession().setAttribute("username", shiroUser.getAccount()); + super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); + + LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), getIp())); + + ShiroKit.getSession().setAttribute("sessionFlag", true); + resultData.setData(new LoginSuccessDTO(ShiroKit.getSession().getId().toString(), null)); + resultData.setMessage("登录成功"); + return resultData; + } +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java new file mode 100644 index 0000000..73d7799 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.dto; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "AlarmUpload",description = "报警上传") +@Data +public class AlarmUpload { + + @ApiModelProperty(value = "摄像头ip") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + @ApiModelProperty(value = "安全树甲烷设备ip") + private String gasIp; + @ApiModelProperty(value = "安全树甲烷设备端口") + private String gasPort; + @ApiModelProperty(value = "报警值") + private String alarmValue; + @ApiModelProperty(value = "报警时间") + private String alarmTime; + @ApiModelProperty(value = "报警类型") + private String alarmType; + @ApiModelProperty(value = "报警图片") + private String alarmImage; + @ApiModelProperty(value = "报警内容") + private String alarmContent; + + @Override + public String toString() { + return "AlarmUpload{" + + "cameraIp='" + cameraIp + '\'' + + ", cameraPort='" + cameraPort + '\'' + + ", gasIp='" + gasIp + '\'' + + ", gasPort='" + gasPort + '\'' + + ", alarmValue='" + alarmValue + '\'' + + ", alarmTime='" + alarmTime + '\'' + + ", alarmType='" + alarmType + '\'' + + ", alarmImage='" + (StrUtil.isNotEmpty(alarmImage) ? alarmImage.substring(0,50) : "null") + '\'' + + ", alarmContent='" + alarmContent + '\'' + + '}'; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java new file mode 100644 index 0000000..ea518d9 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.modular.system.entity.Device; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("DeviceDetailDTO") +@Data +public class DeviceDetailDTO extends Device { + + @ApiModelProperty(value = "摄像头编号") + private String cameraCode; + + @ApiModelProperty(value = "摄像头IP") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + + @ApiModelProperty(value = "激甲编号") + private String gasCode; + + @ApiModelProperty(value = "激甲IP") + private String gasIp; + + @ApiModelProperty(value = "激甲端口") + private String gasPort; + + @ApiModelProperty(value = "智能帽衬编号") + private String hatLiningCode; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java new file mode 100644 index 0000000..29378ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("WorkSiteDetailDTO") +public class WorkSiteDetailDTO extends WorkSiteInfo { + + @ApiModelProperty(value = "安全树列表",dataType = "ProjectDevice") + private List deviceList; + + @ApiModelProperty(value = "人员列表",dataType = "ProjectWorker") + private List workerList; + + + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java new file mode 100644 index 0000000..6fd7b24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java @@ -0,0 +1,68 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "WorkerLocationDTO",description = "人员位置列表(首页)") +@Data +public class WorkerLocationDTO { + + @ApiModelProperty("人员ID") + private Long workerId; + + @ApiModelProperty("人员姓名") + private String workerName; + + @ApiModelProperty("安全帽编号") + private String hatCode; + + @ApiModelProperty("安全帽ID") + private Long hatId; + + @ApiModelProperty("背心编号") + private String vastCode; + + @ApiModelProperty("手环编号") + private String braceletCode; + + @ApiModelProperty("位置") + private String location; + + @ApiModelProperty("时间") + private String time; + + @ApiModelProperty("经度") + private String lng; + + @ApiModelProperty("纬度") + private String lat; + + @ApiModelProperty("心率") + private String heartRate; + + @ApiModelProperty("血氧") + private String bloodOxygen; + + @ApiModelProperty("一氧化碳") + private String co; + + @ApiModelProperty("甲烷") + private String gas; + + @ApiModelProperty("硫化氢") + private String h2s; + + @ApiModelProperty("氧气") + private String o2; + + @ApiModelProperty("信号") + private String signal; + + @ApiModelProperty("电量") + private String cell; + + @ApiModelProperty("是否报警") + private boolean alarmFlag; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java new file mode 100644 index 0000000..efb4a23 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java @@ -0,0 +1,159 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 报警记录表 + *

+ * + * @author zyj + * @since 2023-05-16 + */ +@Data +@ApiModel("Alarm") +@TableName("br_bus_alarm") +public class BusAlarm implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @ApiModelProperty(value = "设备ID") + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 报警类型 + */ + @ApiModelProperty(value = "报警类型") + @TableField("ALARM_TYPE") + private String alarmType; + + /** + * 报警状态 + */ + @ApiModelProperty(value = "报警状态") + @TableField("ALARM_STATUS") + private String alarmStatus; + + /** + * 报警值 + */ + @ApiModelProperty(value = "报警值") + @TableField("ALARM_VALUE") + private String alarmValue; + + /** + * 报警图片 + */ + @ApiModelProperty(value = "报警图片") + @TableField("ALARM_IMAGE") + private String alarmImage; + + /** + * 报警内容 + */ + @ApiModelProperty(value = "报警内容") + @TableField("ALARM_CONTENT") + private String alarmContent; + + /** + * 报警时间 + */ + @ApiModelProperty(value = "报警时间") + @TableField("ALARM_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date alarmTime; + + /** + * 消警时间 + */ + @ApiModelProperty(value = "消警时间") + @TableField("CANCEL_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + /** + * 报警位置经度 + */ + @ApiModelProperty(value = "报警位置经度") + @TableField("ALARM_LNG") + private String alarmLng; + + /** + * 报警位置纬度 + */ + @ApiModelProperty(value = "报警位置纬度") + @TableField("ALARM_LAT") + private String alarmLat; + + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmStatusName; + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmTypeName; + @ApiModelProperty("作业名称") + @TableField(exist = false) + private String workTitle; + @ApiModelProperty("所属道路") + @TableField(exist = false) + private String workRoad; + @ApiModelProperty("作业状态") + @TableField(exist = false) + private String projectState; + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + @ApiModelProperty("负责人姓名") + @TableField(exist = false) + private String workPersonName; + @ApiModelProperty("负责人联系方式") + @TableField(exist = false) + private String workPersonPhoneNumber; + + + @Override + public String toString() { + return "BusAlarm{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + ", alarmType=" + alarmType + + ", alarmValue=" + alarmValue + + ", alarmStatus=" + alarmStatus + + ", alarmImage=" + alarmImage + + ", alarmContent=" + alarmContent + + ", alarmTime=" + alarmTime + + ", cancelTime=" + cancelTime + + ", alarmLng=" + alarmLng + + ", alarmLat=" + alarmLat + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java new file mode 100644 index 0000000..a0b7543 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + *

+ * 事件表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event") +@Data +@ApiModel("BusEvent") +public class BusEvent implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("事件ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件标题 + */ + @ApiModelProperty("事件名称") + @TableField("EVENT_TITLE") + private String eventTitle; + + /** + * 上报人员 + */ + @ApiModelProperty("上报人员") + @TableField("UPLOAD_NAME") + private String uploadName; + + /** + * 联系方式 + */ + @ApiModelProperty("联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 事件描述 + */ + @ApiModelProperty("事件描述") + @TableField("EVENT_DESCRIPTION") + private String eventDescription; + + @ApiModelProperty("经度") + @TableField("LNG") + private String lng; + + @ApiModelProperty("纬度") + @TableField("LAT") + private String lat; + + /** + * 事件上传时间 + */ + @ApiModelProperty("事件上传时间") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty("事件照片") + @TableField(exist = false) + private List imageList; + + + + @Override + public String toString() { + return "BusEvent{" + + "id=" + id + + ", eventTitle=" + eventTitle + + ", uploadName=" + uploadName + + ", phoneNumber=" + phoneNumber + + ", eventDescription=" + eventDescription + + ", lng=" + lng + + ", lat=" + lat + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java new file mode 100644 index 0000000..1e75245 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 事件图片表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event_image") +@Data +@ApiModel("BusEventImage") +public class BusEventImage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件ID + */ + @TableField("EVENT_ID") + private Long eventId; + + /** + * 报警图片 + */ + @TableField("IMAGE") + @ApiModelProperty("图片url") + private String image; + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java new file mode 100644 index 0000000..df89c70 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.core.base.json.DateDeserializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Device") +@TableName("br_device") +@Data +public class Device implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "设备ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty(value = "设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + /** + * 设备类型 + */ + @ApiModelProperty(value = "设备类型") + @TableField("DEVICE_TYPE") + private String deviceType; + + /** + * 设备批次 + */ + @ApiModelProperty(value = "设备批次") + @TableField("DEVICE_BATCH") + private String deviceBatch; + + /** + * 厂家 + */ + @ApiModelProperty(value = "厂家") + @TableField("MANUFACTURER") + private String manufacturer; + + /** + * 是否供电 + */ + @ApiModelProperty(value = "是否供电") + @TableField("IS_POWER_SUPPLY") + private String isPowerSupply; + + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间",dataType = "Date") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty(value = "设备类型名称") + @TableField(exist = false) + private String deviceTypeName; + + @ApiModelProperty(value = "是否供电名称") + @TableField(exist = false) + private String isPowerSupplyName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", deviceCode=" + deviceCode + + ", deviceType=" + deviceType + + ", deviceBatch=" + deviceBatch + + ", manufacturer=" + manufacturer + + ", isPowerSupply=" + isPowerSupply + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java new file mode 100644 index 0000000..5ee7015 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java @@ -0,0 +1,99 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 设备扩展信息表(安全树) + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Data +@TableName("br_device_ext") +public class DeviceExt implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 摄像头编号 + */ + @TableField("CAMERA_CODE") + private String cameraCode; + + /** + * 摄像头IP + */ + @TableField("CAMERA_IP") + private String cameraIp; + + /** + * 摄像头端口 + */ + @TableField("CAMERA_PORT") + private String cameraPort; + + /** + * 激甲编号 + */ + @TableField("GAS_CODE") + private String gasCode; + + /** + * 激甲IP + */ + @TableField("GAS_IP") + private String gasIp; + + /** + * 激甲端口 + */ + @TableField("GAS_PORT") + private String gasPort; + + /** + * 甲烷报警阈值 + */ + @TableField("GAS_THRESHOLD") + private String gasThreshold; + + @TableField(value = "HAT_LINING_CODE") + private String hatLiningCode; + + + @Override + public String toString() { + return "DeviceExt{" + + "id=" + id + + ", deviceId=" + deviceId + + ", cameraCode=" + cameraCode + + ", cameraIp=" + cameraIp + + ", cameraPort=" + cameraPort + + ", gasCode=" + gasCode + + ", gasIp=" + gasIp + + ", gasPort=" + gasPort + + ", gasThreshold=" + gasThreshold + + ", hatLiningCode=" + hatLiningCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java new file mode 100644 index 0000000..c4f3472 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java @@ -0,0 +1,62 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Data +@ApiModel("ProjectDevice") +@TableName("br_project_device") +public class ProjectDevice implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + @ApiModelProperty("设备ID(新增编辑时传)") + private Long deviceId; + + /** + * 设备编号 + */ + @TableField(exist = false) + @ApiModelProperty("设备编号(详情中展示,新增编辑不用传)") + private String deviceCode; + + @Override + public String toString() { + return "ProjectDevice{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java new file mode 100644 index 0000000..10b23c4 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java @@ -0,0 +1,104 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("ProjectWorker") +@TableName("br_project_worker") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ProjectWorker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 人员ID + */ + @ApiModelProperty("人员ID") + @TableField("WORKER_ID") + private Long workerId; + + /** + * 安全帽编号 + */ + @ApiModelProperty("安全帽编号") + @TableField("HAT_CODE") + private String hatCode; + + /** + * 背心编号 + */ + @ApiModelProperty("背心编号") + @TableField("VAST_CODE") + private String vastCode; + + /** + * 手环编号 + */ + @ApiModelProperty("手环编号") + @TableField("BRACELET_CODE") + private String braceletCode; + + @ApiModelProperty("人员姓名(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerName; + + @ApiModelProperty("人员部门ID(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptId; + + @ApiModelProperty("人员部门名称(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptName; + + @ApiModelProperty("人员联系方式(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerPhoneNumber; + + public ProjectWorker(Long projectId, Long workerId) { + this.projectId = projectId; + this.workerId = workerId; + } + + @Override + public String toString() { + return "ProjectWorker{" + + "id=" + id + + ", projectId=" + projectId + + ", workerId=" + workerId + + ", hatCode=" + hatCode + + ", vastCode=" + vastCode + + ", braceletCode=" + braceletCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java new file mode 100644 index 0000000..fa6f41d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 作业现场表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("WorkSiteInfo") +@TableName("br_work_site_info") +@Data +public class WorkSiteInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("作业现场ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业名称 + */ + @ApiModelProperty("作业名称") + @TableField("WORK_TITLE") + private String workTitle; + + /** + * 责任人 + */ + @ApiModelProperty("责任人(人员ID)") + @TableField("WORK_PERSON") + private Long workPerson; + + /** + * 作业描述 + */ + @ApiModelProperty("作业描述") + @TableField("WORK_SITE_DESC") + private String workSiteDesc; + + /** + * 作业状态 + */ + @ApiModelProperty("作业状态") + @TableField("PROJECT_STATE") + private String projectState; + + /** + * 所属道路 + */ + @ApiModelProperty("所属道路") + @TableField("WORK_ROAD") + private String workRoad; + + @TableField("IMAGE_URL") + private String imageUrl; + + @TableField("CREATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + @TableField("UPDATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("FINISH_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + @ApiModelProperty("负责人姓名(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonName; + + @ApiModelProperty("负责人联系方式(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonPhoneNumber; + + @ApiModelProperty("负责人所属部门ID(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private Long workPersonDeptId; + + @ApiModelProperty("负责人所属部门名称(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonDeptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + + @Override + public String toString() { + return "WorkSiteInfo{" + + "id=" + id + + ", workTitle=" + workTitle + + ", workPerson=" + workPerson + + ", workSiteDesc=" + workSiteDesc + + ", projectState=" + projectState + + ", imageUrl=" + imageUrl + + ", updateTime=" + updateTime + + ", workRoad=" + workRoad + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java new file mode 100644 index 0000000..28a4daa --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java @@ -0,0 +1,147 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Worker") +@TableName("br_worker") +@Data +public class Worker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "人员ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 姓名 + */ + @ApiModelProperty(value = "姓名") + @TableField("WORKER_NAME") + private String workerName; + + /** + * 性别 + */ + @ApiModelProperty(value = "性别") + @TableField("GENDER") + private String gender; + + /** + * 所属部门 + */ + @ApiModelProperty(value = "所属部门(人员管理)") + @TableField("DEPT_ID") + private Long deptId; + + /** + * 所属单位 + */ + @ApiModelProperty(value = "所属单位(入场申请中使用)") + @TableField("OWNER_SHIP") + private String ownerShip; + + /** + * 联系方式 + */ + @ApiModelProperty(value = "联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 证件号 + */ + @ApiModelProperty(value = "证件号") + @TableField("ID_CARD_NUMBER") + private String idCardNumber; + + /** + * 入场原因 + */ + @ApiModelProperty(value = "入场原因(入场申请中使用)") + @TableField("ENTER_REASON") + private String enterReason; + + /** + * 入场人脸照片 + */ + @ApiModelProperty(value = "人脸照片(照片路径)") + @TableField("WORKER_AVATAR") + private String workerAvatar; + + /** + * 申请入场时间 + */ + @ApiModelProperty(value = "注册时间/申请入场时间") + @TableField("CREATE_TIME") + private Date createTime; + + /** + * 人员类型 + */ + @ApiModelProperty(value = "人员类型(区分人员管理和入场申请)") + @TableField("WORKER_TYPE") + private String workerType; + + @ApiModelProperty(value = "性别名称") + @TableField(exist = false) + private String genderName; + + @ApiModelProperty(value = "部门名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @ApiModelProperty(value = "是否注册(0未注册;1已注册)",allowableValues = "0,1") + @TableField(exist = false) + private String isRegister; + + @Override + public String toString() { + return "Worker{" + + "id=" + id + + ", workerName=" + workerName + + ", gender=" + gender + + ", deptId=" + deptId + + ", ownerShip=" + ownerShip + + ", phoneNumber=" + phoneNumber + + ", idCardNumber=" + idCardNumber + + ", enterReason=" + enterReason + + ", workerAvatar=" + workerAvatar + + ", createTime=" + createTime + + ", workerType=" + workerType + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java new file mode 100644 index 0000000..9801742 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警记录表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusAlarmMapper extends BaseMapper { + + Page listPage(Page page,@Param("ew") QueryWrapper queryWrapper); + + void cancelAlarm(@Param("deviceId")Long deviceId,@Param("alarmType") String alarmType); + + List alarmCount(@Param("projectId")Long projectId, @Param("alarmStatus")String alarmStatus); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java new file mode 100644 index 0000000..9590b7d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件图片表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventImageMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java new file mode 100644 index 0000000..3c85edf --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java new file mode 100644 index 0000000..4ca9212 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 设备扩展信息表(安全树) Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface DeviceExtMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java new file mode 100644 index 0000000..444c0c5 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Mapper +public interface DeviceMapper extends BaseMapper { + + Page listDetailPage(Page page,@Param("ew") QueryWrapper ew); + + List selectProjectDevice(@Param("projectId") Long projectId); + + List selectHelmetList(@Param("deviceType")String deviceType); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java new file mode 100644 index 0000000..1d0c14e --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectDeviceMapper extends BaseMapper { + List selectDetailByProjectId(@Param("projectId") Long projectId); + + List selectDeviceLocationList(@Param("projectId") Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java new file mode 100644 index 0000000..58583d1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectWorkerMapper extends BaseMapper { + + List selectDetailByProjectId(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + + List selectWorkerLocationList(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java new file mode 100644 index 0000000..a4934d2 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +/** + *

+ * 作业现场表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkSiteInfoMapper extends BaseMapper { + + Page selectListPage(Page page,@Param("ew") QueryWrapper ew); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java new file mode 100644 index 0000000..258fb12 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkerMapper extends BaseMapper { + + + Page selectListPage(Page page, @Param("ew") QueryWrapper ew); + + List selectWorkerAvatars(@Param("projectId")Long projectId); + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml new file mode 100644 index 0000000..595088a --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml @@ -0,0 +1,58 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml new file mode 100644 index 0000000..fbc3db3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml new file mode 100644 index 0000000..627d573 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml new file mode 100644 index 0000000..5321d1c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml new file mode 100644 index 0000000..94262e1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml @@ -0,0 +1,97 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml new file mode 100644 index 0000000..c6d1c24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml @@ -0,0 +1,29 @@ + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml new file mode 100644 index 0000000..8d2de10 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml new file mode 100644 index 0000000..8f01326 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml @@ -0,0 +1,26 @@ + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml new file mode 100644 index 0000000..3e28b39 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml @@ -0,0 +1,56 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java new file mode 100644 index 0000000..f63c19c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 报警记录表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusAlarmService extends IService { + + boolean alarmUpload(AlarmUpload alarmUpload); + + Page listPage(Page page,QueryWrapper queryWrapper); + + List alarmCount(Long projectId,String alarmStatus); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java new file mode 100644 index 0000000..b1187ed --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 事件图片表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusEventImageService extends IService { + + boolean saveBusEventImages(Long eventId, List imageList); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java new file mode 100644 index 0000000..85c48d0 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 事件表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusEventService extends IService { + + boolean saveBusEvent(BusEvent busEvent); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java new file mode 100644 index 0000000..6fc5361 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 设备扩展信息表(安全树) 服务类 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface IDeviceExtService extends IService { + + boolean saveDeviceExt(DeviceDetailDTO deviceDetailDTO); + + boolean updateDeviceExt(DeviceDetailDTO deviceDetailDTO); + + boolean removeByDeviceIds(List deviceIds); + + boolean setGasThreshold(String gasIp,String gasPort,String threshold); + + String getGasThreshold(String gasIp,String gasPort); + + Long selectByGasIpPort(String gasIp,String gasPort); + + Long selectByCameraIpPort(String cameraIp,String cameraPort); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java new file mode 100644 index 0000000..9e62756 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java @@ -0,0 +1,32 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IDeviceService extends IService { + + boolean saveDevice(DeviceDetailDTO deviceDetailDTO); + + boolean updateDevice(DeviceDetailDTO deviceDetailDTO); + + boolean deleteDevices(List deviceIds); + + Page listPage(Page page, QueryWrapper queryWrapper, String status,Long projectId); + + List selectProjectDevice(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java new file mode 100644 index 0000000..8599411 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IProjectDeviceService extends IService { + + boolean saveProjectDeviceList(Long projectId, List projectDeviceList); + + boolean updateProjectDeviceList(Long projectId, List projectDeviceList); + + boolean deleteByProjectId(Long projectId); + + boolean deleteByProjectIds(List projectIds); + + List selectDetailByProjectId(Long projectId); + + Long selectProjectIdByDevice(Long deviceId); + + List selectDeviceLocationList(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java new file mode 100644 index 0000000..e921bc3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IProjectWorkerService extends IService { + + boolean saveProjectWorkerList(Long projectId, List projectWorkerList); + + boolean updateProjectWorkerList(Long projectId, List projectWorkerList); + + boolean deleteByProjectId(Long projectId); + + boolean deleteByProjectIds(List projectIds); + + List selectDetailByProjectId(Long projectId,String workerType); + + List selectWorkerLocationDTO(Long projectId); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java new file mode 100644 index 0000000..58a8590 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; +/** + *

+ * 作业现场表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IWorkSiteInfoService extends IService { + + boolean addWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO); + + boolean updateWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO); + + boolean deleteProjects(List projectIds); + + WorkSiteDetailDTO getWorkSiteDetail(Long projectId); + + Page selectListPage(Page page, QueryWrapper queryWrapper); + + boolean start(Long projectId); + + boolean finish(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java new file mode 100644 index 0000000..6c6ee98 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.extension.service.IService; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IWorkerService extends IService { + + boolean addWorker(Worker worker,Long projectId); + + Page selectListPage(Page page,QueryWrapper ew); + + Worker selectWorkerDetail(Long workerId); + + List faceRegister(String cameraIp,String cameraPort); + + List projectTempWorker(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java new file mode 100644 index 0000000..b44de1d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.consts.AlarmTypeEnum; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.entity.DataTreeLocation; +import com.casic.missiles.modular.system.mapper.BusAlarmMapper; +import com.casic.missiles.modular.system.service.*; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +/** + *

+ * 报警记录表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +@Slf4j +public class BusAlarmServiceImpl extends ServiceImpl implements IBusAlarmService { + + private final IDeviceExtService deviceExtService; + private final IDeviceService deviceService; + private final IProjectDeviceService projectDeviceService; + + private final ICasicFileService fileService; + + private final AbstractDictService dictService; + private final IDataSupportService dataSupportService; + + @Override + @Transactional + public boolean alarmUpload(AlarmUpload alarmUpload) { + log.info("alarm upload ==> {}",alarmUpload.toString()); + Long deviceId = null; + if(StrUtil.isAllNotBlank(alarmUpload.getGasIp(),alarmUpload.getGasPort())){ + deviceId = deviceExtService.selectByGasIpPort(alarmUpload.getGasIp(),alarmUpload.getGasPort()); + } + if(ObjectUtil.isEmpty(deviceId) && StrUtil.isAllNotBlank(alarmUpload.getCameraIp(),alarmUpload.getCameraPort())){ + deviceId = deviceExtService.selectByCameraIpPort(alarmUpload.getCameraIp(),alarmUpload.getCameraPort()); + } + + if(ObjectUtil.isEmpty(deviceId)){ + return false; + } + + BusAlarm alarm = new BusAlarm(); + alarm.setDeviceId(deviceId); + alarm.setProjectId(projectDeviceService.selectProjectIdByDevice(deviceId)); + alarm.setAlarmValue(alarmUpload.getAlarmValue()); + if(StrUtil.isNotEmpty(alarmUpload.getAlarmTime())){ + alarm.setAlarmTime(DateUtil.parseDateTime(alarmUpload.getAlarmTime())); + }else { + alarm.setAlarmTime(new Date()); + } + + alarm.setAlarmType(alarmUpload.getAlarmType()); + alarm.setAlarmContent(alarmUpload.getAlarmContent()); + if(StrUtil.isNotEmpty(alarmUpload.getAlarmImage())){ + String imgBase64 = "data:image/jpeg;base64," + alarmUpload.getAlarmImage(); + String imageUrl = fileService.saveFile(imgBase64); + alarm.setAlarmImage(imageUrl); + } + alarm.setAlarmStatus(ALARM_STATUS_ON); + + DataTreeLocation treeLocation = dataSupportService.getTreeLocation(deviceId); + if(ObjectUtil.isNotEmpty(treeLocation)){ + alarm.setAlarmLng(treeLocation.getGdLng()); + alarm.setAlarmLat(treeLocation.getGdLat()); + } + + //自动消警 + AlarmTypeEnum alarmTypeEnum = AlarmTypeEnum.getByAlarmType(alarm.getAlarmType()); + if(ObjectUtil.isNotEmpty(alarmTypeEnum) && alarmTypeEnum.isAutoCancel()){ + this.baseMapper.cancelAlarm(deviceId,alarm.getAlarmType()); + } + return this.save(alarm); + } + + @Override + public Page listPage(Page page, QueryWrapper queryWrapper) { + page = this.baseMapper.listPage(page, queryWrapper); + for (BusAlarm alarm : page.getRecords()) { + alarm.setAlarmTypeName(dictService.getDictNameByCode("alarmType",alarm.getAlarmType())); + alarm.setAlarmStatusName(dictService.getDictNameByCode("alarmStatus",alarm.getAlarmStatus())); + if(StrUtil.isNotEmpty(alarm.getProjectState())){ + alarm.setProjectStateName(dictService.getDictNameByCode("projectStatus",alarm.getProjectState())); + } + } + return page; + } + + @Override + public List alarmCount(Long projectId, String alarmStatus) { + List list = this.baseMapper.alarmCount(projectId, alarmStatus); + list = list.stream().filter(i->StrUtil.isNotEmpty(i.getAlarmType())).collect(Collectors.toList()); + for (AlarmTypeCountDTO countDTO : list) { + countDTO.setAlarmTypeName(dictService.getDictNameByCode("alarmType",countDTO.getAlarmType())); + } + return list; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java new file mode 100644 index 0000000..a43f7c1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.casic.missiles.modular.system.mapper.BusEventImageMapper; +import com.casic.missiles.modular.system.service.IBusEventImageService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 事件图片表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +public class BusEventImageServiceImpl extends ServiceImpl implements IBusEventImageService { + + @Override + public boolean saveBusEventImages(Long eventId, List imageList) { + imageList.forEach(i->i.setEventId(eventId)); + return this.saveBatch(imageList); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java new file mode 100644 index 0000000..21e511c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java @@ -0,0 +1,39 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.mapper.BusEventMapper; +import com.casic.missiles.modular.system.service.IBusEventImageService; +import com.casic.missiles.modular.system.service.IBusEventService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; + +/** + *

+ * 事件表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class BusEventServiceImpl extends ServiceImpl implements IBusEventService { + + private final IBusEventImageService busEventImageService; + + + @Override + @Transactional + public boolean saveBusEvent(BusEvent busEvent) { + busEvent.setCreateTime(new Date()); + boolean res = this.save(busEvent); + if(res){ + res = busEventImageService.saveBusEventImages(busEvent.getId(),busEvent.getImageList()); + } + return res; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java new file mode 100644 index 0000000..2bdb63d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java @@ -0,0 +1,102 @@ +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.core.conditions.update.UpdateWrapper; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.casic.missiles.modular.system.mapper.DeviceExtMapper; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 设备扩展信息表(安全树) 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Service +public class DeviceExtServiceImpl extends ServiceImpl implements IDeviceExtService { + + + @Override + public boolean saveDeviceExt(DeviceDetailDTO deviceDetailDTO) { + DeviceExt ext = new DeviceExt(); + ext.setDeviceId(deviceDetailDTO.getId()); + ext.setCameraCode(deviceDetailDTO.getCameraCode()); + ext.setCameraIp(deviceDetailDTO.getCameraIp()); + ext.setCameraPort(deviceDetailDTO.getCameraPort()); + ext.setGasCode(deviceDetailDTO.getGasCode()); + ext.setGasIp(deviceDetailDTO.getGasIp()); + ext.setGasPort(deviceDetailDTO.getGasPort()); + ext.setHatLiningCode(deviceDetailDTO.getHatLiningCode()); + return this.save(ext); + } + + @Override + public boolean updateDeviceExt(DeviceDetailDTO deviceDetailDTO) { + DeviceExt ext = this.selectByDeviceId(deviceDetailDTO.getId()); + ext.setCameraCode(deviceDetailDTO.getCameraCode()); + ext.setCameraIp(deviceDetailDTO.getCameraIp()); + ext.setCameraPort(deviceDetailDTO.getCameraPort()); + ext.setGasCode(deviceDetailDTO.getGasCode()); + ext.setGasIp(deviceDetailDTO.getGasIp()); + ext.setGasPort(deviceDetailDTO.getGasPort()); + ext.setHatLiningCode(deviceDetailDTO.getHatLiningCode()); + return this.updateById(ext); + } + + @Override + public boolean removeByDeviceIds(List deviceIds) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("DEVICE_ID",deviceIds); + return this.remove(queryWrapper); + } + + @Override + public boolean setGasThreshold(String gasIp, String gasPort, String threshold) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.set("GAS_THRESHOLD",threshold); + updateWrapper.eq("GAS_IP",gasIp); + updateWrapper.eq("GAS_PORT",gasPort); + return this.update(updateWrapper); + } + + @Override + public String getGasThreshold(String gasIp, String gasPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("GAS_IP",gasIp); + queryWrapper.eq("GAS_PORT",gasPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getGasThreshold() : null; + } + + private DeviceExt selectByDeviceId(Long deviceId){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVICE_ID",deviceId); + return this.getOne(queryWrapper); + } + + @Override + public Long selectByGasIpPort(String gasIp, String gasPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("GAS_IP",gasIp); + queryWrapper.eq("GAS_PORT",gasPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getDeviceId() : null; + } + + @Override + public Long selectByCameraIpPort(String cameraIp, String cameraPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("CAMERA_IP",cameraIp); + queryWrapper.eq("CAMERA_PORT",cameraPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getDeviceId() : null; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java new file mode 100644 index 0000000..9df79ef --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.mapper.DeviceMapper; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.modular.system.consts.DeviceConst.*; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class DeviceServiceImpl extends ServiceImpl implements IDeviceService { + + private final AbstractDictService dictService; + private final IDeviceExtService deviceExtService; + + private final IProjectDeviceService projectDeviceService; + + @Transactional + @Override + public boolean saveDevice(DeviceDetailDTO deviceDetailDTO) { + deviceDetailDTO.setCreateTime(new Date()); + boolean deviceRes = this.save(deviceDetailDTO); + if(deviceRes && DEVICE_TYPE_TREE.equals(deviceDetailDTO.getDeviceType())){ + deviceRes = deviceExtService.saveDeviceExt(deviceDetailDTO); + } + return deviceRes; + } + + @Transactional + @Override + public boolean updateDevice(DeviceDetailDTO deviceDetailDTO) { + boolean deviceRes = this.updateById(deviceDetailDTO); + if(deviceRes && DEVICE_TYPE_TREE.equals(deviceDetailDTO.getDeviceType())){ + deviceRes = deviceExtService.updateDeviceExt(deviceDetailDTO); + } + return deviceRes; + } + + @Transactional + @Override + public boolean deleteDevices(List deviceIds) { + return this.removeByIds(deviceIds) & deviceExtService.removeByDeviceIds(deviceIds); + } + + @Override + public Page listPage(Page page, QueryWrapper queryWrapper,String status,Long projectId) { + String ID_COLUMN_NAME = "br_device.ID"; + List useDevices = this.selectProjectDevice(null); + List projectDevices; + if(ObjectUtil.isNotEmpty(projectId)){ + projectDevices = this.selectProjectDevice(projectId); + } else { + projectDevices = null; + } + + // 查询使用中的设备(如果传了 projectId,查询 使用中&&此现场) + if(DEVICE_STATUS_USE.equals(status)){ + if(CollUtil.isEmpty(useDevices)){ + return page; + } + if(ObjectUtil.isNotEmpty(projectId) && CollUtil.isEmpty(projectDevices)){ + return page; + } + queryWrapper.in(ID_COLUMN_NAME,useDevices); + if(CollUtil.isNotEmpty(projectDevices)){ + queryWrapper.in(ID_COLUMN_NAME,projectDevices); + } + + } + + // 查询未使用的设备(如果传了 projectId,查询 未使用||此现场) + if(DEVICE_STATUS_NORMAL.equals(status)) { + if (CollUtil.isNotEmpty(useDevices)) { + if (CollUtil.isEmpty(projectDevices)) { + queryWrapper.notIn(ID_COLUMN_NAME, useDevices); + } else { + queryWrapper.and(i -> i.notIn(ID_COLUMN_NAME, useDevices).or().in(ID_COLUMN_NAME, projectDevices)); + } + } + } + + page = this.baseMapper.listDetailPage(page, queryWrapper); + for (DeviceDetailDTO record : page.getRecords()) { + record.setDeviceTypeName(dictService.getDictNameByCode("deviceType",record.getDeviceType())); + record.setIsPowerSupplyName(dictService.getDictNameByCode("isPowerSupply",record.getIsPowerSupply())); + record.setRegisterTime(DateUtil.formatDate(record.getCreateTime())); + record.setStatus(useDevices.contains(record.getId()) ? DEVICE_STATUS_USE : DEVICE_STATUS_NORMAL); + record.setStatusName(dictService.getDictNameByCode("deviceStatus",record.getStatus())); + } + return page; + } + + @Override + public List selectProjectDevice(Long projectId) { + return this.baseMapper.selectProjectDevice(projectId); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceSupportServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceSupportServiceImpl.java new file mode 100644 index 0000000..ffd01ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceSupportServiceImpl.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.mapper.DeviceMapper; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceSupportService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; + +import static com.casic.missiles.modular.system.consts.DeviceConst.DEVICE_TYPE_HAT; + +@Service +@RequiredArgsConstructor +public class DeviceSupportServiceImpl implements IDeviceSupportService { + + private final IDeviceExtService deviceExtService; + + private final DeviceMapper deviceMapper; + + @Override + public Long selectByGasIpPort(String gasIp, String gasPort) { + return deviceExtService.selectByGasIpPort(gasIp, gasPort); + } + + @Override + public List selectHelmetList() { + return deviceMapper.selectHelmetList(DEVICE_TYPE_HAT); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectDeviceServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectDeviceServiceImpl.java new file mode 100644 index 0000000..965f55c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectDeviceServiceImpl.java @@ -0,0 +1,96 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.DataGas; +import com.casic.missiles.modular.system.entity.DataTreeLocation; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.mapper.ProjectDeviceMapper; +import com.casic.missiles.modular.system.service.IDataSupportService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.utils.LngLatUtil; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.stream.Collectors; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class ProjectDeviceServiceImpl extends ServiceImpl implements IProjectDeviceService { + + private final IDataSupportService dataSupportService; + + @Override + public boolean saveProjectDeviceList(Long projectId, List projectDeviceList) { + projectDeviceList.forEach(i->i.setProjectId(projectId)); + return this.saveBatch(projectDeviceList); + } + + @Transactional + @Override + public boolean updateProjectDeviceList(Long projectId, List projectDeviceList) { + return this.deleteByProjectId(projectId) && this.saveProjectDeviceList(projectId, projectDeviceList); + } + + @Override + public boolean deleteByProjectId(Long projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("PROJECT_ID",projectId); + return this.remove(queryWrapper); + } + + @Override + public boolean deleteByProjectIds(List projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("PROJECT_ID",projectId); + return this.remove(queryWrapper); + } + + @Override + public List selectDetailByProjectId(Long projectId) { + return this.baseMapper.selectDetailByProjectId(projectId); + } + + @Override + public Long selectProjectIdByDevice(Long deviceId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVICE_ID",deviceId); + queryWrapper.exists("(select Id FROM br_work_site_info p where p.ID = br_project_device.PROJECT_ID AND p.PROJECT_STATE != '3')"); + ProjectDevice projectDevice = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(projectDevice) ? projectDevice.getProjectId() : null; + } + + @Override + public List selectDeviceLocationList(Long projectId) { + List list = this.baseMapper.selectDeviceLocationList(projectId); + for (DeviceLocationDTO locationDTO : list) { + DataGas dataGas = dataSupportService.getGasData(locationDTO.getDeviceId()); + DataTreeLocation location = dataSupportService.getTreeLocation(locationDTO.getDeviceId(),true); + if(ObjectUtil.isNotEmpty(dataGas)){ + locationDTO.setGasValue(dataGas.getGasValue()); + locationDTO.setTime(DateUtil.formatDateTime(dataGas.getTs())); + } + if(ObjectUtil.isNotEmpty(location)){ + locationDTO.setLng(location.getGdLng()); + locationDTO.setLat(location.getGdLat()); + locationDTO.setLocation(location.getLocation()); + } + } + list = list.stream().filter(i-> StrUtil.isAllNotEmpty(i.getLng(),i.getLat())).collect(Collectors.toList()); + return LngLatUtil.sort(list); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectWorkerServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectWorkerServiceImpl.java new file mode 100644 index 0000000..c3ec86c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectWorkerServiceImpl.java @@ -0,0 +1,101 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.DataHelmetHealth; +import com.casic.missiles.modular.system.entity.DataHelmetLocation; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.mapper.ProjectWorkerMapper; +import com.casic.missiles.modular.system.service.IHelmetSupportService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.system.consts.ProjectConst.WORKER_TYPE_NORMAL; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class ProjectWorkerServiceImpl extends ServiceImpl implements IProjectWorkerService { + + private final AbstractDeptService deptService; + private final IHelmetSupportService helmetSupportService; + + @Override + public boolean saveProjectWorkerList(Long projectId, List projectWorkerList) { + projectWorkerList.forEach(i->i.setProjectId(projectId)); + return this.saveBatch(projectWorkerList); + } + + @Transactional + @Override + public boolean updateProjectWorkerList(Long projectId, List projectWorkerList) { + return this.deleteByProjectId(projectId) && this.saveProjectWorkerList(projectId, projectWorkerList) ; + } + + @Override + public boolean deleteByProjectId(Long projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("PROJECT_ID",projectId); + return this.remove(queryWrapper); + } + + @Override + public boolean deleteByProjectIds(List projectIds) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("PROJECT_ID",projectIds); + return this.remove(queryWrapper); + } + + + @Override + public List selectDetailByProjectId(Long projectId,String workerType) { + List projectWorkerList = this.baseMapper.selectDetailByProjectId(projectId,workerType); + for (ProjectWorker projectWorker : projectWorkerList) { + if(ObjectUtil.isNotEmpty(projectWorker.getWorkerDeptId())){ + projectWorker.setWorkerDeptName(deptService.getDeptName(projectWorker.getWorkerDeptId())); + } + } + return projectWorkerList; + } + + @Override + public List selectWorkerLocationDTO(Long projectId) { + List projectWorkerList = this.baseMapper.selectWorkerLocationList(projectId,WORKER_TYPE_NORMAL); + for (WorkerLocationDTO workerLocationDTO : projectWorkerList) { + if(ObjectUtil.isNotEmpty(workerLocationDTO.getHatId())){ + DataHelmetLocation location = helmetSupportService.getHelmetLocation(workerLocationDTO.getHatId(),true); + if(ObjectUtil.isNotEmpty(location)){ + workerLocationDTO.setLng(location.getGdLng()); + workerLocationDTO.setLat(location.getGdLat()); + workerLocationDTO.setLocation(location.getLocation()); + } + + DataHelmetHealth health = helmetSupportService.getHelmetHealth(workerLocationDTO.getHatId()); + if(ObjectUtil.isNotEmpty(health)){ + workerLocationDTO.setBloodOxygen(health.getBloodOxygen()); + workerLocationDTO.setHeartRate(health.getHeartRate()); + workerLocationDTO.setTime(DateUtil.formatDateTime(health.getTs())); + } + } + } + projectWorkerList = projectWorkerList.stream().filter(i-> StrUtil.isAllNotEmpty(i.getLng(),i.getLat())).collect(Collectors.toList()); + return projectWorkerList; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkSiteInfoServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkSiteInfoServiceImpl.java new file mode 100644 index 0000000..5068da2 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkSiteInfoServiceImpl.java @@ -0,0 +1,151 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.mapper.WorkSiteInfoMapper; +import com.casic.missiles.modular.system.service.*; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.system.consts.ProjectConst.*; + +/** + *

+ * 作业现场表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class WorkSiteInfoServiceImpl extends ServiceImpl implements IWorkSiteInfoService { + + private final IProjectWorkerService projectWorkerService; + private final IProjectDeviceService projectDeviceService; + + private final IWorkerService workerService; + private final IBraceletService braceletService; + + private final AbstractDeptService deptService; + private final AbstractDictService dictService; + @Override + @Transactional + public boolean addWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO) { + workSiteDetailDTO.setCreateTime(new Date()); + workSiteDetailDTO.setUpdateTime(new Date()); + workSiteDetailDTO.setProjectState(PROJECT_STATE_PREPARE); + boolean res = this.save(workSiteDetailDTO); + if(res){ + res = projectDeviceService.saveProjectDeviceList(workSiteDetailDTO.getId(), workSiteDetailDTO.getDeviceList()); + res = res & projectWorkerService.saveProjectWorkerList(workSiteDetailDTO.getId(), workSiteDetailDTO.getWorkerList()); + } + return res; + } + + @Override + @Transactional + public boolean updateWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO) { + workSiteDetailDTO.setUpdateTime(new Date()); + boolean res = this.updateById(workSiteDetailDTO); + if(res){ + res = projectDeviceService.updateProjectDeviceList(workSiteDetailDTO.getId(), workSiteDetailDTO.getDeviceList()); + res = res & projectWorkerService.updateProjectWorkerList(workSiteDetailDTO.getId(), workSiteDetailDTO.getWorkerList()); + } + return res; + } + + @Override + public boolean deleteProjects(List projectIds) { + if(CollUtil.isNotEmpty(projectIds)) { + projectDeviceService.deleteByProjectIds(projectIds); + projectWorkerService.deleteByProjectIds(projectIds); + return this.removeByIds(projectIds); + } + return true; + } + + @Override + public WorkSiteDetailDTO getWorkSiteDetail(Long projectId) { + WorkSiteInfo workSiteInfo = this.getById(projectId); + WorkSiteDetailDTO workSiteDetailDTO = new WorkSiteDetailDTO(); + BeanUtil.copyProperties(workSiteInfo,workSiteDetailDTO,true); + workSiteDetailDTO.setDeviceList(projectDeviceService.selectDetailByProjectId(projectId)); + workSiteDetailDTO.setWorkerList(projectWorkerService.selectDetailByProjectId(projectId,WORKER_TYPE_NORMAL)); + + Worker responseWorker = workerService.selectWorkerDetail(workSiteDetailDTO.getWorkPerson()); + if(ObjectUtil.isNotEmpty(responseWorker)){ + workSiteDetailDTO.setWorkPersonName(responseWorker.getWorkerName()); + workSiteDetailDTO.setWorkPersonPhoneNumber(responseWorker.getPhoneNumber()); + workSiteDetailDTO.setWorkPersonDeptId(responseWorker.getDeptId()); + workSiteDetailDTO.setWorkPersonDeptName(responseWorker.getDeptName()); + } + return workSiteDetailDTO; + } + + @Override + public Page selectListPage(Page page, QueryWrapper queryWrapper) { + page = this.baseMapper.selectListPage(page, queryWrapper); + for (WorkSiteInfo workSiteInfo : page.getRecords()) { + workSiteInfo.setProjectStateName(dictService.getDictNameByCode("projectState", workSiteInfo.getProjectState())); + if(ObjectUtil.isNotEmpty(workSiteInfo.getWorkPersonDeptId())){ + workSiteInfo.setWorkPersonDeptName(deptService.getDeptName(workSiteInfo.getWorkPersonDeptId())); + } + workSiteInfo.setRegisterTime(DateUtil.formatDate(workSiteInfo.getCreateTime())); + } + return page; + } + + @Override + public boolean start(Long projectId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",projectId); + updateWrapper.set("PROJECT_STATE",PROJECT_STATE_WORKING); + updateWrapper.set("START_TIME",new Date()); + boolean res = this.update(updateWrapper); + //braceletService.enableBracelet(selectProjectBracelets(projectId)); + return res; + } + + @Override + public boolean finish(Long projectId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",projectId); + updateWrapper.set("PROJECT_STATE",PROJECT_STATE_FINISH); + updateWrapper.set("FINISH_TIME",new Date()); + boolean res = this.update(updateWrapper); + //braceletService.disableBracelet(selectProjectBracelets(projectId)); + return res; + } + + private List selectProjectBracelets(Long projectId){ + List deviceCodes = new ArrayList<>(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("PROJECT_ID",projectId); + queryWrapper.isNotNull("BRACELET_CODE"); + queryWrapper.select("BRACELET_CODE"); + List res = projectWorkerService.listObjs(queryWrapper); + if(CollUtil.isNotEmpty(res)){ + deviceCodes = res.stream().map(Object::toString).distinct().collect(Collectors.toList()); + } + return deviceCodes; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkerServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkerServiceImpl.java new file mode 100644 index 0000000..6859cff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkerServiceImpl.java @@ -0,0 +1,110 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.mapper.WorkerMapper; +import com.casic.missiles.modular.system.service.*; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.modular.system.consts.ProjectConst.WORKER_TYPE_TEMP; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class WorkerServiceImpl extends ServiceImpl implements IWorkerService { + + private final IProjectWorkerService projectWorkerService; + + private final IProjectDeviceService projectDeviceService; + private final AbstractDictService dictService; + private final AbstractDeptService deptService; + private final IDeviceExtService deviceExtService; + + @Override + @Transactional + public boolean addWorker(Worker worker, Long projectId) { + worker.setCreateTime(new Date()); + boolean res = this.save(worker); + if(res && ObjectUtil.isNotEmpty(projectId)){ + res = projectWorkerService.save(new ProjectWorker(projectId, worker.getId())); + if(ObjectUtil.isNotEmpty(worker.getWorkerAvatar())){ + // todo 向一体机推送人脸图片 + } + } + return res; + } + + @Override + public Page selectListPage(Page page, QueryWrapper ew) { + page = this.baseMapper.selectListPage(page, ew); + for (Worker worker : page.getRecords()) { + wrapperWorker(worker); + } + return page; + } + + private void wrapperWorker(Worker worker) { + if(StrUtil.isNotEmpty(worker.getGender())){ + worker.setGenderName(dictService.getDictNameByCode("sysSex", worker.getGender())); + } + if(ObjectUtil.isNotEmpty(worker.getDeptId())){ + worker.setDeptName(deptService.getDeptName(worker.getDeptId())); + } + worker.setRegisterTime(DateUtil.formatDate(worker.getCreateTime())); + if(StrUtil.isNotEmpty(worker.getStatus())){ + worker.setStatusName(dictService.getDictNameByCode("workerStatus", worker.getStatus())); + } + } + + @Override + public Worker selectWorkerDetail(Long workerId) { + Worker worker = this.getById(workerId); + if(ObjectUtil.isNotEmpty(worker)){ + wrapperWorker(worker); + } + return worker; + } + + @Override + public List faceRegister(String cameraIp, String cameraPort) { + Long deviceId = deviceExtService.selectByCameraIpPort(cameraIp, cameraPort); + if(ObjectUtil.isNotEmpty(deviceId)){ + Long projectId = projectDeviceService.selectProjectIdByDevice(deviceId); + if(ObjectUtil.isNotEmpty(projectId)){ + return this.baseMapper.selectWorkerAvatars(projectId); + } + } + return null; + } + + @Override + public List projectTempWorker(Long projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("WORKER_TYPE",WORKER_TYPE_TEMP); + queryWrapper.exists("(select ID FROM br_project_worker WHERE PROJECT_ID = "+ projectId +")"); + List workers = this.list(queryWrapper); + workers.forEach(this::wrapperWorker); + return workers; + } +} diff --git a/casic_video_283_web/pom.xml b/casic_video_283_web/pom.xml new file mode 100644 index 0000000..feace49 --- /dev/null +++ b/casic_video_283_web/pom.xml @@ -0,0 +1,166 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + casic_video_283_web + 1.0.0 + jar + casic_video_283_web + casic web启动入口 + + + + dev + + true + + + dev + + + + test + + test + + + + prod + + prod + + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-actuator + + + io.micrometer + micrometer-core + + + + + org.springframework.boot + spring-boot-starter-jdbc + + + + com.casic + casic-core + ${core.version} + + + com.casic + casic-admin-core + ${admin.version} + + + io.springfox + springfox-swagger-ui + + + + + com.casic + casic-admin-support + ${admin.version} + + + mysql + mysql-connector-java + ${mysql.driver.version} + + + com.casic + casic-area-starter + ${admin.version} + + + + com.casic + casic_video_283_server + ${pro.version} + + + + org.springframework.boot + spring-boot-starter-tomcat + + + + + casic_video_283_web-${pro.version} + + + org.apache.maven.plugins + maven-jar-plugin + ${maven.jar.plugin.version} + + + + /config/*-*.yml + **/MockController.class + + + + com.casic.missiles.CasicApplication + true + ./ + + + + + + org.apache.maven.plugins + maven-assembly-plugin + ${maven.assembly.plugin.version} + + + make-assembly + package + + single + + + + + + org.apache.maven.plugins + maven-war-plugin + ${maven.war.plugin.version} + + + + + src/main/resources + + + /config/*/* + /config/*-*.yml + + true + + + src/main/java + + **/*.xml + + true + + + + \ No newline at end of file diff --git a/casic_video_283_web/src/main/build/bin/start.bat b/casic_video_283_web/src/main/build/bin/start.bat new file mode 100644 index 0000000..1db4e88 --- /dev/null +++ b/casic_video_283_web/src/main/build/bin/start.bat @@ -0,0 +1,4 @@ +@echo off +title ${project.build.finalName} +java -jar ./lib/${project.build.finalName}.jar +@pause diff --git a/casic_video_283_web/src/main/build/bin/start.sh b/casic_video_283_web/src/main/build/bin/start.sh new file mode 100644 index 0000000..1cc33fc --- /dev/null +++ b/casic_video_283_web/src/main/build/bin/start.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +jar_name="${project.build.finalName}.jar" +echo "starting $jar_name ..." + +PID=$(ps -ef | grep ${jar_name} | grep -v grep | awk '{print $2}') + +OLD_IFS="$IFS" +IFS="," +PIDARR=($PID) +IFS="$OLD_IFS" + +if [ ! $PID ]; then + echo "process ${jar_name} not exit" +else + echo "process id: $PID" + + kill -9 ${PID} + + if [ $? -eq 0 ]; then + echo "kill ${jar_name} success" + else + echo "kill ${jar_name} fail" + exit + fi +fi + + + +nohup java -jar ./lib/${jar_name} >/dev/null 2>log & +echo "start ${jar_name} ..." \ No newline at end of file diff --git a/casic_video_283_web/src/main/build/package.xml b/casic_video_283_web/src/main/build/package.xml new file mode 100644 index 0000000..c9259ad --- /dev/null +++ b/casic_video_283_web/src/main/build/package.xml @@ -0,0 +1,43 @@ + + + package + + zip + tar.gz + + true + + + + true + true + lib + runtime + + + + + src/main/build/bin + + start.bat + start.sh + + true + 0744 + / + + + src/main/resources/config + true + + *.yml + /*/* + + /config + + + src/main/resources/i18n + / + + + \ No newline at end of file diff --git a/casic_video_283_web/src/main/java/com/casic/missiles/CasicApplication.java b/casic_video_283_web/src/main/java/com/casic/missiles/CasicApplication.java new file mode 100644 index 0000000..7b8791f --- /dev/null +++ b/casic_video_283_web/src/main/java/com/casic/missiles/CasicApplication.java @@ -0,0 +1,35 @@ +package com.casic.missiles; + +import lombok.extern.slf4j.Slf4j; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.web.servlet.ServletComponentScan; +import org.springframework.cache.annotation.EnableCaching; +import org.springframework.scheduling.annotation.EnableAsync; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +/** + * SpringBoot方式启动类 + * + * @author lwh + * @Date 2021/06/06 12:06 + */ +@SpringBootApplication +@EnableCaching +@EnableTransactionManagement(proxyTargetClass = true) +@EnableAsync +@Slf4j +@MapperScan(value = "com.casic.missiles.modular.system.mapper") +public class CasicApplication { + + static { + System.setProperty("druid.mysql.usePingMethod","false"); + } + + public static void main(String[] args) { + SpringApplication.run(CasicApplication.class, args); + log.info("CasicApplication is success!"); + } + +} diff --git a/casic_video_283_web/src/main/java/com/casic/missiles/CasicServletInitializer.java b/casic_video_283_web/src/main/java/com/casic/missiles/CasicServletInitializer.java new file mode 100644 index 0000000..e30585b --- /dev/null +++ b/casic_video_283_web/src/main/java/com/casic/missiles/CasicServletInitializer.java @@ -0,0 +1,18 @@ +package com.casic.missiles; + +import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; + +/** + * Guns Web程序启动类 + * + * @author fengshuonan + * @date 2017-05-21 9:43 + */ +public class CasicServletInitializer extends SpringBootServletInitializer { + + @Override + protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { + return application.sources(CasicApplication.class); + } +} diff --git a/casic_video_283_web/src/main/java/com/casic/missiles/config/SwaggerConfig.java b/casic_video_283_web/src/main/java/com/casic/missiles/config/SwaggerConfig.java new file mode 100644 index 0000000..fd233d8 --- /dev/null +++ b/casic_video_283_web/src/main/java/com/casic/missiles/config/SwaggerConfig.java @@ -0,0 +1,40 @@ +package com.casic.missiles.config; + + +import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j; +import io.swagger.annotations.ApiOperation; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import springfox.documentation.builders.ApiInfoBuilder; +import springfox.documentation.builders.PathSelectors; +import springfox.documentation.builders.RequestHandlerSelectors; +import springfox.documentation.service.ApiInfo; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spring.web.plugins.Docket; +import springfox.documentation.swagger2.annotations.EnableSwagger2; + +@Configuration //声明该类为配置类 +@EnableSwagger2 //声明启动Swagger2 +@EnableKnife4j +public class SwaggerConfig{ + private ApiInfo apiInfo() { + return new ApiInfoBuilder() + .title("北燃四分二期接口文档")//文档说明 + .version("1.0.0")//文档版本说明 + .build(); + } + + @Bean + public Docket productApi() { + return new Docket(DocumentationType.SWAGGER_2) + .apiInfo(apiInfo()) + .select() + .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) //添加ApiOperiation注解的被扫描 + .paths(PathSelectors.any()) + .build(); + + } + + +} + diff --git a/casic_video_283_web/src/main/java/com/casic/missiles/controller/MockController.java b/casic_video_283_web/src/main/java/com/casic/missiles/controller/MockController.java new file mode 100644 index 0000000..eae6c54 --- /dev/null +++ b/casic_video_283_web/src/main/java/com/casic/missiles/controller/MockController.java @@ -0,0 +1,82 @@ +package com.casic.missiles.controller; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.application.enums.LoginType; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.model.auth.CasicCustomToken; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.response.SuccessResponseData; +import com.casic.missiles.modular.domain.constants.PermissionConstants; +import com.casic.missiles.modular.interfaces.log.LogManager; +import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; +import com.casic.missiles.modular.system.dto.LoginSuccessDTO; +import lombok.extern.slf4j.Slf4j; +import org.apache.shiro.subject.Subject; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.security.NoSuchAlgorithmException; +import java.util.Map; + +import static com.casic.missiles.core.util.HttpContext.getIp; + + +/** + * 仅为mock登录使用 + * + * @author lenovo + */ +@Controller +@RequestMapping("/route") +@Slf4j +public class MockController extends BaseController { + + /** + * 获取mockToken + */ + @GetMapping("/mockToken") + @ResponseBody + public Object mockToken(String username, String password) { + super.getSession().setAttribute(PermissionConstants.IS_APP, false); + SuccessResponseData resultData = new SuccessResponseData(); + if (StrUtil.hasEmpty(username, password)) { + username = "admin"; + password = "111111"; + } + Subject currentUser = ShiroKit.getSubject(); + + try { + Map key = RSAUtils.genKeyPair(); + ShiroKit.getSession().setAttribute(PermissionConstants.PRIVATE_KEY, key.get(RSAUtils.RSAPrivateKey)); + + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } + + //token自定义 + CasicCustomToken token = new CasicCustomToken(username, password); + token.setType(LoginType.PASSWORD); + token.setRememberMe(false); + + try { + currentUser.login(token); + } catch (Exception e) { + e.printStackTrace(); + } + AuthUser shiroUser = ShiroKit.getUser(); + super.getSession().setAttribute("shiroUser", shiroUser); + super.getSession().setAttribute("username", shiroUser.getAccount()); + super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); + + LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), getIp())); + + ShiroKit.getSession().setAttribute("sessionFlag", true); + resultData.setData(new LoginSuccessDTO(ShiroKit.getSession().getId().toString(), null)); + resultData.setMessage("登录成功"); + return resultData; + } +} diff --git a/casic_video_283_web/src/main/resources/META-INF/spring-devtools.properties b/casic_video_283_web/src/main/resources/META-INF/spring-devtools.properties new file mode 100644 index 0000000..e3b0a7f --- /dev/null +++ b/casic_video_283_web/src/main/resources/META-INF/spring-devtools.properties @@ -0,0 +1 @@ +restart.include.beetl=/beetl-2.7.15.jar \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java new file mode 100644 index 0000000..73d7799 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.dto; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "AlarmUpload",description = "报警上传") +@Data +public class AlarmUpload { + + @ApiModelProperty(value = "摄像头ip") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + @ApiModelProperty(value = "安全树甲烷设备ip") + private String gasIp; + @ApiModelProperty(value = "安全树甲烷设备端口") + private String gasPort; + @ApiModelProperty(value = "报警值") + private String alarmValue; + @ApiModelProperty(value = "报警时间") + private String alarmTime; + @ApiModelProperty(value = "报警类型") + private String alarmType; + @ApiModelProperty(value = "报警图片") + private String alarmImage; + @ApiModelProperty(value = "报警内容") + private String alarmContent; + + @Override + public String toString() { + return "AlarmUpload{" + + "cameraIp='" + cameraIp + '\'' + + ", cameraPort='" + cameraPort + '\'' + + ", gasIp='" + gasIp + '\'' + + ", gasPort='" + gasPort + '\'' + + ", alarmValue='" + alarmValue + '\'' + + ", alarmTime='" + alarmTime + '\'' + + ", alarmType='" + alarmType + '\'' + + ", alarmImage='" + (StrUtil.isNotEmpty(alarmImage) ? alarmImage.substring(0,50) : "null") + '\'' + + ", alarmContent='" + alarmContent + '\'' + + '}'; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java new file mode 100644 index 0000000..ea518d9 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.modular.system.entity.Device; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("DeviceDetailDTO") +@Data +public class DeviceDetailDTO extends Device { + + @ApiModelProperty(value = "摄像头编号") + private String cameraCode; + + @ApiModelProperty(value = "摄像头IP") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + + @ApiModelProperty(value = "激甲编号") + private String gasCode; + + @ApiModelProperty(value = "激甲IP") + private String gasIp; + + @ApiModelProperty(value = "激甲端口") + private String gasPort; + + @ApiModelProperty(value = "智能帽衬编号") + private String hatLiningCode; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java new file mode 100644 index 0000000..29378ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("WorkSiteDetailDTO") +public class WorkSiteDetailDTO extends WorkSiteInfo { + + @ApiModelProperty(value = "安全树列表",dataType = "ProjectDevice") + private List deviceList; + + @ApiModelProperty(value = "人员列表",dataType = "ProjectWorker") + private List workerList; + + + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java new file mode 100644 index 0000000..6fd7b24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java @@ -0,0 +1,68 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "WorkerLocationDTO",description = "人员位置列表(首页)") +@Data +public class WorkerLocationDTO { + + @ApiModelProperty("人员ID") + private Long workerId; + + @ApiModelProperty("人员姓名") + private String workerName; + + @ApiModelProperty("安全帽编号") + private String hatCode; + + @ApiModelProperty("安全帽ID") + private Long hatId; + + @ApiModelProperty("背心编号") + private String vastCode; + + @ApiModelProperty("手环编号") + private String braceletCode; + + @ApiModelProperty("位置") + private String location; + + @ApiModelProperty("时间") + private String time; + + @ApiModelProperty("经度") + private String lng; + + @ApiModelProperty("纬度") + private String lat; + + @ApiModelProperty("心率") + private String heartRate; + + @ApiModelProperty("血氧") + private String bloodOxygen; + + @ApiModelProperty("一氧化碳") + private String co; + + @ApiModelProperty("甲烷") + private String gas; + + @ApiModelProperty("硫化氢") + private String h2s; + + @ApiModelProperty("氧气") + private String o2; + + @ApiModelProperty("信号") + private String signal; + + @ApiModelProperty("电量") + private String cell; + + @ApiModelProperty("是否报警") + private boolean alarmFlag; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java new file mode 100644 index 0000000..efb4a23 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java @@ -0,0 +1,159 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 报警记录表 + *

+ * + * @author zyj + * @since 2023-05-16 + */ +@Data +@ApiModel("Alarm") +@TableName("br_bus_alarm") +public class BusAlarm implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @ApiModelProperty(value = "设备ID") + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 报警类型 + */ + @ApiModelProperty(value = "报警类型") + @TableField("ALARM_TYPE") + private String alarmType; + + /** + * 报警状态 + */ + @ApiModelProperty(value = "报警状态") + @TableField("ALARM_STATUS") + private String alarmStatus; + + /** + * 报警值 + */ + @ApiModelProperty(value = "报警值") + @TableField("ALARM_VALUE") + private String alarmValue; + + /** + * 报警图片 + */ + @ApiModelProperty(value = "报警图片") + @TableField("ALARM_IMAGE") + private String alarmImage; + + /** + * 报警内容 + */ + @ApiModelProperty(value = "报警内容") + @TableField("ALARM_CONTENT") + private String alarmContent; + + /** + * 报警时间 + */ + @ApiModelProperty(value = "报警时间") + @TableField("ALARM_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date alarmTime; + + /** + * 消警时间 + */ + @ApiModelProperty(value = "消警时间") + @TableField("CANCEL_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + /** + * 报警位置经度 + */ + @ApiModelProperty(value = "报警位置经度") + @TableField("ALARM_LNG") + private String alarmLng; + + /** + * 报警位置纬度 + */ + @ApiModelProperty(value = "报警位置纬度") + @TableField("ALARM_LAT") + private String alarmLat; + + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmStatusName; + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmTypeName; + @ApiModelProperty("作业名称") + @TableField(exist = false) + private String workTitle; + @ApiModelProperty("所属道路") + @TableField(exist = false) + private String workRoad; + @ApiModelProperty("作业状态") + @TableField(exist = false) + private String projectState; + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + @ApiModelProperty("负责人姓名") + @TableField(exist = false) + private String workPersonName; + @ApiModelProperty("负责人联系方式") + @TableField(exist = false) + private String workPersonPhoneNumber; + + + @Override + public String toString() { + return "BusAlarm{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + ", alarmType=" + alarmType + + ", alarmValue=" + alarmValue + + ", alarmStatus=" + alarmStatus + + ", alarmImage=" + alarmImage + + ", alarmContent=" + alarmContent + + ", alarmTime=" + alarmTime + + ", cancelTime=" + cancelTime + + ", alarmLng=" + alarmLng + + ", alarmLat=" + alarmLat + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java new file mode 100644 index 0000000..a0b7543 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + *

+ * 事件表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event") +@Data +@ApiModel("BusEvent") +public class BusEvent implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("事件ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件标题 + */ + @ApiModelProperty("事件名称") + @TableField("EVENT_TITLE") + private String eventTitle; + + /** + * 上报人员 + */ + @ApiModelProperty("上报人员") + @TableField("UPLOAD_NAME") + private String uploadName; + + /** + * 联系方式 + */ + @ApiModelProperty("联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 事件描述 + */ + @ApiModelProperty("事件描述") + @TableField("EVENT_DESCRIPTION") + private String eventDescription; + + @ApiModelProperty("经度") + @TableField("LNG") + private String lng; + + @ApiModelProperty("纬度") + @TableField("LAT") + private String lat; + + /** + * 事件上传时间 + */ + @ApiModelProperty("事件上传时间") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty("事件照片") + @TableField(exist = false) + private List imageList; + + + + @Override + public String toString() { + return "BusEvent{" + + "id=" + id + + ", eventTitle=" + eventTitle + + ", uploadName=" + uploadName + + ", phoneNumber=" + phoneNumber + + ", eventDescription=" + eventDescription + + ", lng=" + lng + + ", lat=" + lat + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java new file mode 100644 index 0000000..1e75245 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 事件图片表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event_image") +@Data +@ApiModel("BusEventImage") +public class BusEventImage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件ID + */ + @TableField("EVENT_ID") + private Long eventId; + + /** + * 报警图片 + */ + @TableField("IMAGE") + @ApiModelProperty("图片url") + private String image; + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java new file mode 100644 index 0000000..df89c70 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.core.base.json.DateDeserializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Device") +@TableName("br_device") +@Data +public class Device implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "设备ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty(value = "设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + /** + * 设备类型 + */ + @ApiModelProperty(value = "设备类型") + @TableField("DEVICE_TYPE") + private String deviceType; + + /** + * 设备批次 + */ + @ApiModelProperty(value = "设备批次") + @TableField("DEVICE_BATCH") + private String deviceBatch; + + /** + * 厂家 + */ + @ApiModelProperty(value = "厂家") + @TableField("MANUFACTURER") + private String manufacturer; + + /** + * 是否供电 + */ + @ApiModelProperty(value = "是否供电") + @TableField("IS_POWER_SUPPLY") + private String isPowerSupply; + + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间",dataType = "Date") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty(value = "设备类型名称") + @TableField(exist = false) + private String deviceTypeName; + + @ApiModelProperty(value = "是否供电名称") + @TableField(exist = false) + private String isPowerSupplyName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", deviceCode=" + deviceCode + + ", deviceType=" + deviceType + + ", deviceBatch=" + deviceBatch + + ", manufacturer=" + manufacturer + + ", isPowerSupply=" + isPowerSupply + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java new file mode 100644 index 0000000..5ee7015 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java @@ -0,0 +1,99 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 设备扩展信息表(安全树) + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Data +@TableName("br_device_ext") +public class DeviceExt implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 摄像头编号 + */ + @TableField("CAMERA_CODE") + private String cameraCode; + + /** + * 摄像头IP + */ + @TableField("CAMERA_IP") + private String cameraIp; + + /** + * 摄像头端口 + */ + @TableField("CAMERA_PORT") + private String cameraPort; + + /** + * 激甲编号 + */ + @TableField("GAS_CODE") + private String gasCode; + + /** + * 激甲IP + */ + @TableField("GAS_IP") + private String gasIp; + + /** + * 激甲端口 + */ + @TableField("GAS_PORT") + private String gasPort; + + /** + * 甲烷报警阈值 + */ + @TableField("GAS_THRESHOLD") + private String gasThreshold; + + @TableField(value = "HAT_LINING_CODE") + private String hatLiningCode; + + + @Override + public String toString() { + return "DeviceExt{" + + "id=" + id + + ", deviceId=" + deviceId + + ", cameraCode=" + cameraCode + + ", cameraIp=" + cameraIp + + ", cameraPort=" + cameraPort + + ", gasCode=" + gasCode + + ", gasIp=" + gasIp + + ", gasPort=" + gasPort + + ", gasThreshold=" + gasThreshold + + ", hatLiningCode=" + hatLiningCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java new file mode 100644 index 0000000..c4f3472 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java @@ -0,0 +1,62 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Data +@ApiModel("ProjectDevice") +@TableName("br_project_device") +public class ProjectDevice implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + @ApiModelProperty("设备ID(新增编辑时传)") + private Long deviceId; + + /** + * 设备编号 + */ + @TableField(exist = false) + @ApiModelProperty("设备编号(详情中展示,新增编辑不用传)") + private String deviceCode; + + @Override + public String toString() { + return "ProjectDevice{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java new file mode 100644 index 0000000..10b23c4 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java @@ -0,0 +1,104 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("ProjectWorker") +@TableName("br_project_worker") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ProjectWorker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 人员ID + */ + @ApiModelProperty("人员ID") + @TableField("WORKER_ID") + private Long workerId; + + /** + * 安全帽编号 + */ + @ApiModelProperty("安全帽编号") + @TableField("HAT_CODE") + private String hatCode; + + /** + * 背心编号 + */ + @ApiModelProperty("背心编号") + @TableField("VAST_CODE") + private String vastCode; + + /** + * 手环编号 + */ + @ApiModelProperty("手环编号") + @TableField("BRACELET_CODE") + private String braceletCode; + + @ApiModelProperty("人员姓名(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerName; + + @ApiModelProperty("人员部门ID(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptId; + + @ApiModelProperty("人员部门名称(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptName; + + @ApiModelProperty("人员联系方式(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerPhoneNumber; + + public ProjectWorker(Long projectId, Long workerId) { + this.projectId = projectId; + this.workerId = workerId; + } + + @Override + public String toString() { + return "ProjectWorker{" + + "id=" + id + + ", projectId=" + projectId + + ", workerId=" + workerId + + ", hatCode=" + hatCode + + ", vastCode=" + vastCode + + ", braceletCode=" + braceletCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java new file mode 100644 index 0000000..fa6f41d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 作业现场表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("WorkSiteInfo") +@TableName("br_work_site_info") +@Data +public class WorkSiteInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("作业现场ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业名称 + */ + @ApiModelProperty("作业名称") + @TableField("WORK_TITLE") + private String workTitle; + + /** + * 责任人 + */ + @ApiModelProperty("责任人(人员ID)") + @TableField("WORK_PERSON") + private Long workPerson; + + /** + * 作业描述 + */ + @ApiModelProperty("作业描述") + @TableField("WORK_SITE_DESC") + private String workSiteDesc; + + /** + * 作业状态 + */ + @ApiModelProperty("作业状态") + @TableField("PROJECT_STATE") + private String projectState; + + /** + * 所属道路 + */ + @ApiModelProperty("所属道路") + @TableField("WORK_ROAD") + private String workRoad; + + @TableField("IMAGE_URL") + private String imageUrl; + + @TableField("CREATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + @TableField("UPDATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("FINISH_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + @ApiModelProperty("负责人姓名(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonName; + + @ApiModelProperty("负责人联系方式(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonPhoneNumber; + + @ApiModelProperty("负责人所属部门ID(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private Long workPersonDeptId; + + @ApiModelProperty("负责人所属部门名称(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonDeptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + + @Override + public String toString() { + return "WorkSiteInfo{" + + "id=" + id + + ", workTitle=" + workTitle + + ", workPerson=" + workPerson + + ", workSiteDesc=" + workSiteDesc + + ", projectState=" + projectState + + ", imageUrl=" + imageUrl + + ", updateTime=" + updateTime + + ", workRoad=" + workRoad + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java new file mode 100644 index 0000000..28a4daa --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java @@ -0,0 +1,147 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Worker") +@TableName("br_worker") +@Data +public class Worker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "人员ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 姓名 + */ + @ApiModelProperty(value = "姓名") + @TableField("WORKER_NAME") + private String workerName; + + /** + * 性别 + */ + @ApiModelProperty(value = "性别") + @TableField("GENDER") + private String gender; + + /** + * 所属部门 + */ + @ApiModelProperty(value = "所属部门(人员管理)") + @TableField("DEPT_ID") + private Long deptId; + + /** + * 所属单位 + */ + @ApiModelProperty(value = "所属单位(入场申请中使用)") + @TableField("OWNER_SHIP") + private String ownerShip; + + /** + * 联系方式 + */ + @ApiModelProperty(value = "联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 证件号 + */ + @ApiModelProperty(value = "证件号") + @TableField("ID_CARD_NUMBER") + private String idCardNumber; + + /** + * 入场原因 + */ + @ApiModelProperty(value = "入场原因(入场申请中使用)") + @TableField("ENTER_REASON") + private String enterReason; + + /** + * 入场人脸照片 + */ + @ApiModelProperty(value = "人脸照片(照片路径)") + @TableField("WORKER_AVATAR") + private String workerAvatar; + + /** + * 申请入场时间 + */ + @ApiModelProperty(value = "注册时间/申请入场时间") + @TableField("CREATE_TIME") + private Date createTime; + + /** + * 人员类型 + */ + @ApiModelProperty(value = "人员类型(区分人员管理和入场申请)") + @TableField("WORKER_TYPE") + private String workerType; + + @ApiModelProperty(value = "性别名称") + @TableField(exist = false) + private String genderName; + + @ApiModelProperty(value = "部门名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @ApiModelProperty(value = "是否注册(0未注册;1已注册)",allowableValues = "0,1") + @TableField(exist = false) + private String isRegister; + + @Override + public String toString() { + return "Worker{" + + "id=" + id + + ", workerName=" + workerName + + ", gender=" + gender + + ", deptId=" + deptId + + ", ownerShip=" + ownerShip + + ", phoneNumber=" + phoneNumber + + ", idCardNumber=" + idCardNumber + + ", enterReason=" + enterReason + + ", workerAvatar=" + workerAvatar + + ", createTime=" + createTime + + ", workerType=" + workerType + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java new file mode 100644 index 0000000..9801742 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警记录表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusAlarmMapper extends BaseMapper { + + Page listPage(Page page,@Param("ew") QueryWrapper queryWrapper); + + void cancelAlarm(@Param("deviceId")Long deviceId,@Param("alarmType") String alarmType); + + List alarmCount(@Param("projectId")Long projectId, @Param("alarmStatus")String alarmStatus); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java new file mode 100644 index 0000000..9590b7d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件图片表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventImageMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java new file mode 100644 index 0000000..3c85edf --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java new file mode 100644 index 0000000..4ca9212 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 设备扩展信息表(安全树) Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface DeviceExtMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java new file mode 100644 index 0000000..444c0c5 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Mapper +public interface DeviceMapper extends BaseMapper { + + Page listDetailPage(Page page,@Param("ew") QueryWrapper ew); + + List selectProjectDevice(@Param("projectId") Long projectId); + + List selectHelmetList(@Param("deviceType")String deviceType); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java new file mode 100644 index 0000000..1d0c14e --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectDeviceMapper extends BaseMapper { + List selectDetailByProjectId(@Param("projectId") Long projectId); + + List selectDeviceLocationList(@Param("projectId") Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java new file mode 100644 index 0000000..58583d1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectWorkerMapper extends BaseMapper { + + List selectDetailByProjectId(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + + List selectWorkerLocationList(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java new file mode 100644 index 0000000..a4934d2 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +/** + *

+ * 作业现场表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkSiteInfoMapper extends BaseMapper { + + Page selectListPage(Page page,@Param("ew") QueryWrapper ew); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java new file mode 100644 index 0000000..258fb12 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkerMapper extends BaseMapper { + + + Page selectListPage(Page page, @Param("ew") QueryWrapper ew); + + List selectWorkerAvatars(@Param("projectId")Long projectId); + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml new file mode 100644 index 0000000..595088a --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml @@ -0,0 +1,58 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml new file mode 100644 index 0000000..fbc3db3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml new file mode 100644 index 0000000..627d573 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml new file mode 100644 index 0000000..5321d1c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml new file mode 100644 index 0000000..94262e1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml @@ -0,0 +1,97 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml new file mode 100644 index 0000000..c6d1c24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml @@ -0,0 +1,29 @@ + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml new file mode 100644 index 0000000..8d2de10 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml new file mode 100644 index 0000000..8f01326 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml @@ -0,0 +1,26 @@ + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml new file mode 100644 index 0000000..3e28b39 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml @@ -0,0 +1,56 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java new file mode 100644 index 0000000..f63c19c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 报警记录表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusAlarmService extends IService { + + boolean alarmUpload(AlarmUpload alarmUpload); + + Page listPage(Page page,QueryWrapper queryWrapper); + + List alarmCount(Long projectId,String alarmStatus); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java new file mode 100644 index 0000000..b1187ed --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 事件图片表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusEventImageService extends IService { + + boolean saveBusEventImages(Long eventId, List imageList); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java new file mode 100644 index 0000000..85c48d0 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 事件表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusEventService extends IService { + + boolean saveBusEvent(BusEvent busEvent); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java new file mode 100644 index 0000000..6fc5361 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 设备扩展信息表(安全树) 服务类 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface IDeviceExtService extends IService { + + boolean saveDeviceExt(DeviceDetailDTO deviceDetailDTO); + + boolean updateDeviceExt(DeviceDetailDTO deviceDetailDTO); + + boolean removeByDeviceIds(List deviceIds); + + boolean setGasThreshold(String gasIp,String gasPort,String threshold); + + String getGasThreshold(String gasIp,String gasPort); + + Long selectByGasIpPort(String gasIp,String gasPort); + + Long selectByCameraIpPort(String cameraIp,String cameraPort); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java new file mode 100644 index 0000000..9e62756 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java @@ -0,0 +1,32 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IDeviceService extends IService { + + boolean saveDevice(DeviceDetailDTO deviceDetailDTO); + + boolean updateDevice(DeviceDetailDTO deviceDetailDTO); + + boolean deleteDevices(List deviceIds); + + Page listPage(Page page, QueryWrapper queryWrapper, String status,Long projectId); + + List selectProjectDevice(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java new file mode 100644 index 0000000..8599411 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IProjectDeviceService extends IService { + + boolean saveProjectDeviceList(Long projectId, List projectDeviceList); + + boolean updateProjectDeviceList(Long projectId, List projectDeviceList); + + boolean deleteByProjectId(Long projectId); + + boolean deleteByProjectIds(List projectIds); + + List selectDetailByProjectId(Long projectId); + + Long selectProjectIdByDevice(Long deviceId); + + List selectDeviceLocationList(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java new file mode 100644 index 0000000..e921bc3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IProjectWorkerService extends IService { + + boolean saveProjectWorkerList(Long projectId, List projectWorkerList); + + boolean updateProjectWorkerList(Long projectId, List projectWorkerList); + + boolean deleteByProjectId(Long projectId); + + boolean deleteByProjectIds(List projectIds); + + List selectDetailByProjectId(Long projectId,String workerType); + + List selectWorkerLocationDTO(Long projectId); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java new file mode 100644 index 0000000..58a8590 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; +/** + *

+ * 作业现场表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IWorkSiteInfoService extends IService { + + boolean addWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO); + + boolean updateWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO); + + boolean deleteProjects(List projectIds); + + WorkSiteDetailDTO getWorkSiteDetail(Long projectId); + + Page selectListPage(Page page, QueryWrapper queryWrapper); + + boolean start(Long projectId); + + boolean finish(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java new file mode 100644 index 0000000..6c6ee98 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.extension.service.IService; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IWorkerService extends IService { + + boolean addWorker(Worker worker,Long projectId); + + Page selectListPage(Page page,QueryWrapper ew); + + Worker selectWorkerDetail(Long workerId); + + List faceRegister(String cameraIp,String cameraPort); + + List projectTempWorker(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java new file mode 100644 index 0000000..b44de1d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.consts.AlarmTypeEnum; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.entity.DataTreeLocation; +import com.casic.missiles.modular.system.mapper.BusAlarmMapper; +import com.casic.missiles.modular.system.service.*; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +/** + *

+ * 报警记录表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +@Slf4j +public class BusAlarmServiceImpl extends ServiceImpl implements IBusAlarmService { + + private final IDeviceExtService deviceExtService; + private final IDeviceService deviceService; + private final IProjectDeviceService projectDeviceService; + + private final ICasicFileService fileService; + + private final AbstractDictService dictService; + private final IDataSupportService dataSupportService; + + @Override + @Transactional + public boolean alarmUpload(AlarmUpload alarmUpload) { + log.info("alarm upload ==> {}",alarmUpload.toString()); + Long deviceId = null; + if(StrUtil.isAllNotBlank(alarmUpload.getGasIp(),alarmUpload.getGasPort())){ + deviceId = deviceExtService.selectByGasIpPort(alarmUpload.getGasIp(),alarmUpload.getGasPort()); + } + if(ObjectUtil.isEmpty(deviceId) && StrUtil.isAllNotBlank(alarmUpload.getCameraIp(),alarmUpload.getCameraPort())){ + deviceId = deviceExtService.selectByCameraIpPort(alarmUpload.getCameraIp(),alarmUpload.getCameraPort()); + } + + if(ObjectUtil.isEmpty(deviceId)){ + return false; + } + + BusAlarm alarm = new BusAlarm(); + alarm.setDeviceId(deviceId); + alarm.setProjectId(projectDeviceService.selectProjectIdByDevice(deviceId)); + alarm.setAlarmValue(alarmUpload.getAlarmValue()); + if(StrUtil.isNotEmpty(alarmUpload.getAlarmTime())){ + alarm.setAlarmTime(DateUtil.parseDateTime(alarmUpload.getAlarmTime())); + }else { + alarm.setAlarmTime(new Date()); + } + + alarm.setAlarmType(alarmUpload.getAlarmType()); + alarm.setAlarmContent(alarmUpload.getAlarmContent()); + if(StrUtil.isNotEmpty(alarmUpload.getAlarmImage())){ + String imgBase64 = "data:image/jpeg;base64," + alarmUpload.getAlarmImage(); + String imageUrl = fileService.saveFile(imgBase64); + alarm.setAlarmImage(imageUrl); + } + alarm.setAlarmStatus(ALARM_STATUS_ON); + + DataTreeLocation treeLocation = dataSupportService.getTreeLocation(deviceId); + if(ObjectUtil.isNotEmpty(treeLocation)){ + alarm.setAlarmLng(treeLocation.getGdLng()); + alarm.setAlarmLat(treeLocation.getGdLat()); + } + + //自动消警 + AlarmTypeEnum alarmTypeEnum = AlarmTypeEnum.getByAlarmType(alarm.getAlarmType()); + if(ObjectUtil.isNotEmpty(alarmTypeEnum) && alarmTypeEnum.isAutoCancel()){ + this.baseMapper.cancelAlarm(deviceId,alarm.getAlarmType()); + } + return this.save(alarm); + } + + @Override + public Page listPage(Page page, QueryWrapper queryWrapper) { + page = this.baseMapper.listPage(page, queryWrapper); + for (BusAlarm alarm : page.getRecords()) { + alarm.setAlarmTypeName(dictService.getDictNameByCode("alarmType",alarm.getAlarmType())); + alarm.setAlarmStatusName(dictService.getDictNameByCode("alarmStatus",alarm.getAlarmStatus())); + if(StrUtil.isNotEmpty(alarm.getProjectState())){ + alarm.setProjectStateName(dictService.getDictNameByCode("projectStatus",alarm.getProjectState())); + } + } + return page; + } + + @Override + public List alarmCount(Long projectId, String alarmStatus) { + List list = this.baseMapper.alarmCount(projectId, alarmStatus); + list = list.stream().filter(i->StrUtil.isNotEmpty(i.getAlarmType())).collect(Collectors.toList()); + for (AlarmTypeCountDTO countDTO : list) { + countDTO.setAlarmTypeName(dictService.getDictNameByCode("alarmType",countDTO.getAlarmType())); + } + return list; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java new file mode 100644 index 0000000..a43f7c1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.casic.missiles.modular.system.mapper.BusEventImageMapper; +import com.casic.missiles.modular.system.service.IBusEventImageService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 事件图片表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +public class BusEventImageServiceImpl extends ServiceImpl implements IBusEventImageService { + + @Override + public boolean saveBusEventImages(Long eventId, List imageList) { + imageList.forEach(i->i.setEventId(eventId)); + return this.saveBatch(imageList); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java new file mode 100644 index 0000000..21e511c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java @@ -0,0 +1,39 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.mapper.BusEventMapper; +import com.casic.missiles.modular.system.service.IBusEventImageService; +import com.casic.missiles.modular.system.service.IBusEventService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; + +/** + *

+ * 事件表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class BusEventServiceImpl extends ServiceImpl implements IBusEventService { + + private final IBusEventImageService busEventImageService; + + + @Override + @Transactional + public boolean saveBusEvent(BusEvent busEvent) { + busEvent.setCreateTime(new Date()); + boolean res = this.save(busEvent); + if(res){ + res = busEventImageService.saveBusEventImages(busEvent.getId(),busEvent.getImageList()); + } + return res; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java new file mode 100644 index 0000000..2bdb63d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java @@ -0,0 +1,102 @@ +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.core.conditions.update.UpdateWrapper; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.casic.missiles.modular.system.mapper.DeviceExtMapper; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 设备扩展信息表(安全树) 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Service +public class DeviceExtServiceImpl extends ServiceImpl implements IDeviceExtService { + + + @Override + public boolean saveDeviceExt(DeviceDetailDTO deviceDetailDTO) { + DeviceExt ext = new DeviceExt(); + ext.setDeviceId(deviceDetailDTO.getId()); + ext.setCameraCode(deviceDetailDTO.getCameraCode()); + ext.setCameraIp(deviceDetailDTO.getCameraIp()); + ext.setCameraPort(deviceDetailDTO.getCameraPort()); + ext.setGasCode(deviceDetailDTO.getGasCode()); + ext.setGasIp(deviceDetailDTO.getGasIp()); + ext.setGasPort(deviceDetailDTO.getGasPort()); + ext.setHatLiningCode(deviceDetailDTO.getHatLiningCode()); + return this.save(ext); + } + + @Override + public boolean updateDeviceExt(DeviceDetailDTO deviceDetailDTO) { + DeviceExt ext = this.selectByDeviceId(deviceDetailDTO.getId()); + ext.setCameraCode(deviceDetailDTO.getCameraCode()); + ext.setCameraIp(deviceDetailDTO.getCameraIp()); + ext.setCameraPort(deviceDetailDTO.getCameraPort()); + ext.setGasCode(deviceDetailDTO.getGasCode()); + ext.setGasIp(deviceDetailDTO.getGasIp()); + ext.setGasPort(deviceDetailDTO.getGasPort()); + ext.setHatLiningCode(deviceDetailDTO.getHatLiningCode()); + return this.updateById(ext); + } + + @Override + public boolean removeByDeviceIds(List deviceIds) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("DEVICE_ID",deviceIds); + return this.remove(queryWrapper); + } + + @Override + public boolean setGasThreshold(String gasIp, String gasPort, String threshold) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.set("GAS_THRESHOLD",threshold); + updateWrapper.eq("GAS_IP",gasIp); + updateWrapper.eq("GAS_PORT",gasPort); + return this.update(updateWrapper); + } + + @Override + public String getGasThreshold(String gasIp, String gasPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("GAS_IP",gasIp); + queryWrapper.eq("GAS_PORT",gasPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getGasThreshold() : null; + } + + private DeviceExt selectByDeviceId(Long deviceId){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVICE_ID",deviceId); + return this.getOne(queryWrapper); + } + + @Override + public Long selectByGasIpPort(String gasIp, String gasPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("GAS_IP",gasIp); + queryWrapper.eq("GAS_PORT",gasPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getDeviceId() : null; + } + + @Override + public Long selectByCameraIpPort(String cameraIp, String cameraPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("CAMERA_IP",cameraIp); + queryWrapper.eq("CAMERA_PORT",cameraPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getDeviceId() : null; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java new file mode 100644 index 0000000..9df79ef --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.mapper.DeviceMapper; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.modular.system.consts.DeviceConst.*; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class DeviceServiceImpl extends ServiceImpl implements IDeviceService { + + private final AbstractDictService dictService; + private final IDeviceExtService deviceExtService; + + private final IProjectDeviceService projectDeviceService; + + @Transactional + @Override + public boolean saveDevice(DeviceDetailDTO deviceDetailDTO) { + deviceDetailDTO.setCreateTime(new Date()); + boolean deviceRes = this.save(deviceDetailDTO); + if(deviceRes && DEVICE_TYPE_TREE.equals(deviceDetailDTO.getDeviceType())){ + deviceRes = deviceExtService.saveDeviceExt(deviceDetailDTO); + } + return deviceRes; + } + + @Transactional + @Override + public boolean updateDevice(DeviceDetailDTO deviceDetailDTO) { + boolean deviceRes = this.updateById(deviceDetailDTO); + if(deviceRes && DEVICE_TYPE_TREE.equals(deviceDetailDTO.getDeviceType())){ + deviceRes = deviceExtService.updateDeviceExt(deviceDetailDTO); + } + return deviceRes; + } + + @Transactional + @Override + public boolean deleteDevices(List deviceIds) { + return this.removeByIds(deviceIds) & deviceExtService.removeByDeviceIds(deviceIds); + } + + @Override + public Page listPage(Page page, QueryWrapper queryWrapper,String status,Long projectId) { + String ID_COLUMN_NAME = "br_device.ID"; + List useDevices = this.selectProjectDevice(null); + List projectDevices; + if(ObjectUtil.isNotEmpty(projectId)){ + projectDevices = this.selectProjectDevice(projectId); + } else { + projectDevices = null; + } + + // 查询使用中的设备(如果传了 projectId,查询 使用中&&此现场) + if(DEVICE_STATUS_USE.equals(status)){ + if(CollUtil.isEmpty(useDevices)){ + return page; + } + if(ObjectUtil.isNotEmpty(projectId) && CollUtil.isEmpty(projectDevices)){ + return page; + } + queryWrapper.in(ID_COLUMN_NAME,useDevices); + if(CollUtil.isNotEmpty(projectDevices)){ + queryWrapper.in(ID_COLUMN_NAME,projectDevices); + } + + } + + // 查询未使用的设备(如果传了 projectId,查询 未使用||此现场) + if(DEVICE_STATUS_NORMAL.equals(status)) { + if (CollUtil.isNotEmpty(useDevices)) { + if (CollUtil.isEmpty(projectDevices)) { + queryWrapper.notIn(ID_COLUMN_NAME, useDevices); + } else { + queryWrapper.and(i -> i.notIn(ID_COLUMN_NAME, useDevices).or().in(ID_COLUMN_NAME, projectDevices)); + } + } + } + + page = this.baseMapper.listDetailPage(page, queryWrapper); + for (DeviceDetailDTO record : page.getRecords()) { + record.setDeviceTypeName(dictService.getDictNameByCode("deviceType",record.getDeviceType())); + record.setIsPowerSupplyName(dictService.getDictNameByCode("isPowerSupply",record.getIsPowerSupply())); + record.setRegisterTime(DateUtil.formatDate(record.getCreateTime())); + record.setStatus(useDevices.contains(record.getId()) ? DEVICE_STATUS_USE : DEVICE_STATUS_NORMAL); + record.setStatusName(dictService.getDictNameByCode("deviceStatus",record.getStatus())); + } + return page; + } + + @Override + public List selectProjectDevice(Long projectId) { + return this.baseMapper.selectProjectDevice(projectId); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceSupportServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceSupportServiceImpl.java new file mode 100644 index 0000000..ffd01ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceSupportServiceImpl.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.mapper.DeviceMapper; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceSupportService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; + +import static com.casic.missiles.modular.system.consts.DeviceConst.DEVICE_TYPE_HAT; + +@Service +@RequiredArgsConstructor +public class DeviceSupportServiceImpl implements IDeviceSupportService { + + private final IDeviceExtService deviceExtService; + + private final DeviceMapper deviceMapper; + + @Override + public Long selectByGasIpPort(String gasIp, String gasPort) { + return deviceExtService.selectByGasIpPort(gasIp, gasPort); + } + + @Override + public List selectHelmetList() { + return deviceMapper.selectHelmetList(DEVICE_TYPE_HAT); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectDeviceServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectDeviceServiceImpl.java new file mode 100644 index 0000000..965f55c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectDeviceServiceImpl.java @@ -0,0 +1,96 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.DataGas; +import com.casic.missiles.modular.system.entity.DataTreeLocation; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.mapper.ProjectDeviceMapper; +import com.casic.missiles.modular.system.service.IDataSupportService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.utils.LngLatUtil; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.stream.Collectors; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class ProjectDeviceServiceImpl extends ServiceImpl implements IProjectDeviceService { + + private final IDataSupportService dataSupportService; + + @Override + public boolean saveProjectDeviceList(Long projectId, List projectDeviceList) { + projectDeviceList.forEach(i->i.setProjectId(projectId)); + return this.saveBatch(projectDeviceList); + } + + @Transactional + @Override + public boolean updateProjectDeviceList(Long projectId, List projectDeviceList) { + return this.deleteByProjectId(projectId) && this.saveProjectDeviceList(projectId, projectDeviceList); + } + + @Override + public boolean deleteByProjectId(Long projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("PROJECT_ID",projectId); + return this.remove(queryWrapper); + } + + @Override + public boolean deleteByProjectIds(List projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("PROJECT_ID",projectId); + return this.remove(queryWrapper); + } + + @Override + public List selectDetailByProjectId(Long projectId) { + return this.baseMapper.selectDetailByProjectId(projectId); + } + + @Override + public Long selectProjectIdByDevice(Long deviceId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVICE_ID",deviceId); + queryWrapper.exists("(select Id FROM br_work_site_info p where p.ID = br_project_device.PROJECT_ID AND p.PROJECT_STATE != '3')"); + ProjectDevice projectDevice = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(projectDevice) ? projectDevice.getProjectId() : null; + } + + @Override + public List selectDeviceLocationList(Long projectId) { + List list = this.baseMapper.selectDeviceLocationList(projectId); + for (DeviceLocationDTO locationDTO : list) { + DataGas dataGas = dataSupportService.getGasData(locationDTO.getDeviceId()); + DataTreeLocation location = dataSupportService.getTreeLocation(locationDTO.getDeviceId(),true); + if(ObjectUtil.isNotEmpty(dataGas)){ + locationDTO.setGasValue(dataGas.getGasValue()); + locationDTO.setTime(DateUtil.formatDateTime(dataGas.getTs())); + } + if(ObjectUtil.isNotEmpty(location)){ + locationDTO.setLng(location.getGdLng()); + locationDTO.setLat(location.getGdLat()); + locationDTO.setLocation(location.getLocation()); + } + } + list = list.stream().filter(i-> StrUtil.isAllNotEmpty(i.getLng(),i.getLat())).collect(Collectors.toList()); + return LngLatUtil.sort(list); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectWorkerServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectWorkerServiceImpl.java new file mode 100644 index 0000000..c3ec86c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectWorkerServiceImpl.java @@ -0,0 +1,101 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.DataHelmetHealth; +import com.casic.missiles.modular.system.entity.DataHelmetLocation; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.mapper.ProjectWorkerMapper; +import com.casic.missiles.modular.system.service.IHelmetSupportService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.system.consts.ProjectConst.WORKER_TYPE_NORMAL; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class ProjectWorkerServiceImpl extends ServiceImpl implements IProjectWorkerService { + + private final AbstractDeptService deptService; + private final IHelmetSupportService helmetSupportService; + + @Override + public boolean saveProjectWorkerList(Long projectId, List projectWorkerList) { + projectWorkerList.forEach(i->i.setProjectId(projectId)); + return this.saveBatch(projectWorkerList); + } + + @Transactional + @Override + public boolean updateProjectWorkerList(Long projectId, List projectWorkerList) { + return this.deleteByProjectId(projectId) && this.saveProjectWorkerList(projectId, projectWorkerList) ; + } + + @Override + public boolean deleteByProjectId(Long projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("PROJECT_ID",projectId); + return this.remove(queryWrapper); + } + + @Override + public boolean deleteByProjectIds(List projectIds) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("PROJECT_ID",projectIds); + return this.remove(queryWrapper); + } + + + @Override + public List selectDetailByProjectId(Long projectId,String workerType) { + List projectWorkerList = this.baseMapper.selectDetailByProjectId(projectId,workerType); + for (ProjectWorker projectWorker : projectWorkerList) { + if(ObjectUtil.isNotEmpty(projectWorker.getWorkerDeptId())){ + projectWorker.setWorkerDeptName(deptService.getDeptName(projectWorker.getWorkerDeptId())); + } + } + return projectWorkerList; + } + + @Override + public List selectWorkerLocationDTO(Long projectId) { + List projectWorkerList = this.baseMapper.selectWorkerLocationList(projectId,WORKER_TYPE_NORMAL); + for (WorkerLocationDTO workerLocationDTO : projectWorkerList) { + if(ObjectUtil.isNotEmpty(workerLocationDTO.getHatId())){ + DataHelmetLocation location = helmetSupportService.getHelmetLocation(workerLocationDTO.getHatId(),true); + if(ObjectUtil.isNotEmpty(location)){ + workerLocationDTO.setLng(location.getGdLng()); + workerLocationDTO.setLat(location.getGdLat()); + workerLocationDTO.setLocation(location.getLocation()); + } + + DataHelmetHealth health = helmetSupportService.getHelmetHealth(workerLocationDTO.getHatId()); + if(ObjectUtil.isNotEmpty(health)){ + workerLocationDTO.setBloodOxygen(health.getBloodOxygen()); + workerLocationDTO.setHeartRate(health.getHeartRate()); + workerLocationDTO.setTime(DateUtil.formatDateTime(health.getTs())); + } + } + } + projectWorkerList = projectWorkerList.stream().filter(i-> StrUtil.isAllNotEmpty(i.getLng(),i.getLat())).collect(Collectors.toList()); + return projectWorkerList; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkSiteInfoServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkSiteInfoServiceImpl.java new file mode 100644 index 0000000..5068da2 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkSiteInfoServiceImpl.java @@ -0,0 +1,151 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.mapper.WorkSiteInfoMapper; +import com.casic.missiles.modular.system.service.*; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.system.consts.ProjectConst.*; + +/** + *

+ * 作业现场表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class WorkSiteInfoServiceImpl extends ServiceImpl implements IWorkSiteInfoService { + + private final IProjectWorkerService projectWorkerService; + private final IProjectDeviceService projectDeviceService; + + private final IWorkerService workerService; + private final IBraceletService braceletService; + + private final AbstractDeptService deptService; + private final AbstractDictService dictService; + @Override + @Transactional + public boolean addWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO) { + workSiteDetailDTO.setCreateTime(new Date()); + workSiteDetailDTO.setUpdateTime(new Date()); + workSiteDetailDTO.setProjectState(PROJECT_STATE_PREPARE); + boolean res = this.save(workSiteDetailDTO); + if(res){ + res = projectDeviceService.saveProjectDeviceList(workSiteDetailDTO.getId(), workSiteDetailDTO.getDeviceList()); + res = res & projectWorkerService.saveProjectWorkerList(workSiteDetailDTO.getId(), workSiteDetailDTO.getWorkerList()); + } + return res; + } + + @Override + @Transactional + public boolean updateWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO) { + workSiteDetailDTO.setUpdateTime(new Date()); + boolean res = this.updateById(workSiteDetailDTO); + if(res){ + res = projectDeviceService.updateProjectDeviceList(workSiteDetailDTO.getId(), workSiteDetailDTO.getDeviceList()); + res = res & projectWorkerService.updateProjectWorkerList(workSiteDetailDTO.getId(), workSiteDetailDTO.getWorkerList()); + } + return res; + } + + @Override + public boolean deleteProjects(List projectIds) { + if(CollUtil.isNotEmpty(projectIds)) { + projectDeviceService.deleteByProjectIds(projectIds); + projectWorkerService.deleteByProjectIds(projectIds); + return this.removeByIds(projectIds); + } + return true; + } + + @Override + public WorkSiteDetailDTO getWorkSiteDetail(Long projectId) { + WorkSiteInfo workSiteInfo = this.getById(projectId); + WorkSiteDetailDTO workSiteDetailDTO = new WorkSiteDetailDTO(); + BeanUtil.copyProperties(workSiteInfo,workSiteDetailDTO,true); + workSiteDetailDTO.setDeviceList(projectDeviceService.selectDetailByProjectId(projectId)); + workSiteDetailDTO.setWorkerList(projectWorkerService.selectDetailByProjectId(projectId,WORKER_TYPE_NORMAL)); + + Worker responseWorker = workerService.selectWorkerDetail(workSiteDetailDTO.getWorkPerson()); + if(ObjectUtil.isNotEmpty(responseWorker)){ + workSiteDetailDTO.setWorkPersonName(responseWorker.getWorkerName()); + workSiteDetailDTO.setWorkPersonPhoneNumber(responseWorker.getPhoneNumber()); + workSiteDetailDTO.setWorkPersonDeptId(responseWorker.getDeptId()); + workSiteDetailDTO.setWorkPersonDeptName(responseWorker.getDeptName()); + } + return workSiteDetailDTO; + } + + @Override + public Page selectListPage(Page page, QueryWrapper queryWrapper) { + page = this.baseMapper.selectListPage(page, queryWrapper); + for (WorkSiteInfo workSiteInfo : page.getRecords()) { + workSiteInfo.setProjectStateName(dictService.getDictNameByCode("projectState", workSiteInfo.getProjectState())); + if(ObjectUtil.isNotEmpty(workSiteInfo.getWorkPersonDeptId())){ + workSiteInfo.setWorkPersonDeptName(deptService.getDeptName(workSiteInfo.getWorkPersonDeptId())); + } + workSiteInfo.setRegisterTime(DateUtil.formatDate(workSiteInfo.getCreateTime())); + } + return page; + } + + @Override + public boolean start(Long projectId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",projectId); + updateWrapper.set("PROJECT_STATE",PROJECT_STATE_WORKING); + updateWrapper.set("START_TIME",new Date()); + boolean res = this.update(updateWrapper); + //braceletService.enableBracelet(selectProjectBracelets(projectId)); + return res; + } + + @Override + public boolean finish(Long projectId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",projectId); + updateWrapper.set("PROJECT_STATE",PROJECT_STATE_FINISH); + updateWrapper.set("FINISH_TIME",new Date()); + boolean res = this.update(updateWrapper); + //braceletService.disableBracelet(selectProjectBracelets(projectId)); + return res; + } + + private List selectProjectBracelets(Long projectId){ + List deviceCodes = new ArrayList<>(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("PROJECT_ID",projectId); + queryWrapper.isNotNull("BRACELET_CODE"); + queryWrapper.select("BRACELET_CODE"); + List res = projectWorkerService.listObjs(queryWrapper); + if(CollUtil.isNotEmpty(res)){ + deviceCodes = res.stream().map(Object::toString).distinct().collect(Collectors.toList()); + } + return deviceCodes; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkerServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkerServiceImpl.java new file mode 100644 index 0000000..6859cff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkerServiceImpl.java @@ -0,0 +1,110 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.mapper.WorkerMapper; +import com.casic.missiles.modular.system.service.*; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.modular.system.consts.ProjectConst.WORKER_TYPE_TEMP; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class WorkerServiceImpl extends ServiceImpl implements IWorkerService { + + private final IProjectWorkerService projectWorkerService; + + private final IProjectDeviceService projectDeviceService; + private final AbstractDictService dictService; + private final AbstractDeptService deptService; + private final IDeviceExtService deviceExtService; + + @Override + @Transactional + public boolean addWorker(Worker worker, Long projectId) { + worker.setCreateTime(new Date()); + boolean res = this.save(worker); + if(res && ObjectUtil.isNotEmpty(projectId)){ + res = projectWorkerService.save(new ProjectWorker(projectId, worker.getId())); + if(ObjectUtil.isNotEmpty(worker.getWorkerAvatar())){ + // todo 向一体机推送人脸图片 + } + } + return res; + } + + @Override + public Page selectListPage(Page page, QueryWrapper ew) { + page = this.baseMapper.selectListPage(page, ew); + for (Worker worker : page.getRecords()) { + wrapperWorker(worker); + } + return page; + } + + private void wrapperWorker(Worker worker) { + if(StrUtil.isNotEmpty(worker.getGender())){ + worker.setGenderName(dictService.getDictNameByCode("sysSex", worker.getGender())); + } + if(ObjectUtil.isNotEmpty(worker.getDeptId())){ + worker.setDeptName(deptService.getDeptName(worker.getDeptId())); + } + worker.setRegisterTime(DateUtil.formatDate(worker.getCreateTime())); + if(StrUtil.isNotEmpty(worker.getStatus())){ + worker.setStatusName(dictService.getDictNameByCode("workerStatus", worker.getStatus())); + } + } + + @Override + public Worker selectWorkerDetail(Long workerId) { + Worker worker = this.getById(workerId); + if(ObjectUtil.isNotEmpty(worker)){ + wrapperWorker(worker); + } + return worker; + } + + @Override + public List faceRegister(String cameraIp, String cameraPort) { + Long deviceId = deviceExtService.selectByCameraIpPort(cameraIp, cameraPort); + if(ObjectUtil.isNotEmpty(deviceId)){ + Long projectId = projectDeviceService.selectProjectIdByDevice(deviceId); + if(ObjectUtil.isNotEmpty(projectId)){ + return this.baseMapper.selectWorkerAvatars(projectId); + } + } + return null; + } + + @Override + public List projectTempWorker(Long projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("WORKER_TYPE",WORKER_TYPE_TEMP); + queryWrapper.exists("(select ID FROM br_project_worker WHERE PROJECT_ID = "+ projectId +")"); + List workers = this.list(queryWrapper); + workers.forEach(this::wrapperWorker); + return workers; + } +} diff --git a/casic_video_283_web/pom.xml b/casic_video_283_web/pom.xml new file mode 100644 index 0000000..feace49 --- /dev/null +++ b/casic_video_283_web/pom.xml @@ -0,0 +1,166 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + casic_video_283_web + 1.0.0 + jar + casic_video_283_web + casic web启动入口 + + + + dev + + true + + + dev + + + + test + + test + + + + prod + + prod + + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-actuator + + + io.micrometer + micrometer-core + + + + + org.springframework.boot + spring-boot-starter-jdbc + + + + com.casic + casic-core + ${core.version} + + + com.casic + casic-admin-core + ${admin.version} + + + io.springfox + springfox-swagger-ui + + + + + com.casic + casic-admin-support + ${admin.version} + + + mysql + mysql-connector-java + ${mysql.driver.version} + + + com.casic + casic-area-starter + ${admin.version} + + + + com.casic + casic_video_283_server + ${pro.version} + + + + org.springframework.boot + spring-boot-starter-tomcat + + + + + casic_video_283_web-${pro.version} + + + org.apache.maven.plugins + maven-jar-plugin + ${maven.jar.plugin.version} + + + + /config/*-*.yml + **/MockController.class + + + + com.casic.missiles.CasicApplication + true + ./ + + + + + + org.apache.maven.plugins + maven-assembly-plugin + ${maven.assembly.plugin.version} + + + make-assembly + package + + single + + + + + + org.apache.maven.plugins + maven-war-plugin + ${maven.war.plugin.version} + + + + + src/main/resources + + + /config/*/* + /config/*-*.yml + + true + + + src/main/java + + **/*.xml + + true + + + + \ No newline at end of file diff --git a/casic_video_283_web/src/main/build/bin/start.bat b/casic_video_283_web/src/main/build/bin/start.bat new file mode 100644 index 0000000..1db4e88 --- /dev/null +++ b/casic_video_283_web/src/main/build/bin/start.bat @@ -0,0 +1,4 @@ +@echo off +title ${project.build.finalName} +java -jar ./lib/${project.build.finalName}.jar +@pause diff --git a/casic_video_283_web/src/main/build/bin/start.sh b/casic_video_283_web/src/main/build/bin/start.sh new file mode 100644 index 0000000..1cc33fc --- /dev/null +++ b/casic_video_283_web/src/main/build/bin/start.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +jar_name="${project.build.finalName}.jar" +echo "starting $jar_name ..." + +PID=$(ps -ef | grep ${jar_name} | grep -v grep | awk '{print $2}') + +OLD_IFS="$IFS" +IFS="," +PIDARR=($PID) +IFS="$OLD_IFS" + +if [ ! $PID ]; then + echo "process ${jar_name} not exit" +else + echo "process id: $PID" + + kill -9 ${PID} + + if [ $? -eq 0 ]; then + echo "kill ${jar_name} success" + else + echo "kill ${jar_name} fail" + exit + fi +fi + + + +nohup java -jar ./lib/${jar_name} >/dev/null 2>log & +echo "start ${jar_name} ..." \ No newline at end of file diff --git a/casic_video_283_web/src/main/build/package.xml b/casic_video_283_web/src/main/build/package.xml new file mode 100644 index 0000000..c9259ad --- /dev/null +++ b/casic_video_283_web/src/main/build/package.xml @@ -0,0 +1,43 @@ + + + package + + zip + tar.gz + + true + + + + true + true + lib + runtime + + + + + src/main/build/bin + + start.bat + start.sh + + true + 0744 + / + + + src/main/resources/config + true + + *.yml + /*/* + + /config + + + src/main/resources/i18n + / + + + \ No newline at end of file diff --git a/casic_video_283_web/src/main/java/com/casic/missiles/CasicApplication.java b/casic_video_283_web/src/main/java/com/casic/missiles/CasicApplication.java new file mode 100644 index 0000000..7b8791f --- /dev/null +++ b/casic_video_283_web/src/main/java/com/casic/missiles/CasicApplication.java @@ -0,0 +1,35 @@ +package com.casic.missiles; + +import lombok.extern.slf4j.Slf4j; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.web.servlet.ServletComponentScan; +import org.springframework.cache.annotation.EnableCaching; +import org.springframework.scheduling.annotation.EnableAsync; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +/** + * SpringBoot方式启动类 + * + * @author lwh + * @Date 2021/06/06 12:06 + */ +@SpringBootApplication +@EnableCaching +@EnableTransactionManagement(proxyTargetClass = true) +@EnableAsync +@Slf4j +@MapperScan(value = "com.casic.missiles.modular.system.mapper") +public class CasicApplication { + + static { + System.setProperty("druid.mysql.usePingMethod","false"); + } + + public static void main(String[] args) { + SpringApplication.run(CasicApplication.class, args); + log.info("CasicApplication is success!"); + } + +} diff --git a/casic_video_283_web/src/main/java/com/casic/missiles/CasicServletInitializer.java b/casic_video_283_web/src/main/java/com/casic/missiles/CasicServletInitializer.java new file mode 100644 index 0000000..e30585b --- /dev/null +++ b/casic_video_283_web/src/main/java/com/casic/missiles/CasicServletInitializer.java @@ -0,0 +1,18 @@ +package com.casic.missiles; + +import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; + +/** + * Guns Web程序启动类 + * + * @author fengshuonan + * @date 2017-05-21 9:43 + */ +public class CasicServletInitializer extends SpringBootServletInitializer { + + @Override + protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { + return application.sources(CasicApplication.class); + } +} diff --git a/casic_video_283_web/src/main/java/com/casic/missiles/config/SwaggerConfig.java b/casic_video_283_web/src/main/java/com/casic/missiles/config/SwaggerConfig.java new file mode 100644 index 0000000..fd233d8 --- /dev/null +++ b/casic_video_283_web/src/main/java/com/casic/missiles/config/SwaggerConfig.java @@ -0,0 +1,40 @@ +package com.casic.missiles.config; + + +import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j; +import io.swagger.annotations.ApiOperation; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import springfox.documentation.builders.ApiInfoBuilder; +import springfox.documentation.builders.PathSelectors; +import springfox.documentation.builders.RequestHandlerSelectors; +import springfox.documentation.service.ApiInfo; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spring.web.plugins.Docket; +import springfox.documentation.swagger2.annotations.EnableSwagger2; + +@Configuration //声明该类为配置类 +@EnableSwagger2 //声明启动Swagger2 +@EnableKnife4j +public class SwaggerConfig{ + private ApiInfo apiInfo() { + return new ApiInfoBuilder() + .title("北燃四分二期接口文档")//文档说明 + .version("1.0.0")//文档版本说明 + .build(); + } + + @Bean + public Docket productApi() { + return new Docket(DocumentationType.SWAGGER_2) + .apiInfo(apiInfo()) + .select() + .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) //添加ApiOperiation注解的被扫描 + .paths(PathSelectors.any()) + .build(); + + } + + +} + diff --git a/casic_video_283_web/src/main/java/com/casic/missiles/controller/MockController.java b/casic_video_283_web/src/main/java/com/casic/missiles/controller/MockController.java new file mode 100644 index 0000000..eae6c54 --- /dev/null +++ b/casic_video_283_web/src/main/java/com/casic/missiles/controller/MockController.java @@ -0,0 +1,82 @@ +package com.casic.missiles.controller; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.application.enums.LoginType; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.model.auth.CasicCustomToken; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.response.SuccessResponseData; +import com.casic.missiles.modular.domain.constants.PermissionConstants; +import com.casic.missiles.modular.interfaces.log.LogManager; +import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; +import com.casic.missiles.modular.system.dto.LoginSuccessDTO; +import lombok.extern.slf4j.Slf4j; +import org.apache.shiro.subject.Subject; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.security.NoSuchAlgorithmException; +import java.util.Map; + +import static com.casic.missiles.core.util.HttpContext.getIp; + + +/** + * 仅为mock登录使用 + * + * @author lenovo + */ +@Controller +@RequestMapping("/route") +@Slf4j +public class MockController extends BaseController { + + /** + * 获取mockToken + */ + @GetMapping("/mockToken") + @ResponseBody + public Object mockToken(String username, String password) { + super.getSession().setAttribute(PermissionConstants.IS_APP, false); + SuccessResponseData resultData = new SuccessResponseData(); + if (StrUtil.hasEmpty(username, password)) { + username = "admin"; + password = "111111"; + } + Subject currentUser = ShiroKit.getSubject(); + + try { + Map key = RSAUtils.genKeyPair(); + ShiroKit.getSession().setAttribute(PermissionConstants.PRIVATE_KEY, key.get(RSAUtils.RSAPrivateKey)); + + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } + + //token自定义 + CasicCustomToken token = new CasicCustomToken(username, password); + token.setType(LoginType.PASSWORD); + token.setRememberMe(false); + + try { + currentUser.login(token); + } catch (Exception e) { + e.printStackTrace(); + } + AuthUser shiroUser = ShiroKit.getUser(); + super.getSession().setAttribute("shiroUser", shiroUser); + super.getSession().setAttribute("username", shiroUser.getAccount()); + super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); + + LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), getIp())); + + ShiroKit.getSession().setAttribute("sessionFlag", true); + resultData.setData(new LoginSuccessDTO(ShiroKit.getSession().getId().toString(), null)); + resultData.setMessage("登录成功"); + return resultData; + } +} diff --git a/casic_video_283_web/src/main/resources/META-INF/spring-devtools.properties b/casic_video_283_web/src/main/resources/META-INF/spring-devtools.properties new file mode 100644 index 0000000..e3b0a7f --- /dev/null +++ b/casic_video_283_web/src/main/resources/META-INF/spring-devtools.properties @@ -0,0 +1 @@ +restart.include.beetl=/beetl-2.7.15.jar \ No newline at end of file diff --git a/casic_video_283_web/src/main/resources/config/application-dev.yml b/casic_video_283_web/src/main/resources/config/application-dev.yml new file mode 100644 index 0000000..fea6255 --- /dev/null +++ b/casic_video_283_web/src/main/resources/config/application-dev.yml @@ -0,0 +1,31 @@ +server: + port: 8083 +################### spring配置 ################### +spring: + datasource: + url: jdbc:mysql://111.198.10.15:11336/casic_283?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=Asia/Shanghai&&allowMultiQueries=true + username: root + password: Casic203 + jms: + pub-sub-domain: true +# session: +# store-type: redis + redis: + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh +# serializer: org.springframework.data.redis.serializer.StringRedisSerializer +# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer +casic: + #kaptcha-open: false #是否开启登录时验证码 (true/false) + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/webjars/**,/swagger-ui.html,/swagger-resources + #flowable数据源和多数据源配置 + db: + init: + enable: false + file: + uploadPath: /casic/casic-gas-operation-file/ +logging: + level.root: info + level.com.casic: debug + level.org.springframework.web: info \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java new file mode 100644 index 0000000..73d7799 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.dto; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "AlarmUpload",description = "报警上传") +@Data +public class AlarmUpload { + + @ApiModelProperty(value = "摄像头ip") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + @ApiModelProperty(value = "安全树甲烷设备ip") + private String gasIp; + @ApiModelProperty(value = "安全树甲烷设备端口") + private String gasPort; + @ApiModelProperty(value = "报警值") + private String alarmValue; + @ApiModelProperty(value = "报警时间") + private String alarmTime; + @ApiModelProperty(value = "报警类型") + private String alarmType; + @ApiModelProperty(value = "报警图片") + private String alarmImage; + @ApiModelProperty(value = "报警内容") + private String alarmContent; + + @Override + public String toString() { + return "AlarmUpload{" + + "cameraIp='" + cameraIp + '\'' + + ", cameraPort='" + cameraPort + '\'' + + ", gasIp='" + gasIp + '\'' + + ", gasPort='" + gasPort + '\'' + + ", alarmValue='" + alarmValue + '\'' + + ", alarmTime='" + alarmTime + '\'' + + ", alarmType='" + alarmType + '\'' + + ", alarmImage='" + (StrUtil.isNotEmpty(alarmImage) ? alarmImage.substring(0,50) : "null") + '\'' + + ", alarmContent='" + alarmContent + '\'' + + '}'; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java new file mode 100644 index 0000000..ea518d9 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.modular.system.entity.Device; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("DeviceDetailDTO") +@Data +public class DeviceDetailDTO extends Device { + + @ApiModelProperty(value = "摄像头编号") + private String cameraCode; + + @ApiModelProperty(value = "摄像头IP") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + + @ApiModelProperty(value = "激甲编号") + private String gasCode; + + @ApiModelProperty(value = "激甲IP") + private String gasIp; + + @ApiModelProperty(value = "激甲端口") + private String gasPort; + + @ApiModelProperty(value = "智能帽衬编号") + private String hatLiningCode; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java new file mode 100644 index 0000000..29378ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("WorkSiteDetailDTO") +public class WorkSiteDetailDTO extends WorkSiteInfo { + + @ApiModelProperty(value = "安全树列表",dataType = "ProjectDevice") + private List deviceList; + + @ApiModelProperty(value = "人员列表",dataType = "ProjectWorker") + private List workerList; + + + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java new file mode 100644 index 0000000..6fd7b24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java @@ -0,0 +1,68 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "WorkerLocationDTO",description = "人员位置列表(首页)") +@Data +public class WorkerLocationDTO { + + @ApiModelProperty("人员ID") + private Long workerId; + + @ApiModelProperty("人员姓名") + private String workerName; + + @ApiModelProperty("安全帽编号") + private String hatCode; + + @ApiModelProperty("安全帽ID") + private Long hatId; + + @ApiModelProperty("背心编号") + private String vastCode; + + @ApiModelProperty("手环编号") + private String braceletCode; + + @ApiModelProperty("位置") + private String location; + + @ApiModelProperty("时间") + private String time; + + @ApiModelProperty("经度") + private String lng; + + @ApiModelProperty("纬度") + private String lat; + + @ApiModelProperty("心率") + private String heartRate; + + @ApiModelProperty("血氧") + private String bloodOxygen; + + @ApiModelProperty("一氧化碳") + private String co; + + @ApiModelProperty("甲烷") + private String gas; + + @ApiModelProperty("硫化氢") + private String h2s; + + @ApiModelProperty("氧气") + private String o2; + + @ApiModelProperty("信号") + private String signal; + + @ApiModelProperty("电量") + private String cell; + + @ApiModelProperty("是否报警") + private boolean alarmFlag; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java new file mode 100644 index 0000000..efb4a23 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java @@ -0,0 +1,159 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 报警记录表 + *

+ * + * @author zyj + * @since 2023-05-16 + */ +@Data +@ApiModel("Alarm") +@TableName("br_bus_alarm") +public class BusAlarm implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @ApiModelProperty(value = "设备ID") + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 报警类型 + */ + @ApiModelProperty(value = "报警类型") + @TableField("ALARM_TYPE") + private String alarmType; + + /** + * 报警状态 + */ + @ApiModelProperty(value = "报警状态") + @TableField("ALARM_STATUS") + private String alarmStatus; + + /** + * 报警值 + */ + @ApiModelProperty(value = "报警值") + @TableField("ALARM_VALUE") + private String alarmValue; + + /** + * 报警图片 + */ + @ApiModelProperty(value = "报警图片") + @TableField("ALARM_IMAGE") + private String alarmImage; + + /** + * 报警内容 + */ + @ApiModelProperty(value = "报警内容") + @TableField("ALARM_CONTENT") + private String alarmContent; + + /** + * 报警时间 + */ + @ApiModelProperty(value = "报警时间") + @TableField("ALARM_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date alarmTime; + + /** + * 消警时间 + */ + @ApiModelProperty(value = "消警时间") + @TableField("CANCEL_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + /** + * 报警位置经度 + */ + @ApiModelProperty(value = "报警位置经度") + @TableField("ALARM_LNG") + private String alarmLng; + + /** + * 报警位置纬度 + */ + @ApiModelProperty(value = "报警位置纬度") + @TableField("ALARM_LAT") + private String alarmLat; + + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmStatusName; + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmTypeName; + @ApiModelProperty("作业名称") + @TableField(exist = false) + private String workTitle; + @ApiModelProperty("所属道路") + @TableField(exist = false) + private String workRoad; + @ApiModelProperty("作业状态") + @TableField(exist = false) + private String projectState; + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + @ApiModelProperty("负责人姓名") + @TableField(exist = false) + private String workPersonName; + @ApiModelProperty("负责人联系方式") + @TableField(exist = false) + private String workPersonPhoneNumber; + + + @Override + public String toString() { + return "BusAlarm{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + ", alarmType=" + alarmType + + ", alarmValue=" + alarmValue + + ", alarmStatus=" + alarmStatus + + ", alarmImage=" + alarmImage + + ", alarmContent=" + alarmContent + + ", alarmTime=" + alarmTime + + ", cancelTime=" + cancelTime + + ", alarmLng=" + alarmLng + + ", alarmLat=" + alarmLat + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java new file mode 100644 index 0000000..a0b7543 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + *

+ * 事件表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event") +@Data +@ApiModel("BusEvent") +public class BusEvent implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("事件ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件标题 + */ + @ApiModelProperty("事件名称") + @TableField("EVENT_TITLE") + private String eventTitle; + + /** + * 上报人员 + */ + @ApiModelProperty("上报人员") + @TableField("UPLOAD_NAME") + private String uploadName; + + /** + * 联系方式 + */ + @ApiModelProperty("联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 事件描述 + */ + @ApiModelProperty("事件描述") + @TableField("EVENT_DESCRIPTION") + private String eventDescription; + + @ApiModelProperty("经度") + @TableField("LNG") + private String lng; + + @ApiModelProperty("纬度") + @TableField("LAT") + private String lat; + + /** + * 事件上传时间 + */ + @ApiModelProperty("事件上传时间") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty("事件照片") + @TableField(exist = false) + private List imageList; + + + + @Override + public String toString() { + return "BusEvent{" + + "id=" + id + + ", eventTitle=" + eventTitle + + ", uploadName=" + uploadName + + ", phoneNumber=" + phoneNumber + + ", eventDescription=" + eventDescription + + ", lng=" + lng + + ", lat=" + lat + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java new file mode 100644 index 0000000..1e75245 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 事件图片表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event_image") +@Data +@ApiModel("BusEventImage") +public class BusEventImage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件ID + */ + @TableField("EVENT_ID") + private Long eventId; + + /** + * 报警图片 + */ + @TableField("IMAGE") + @ApiModelProperty("图片url") + private String image; + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java new file mode 100644 index 0000000..df89c70 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.core.base.json.DateDeserializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Device") +@TableName("br_device") +@Data +public class Device implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "设备ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty(value = "设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + /** + * 设备类型 + */ + @ApiModelProperty(value = "设备类型") + @TableField("DEVICE_TYPE") + private String deviceType; + + /** + * 设备批次 + */ + @ApiModelProperty(value = "设备批次") + @TableField("DEVICE_BATCH") + private String deviceBatch; + + /** + * 厂家 + */ + @ApiModelProperty(value = "厂家") + @TableField("MANUFACTURER") + private String manufacturer; + + /** + * 是否供电 + */ + @ApiModelProperty(value = "是否供电") + @TableField("IS_POWER_SUPPLY") + private String isPowerSupply; + + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间",dataType = "Date") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty(value = "设备类型名称") + @TableField(exist = false) + private String deviceTypeName; + + @ApiModelProperty(value = "是否供电名称") + @TableField(exist = false) + private String isPowerSupplyName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", deviceCode=" + deviceCode + + ", deviceType=" + deviceType + + ", deviceBatch=" + deviceBatch + + ", manufacturer=" + manufacturer + + ", isPowerSupply=" + isPowerSupply + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java new file mode 100644 index 0000000..5ee7015 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java @@ -0,0 +1,99 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 设备扩展信息表(安全树) + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Data +@TableName("br_device_ext") +public class DeviceExt implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 摄像头编号 + */ + @TableField("CAMERA_CODE") + private String cameraCode; + + /** + * 摄像头IP + */ + @TableField("CAMERA_IP") + private String cameraIp; + + /** + * 摄像头端口 + */ + @TableField("CAMERA_PORT") + private String cameraPort; + + /** + * 激甲编号 + */ + @TableField("GAS_CODE") + private String gasCode; + + /** + * 激甲IP + */ + @TableField("GAS_IP") + private String gasIp; + + /** + * 激甲端口 + */ + @TableField("GAS_PORT") + private String gasPort; + + /** + * 甲烷报警阈值 + */ + @TableField("GAS_THRESHOLD") + private String gasThreshold; + + @TableField(value = "HAT_LINING_CODE") + private String hatLiningCode; + + + @Override + public String toString() { + return "DeviceExt{" + + "id=" + id + + ", deviceId=" + deviceId + + ", cameraCode=" + cameraCode + + ", cameraIp=" + cameraIp + + ", cameraPort=" + cameraPort + + ", gasCode=" + gasCode + + ", gasIp=" + gasIp + + ", gasPort=" + gasPort + + ", gasThreshold=" + gasThreshold + + ", hatLiningCode=" + hatLiningCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java new file mode 100644 index 0000000..c4f3472 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java @@ -0,0 +1,62 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Data +@ApiModel("ProjectDevice") +@TableName("br_project_device") +public class ProjectDevice implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + @ApiModelProperty("设备ID(新增编辑时传)") + private Long deviceId; + + /** + * 设备编号 + */ + @TableField(exist = false) + @ApiModelProperty("设备编号(详情中展示,新增编辑不用传)") + private String deviceCode; + + @Override + public String toString() { + return "ProjectDevice{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java new file mode 100644 index 0000000..10b23c4 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java @@ -0,0 +1,104 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("ProjectWorker") +@TableName("br_project_worker") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ProjectWorker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 人员ID + */ + @ApiModelProperty("人员ID") + @TableField("WORKER_ID") + private Long workerId; + + /** + * 安全帽编号 + */ + @ApiModelProperty("安全帽编号") + @TableField("HAT_CODE") + private String hatCode; + + /** + * 背心编号 + */ + @ApiModelProperty("背心编号") + @TableField("VAST_CODE") + private String vastCode; + + /** + * 手环编号 + */ + @ApiModelProperty("手环编号") + @TableField("BRACELET_CODE") + private String braceletCode; + + @ApiModelProperty("人员姓名(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerName; + + @ApiModelProperty("人员部门ID(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptId; + + @ApiModelProperty("人员部门名称(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptName; + + @ApiModelProperty("人员联系方式(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerPhoneNumber; + + public ProjectWorker(Long projectId, Long workerId) { + this.projectId = projectId; + this.workerId = workerId; + } + + @Override + public String toString() { + return "ProjectWorker{" + + "id=" + id + + ", projectId=" + projectId + + ", workerId=" + workerId + + ", hatCode=" + hatCode + + ", vastCode=" + vastCode + + ", braceletCode=" + braceletCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java new file mode 100644 index 0000000..fa6f41d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 作业现场表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("WorkSiteInfo") +@TableName("br_work_site_info") +@Data +public class WorkSiteInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("作业现场ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业名称 + */ + @ApiModelProperty("作业名称") + @TableField("WORK_TITLE") + private String workTitle; + + /** + * 责任人 + */ + @ApiModelProperty("责任人(人员ID)") + @TableField("WORK_PERSON") + private Long workPerson; + + /** + * 作业描述 + */ + @ApiModelProperty("作业描述") + @TableField("WORK_SITE_DESC") + private String workSiteDesc; + + /** + * 作业状态 + */ + @ApiModelProperty("作业状态") + @TableField("PROJECT_STATE") + private String projectState; + + /** + * 所属道路 + */ + @ApiModelProperty("所属道路") + @TableField("WORK_ROAD") + private String workRoad; + + @TableField("IMAGE_URL") + private String imageUrl; + + @TableField("CREATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + @TableField("UPDATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("FINISH_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + @ApiModelProperty("负责人姓名(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonName; + + @ApiModelProperty("负责人联系方式(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonPhoneNumber; + + @ApiModelProperty("负责人所属部门ID(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private Long workPersonDeptId; + + @ApiModelProperty("负责人所属部门名称(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonDeptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + + @Override + public String toString() { + return "WorkSiteInfo{" + + "id=" + id + + ", workTitle=" + workTitle + + ", workPerson=" + workPerson + + ", workSiteDesc=" + workSiteDesc + + ", projectState=" + projectState + + ", imageUrl=" + imageUrl + + ", updateTime=" + updateTime + + ", workRoad=" + workRoad + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java new file mode 100644 index 0000000..28a4daa --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java @@ -0,0 +1,147 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Worker") +@TableName("br_worker") +@Data +public class Worker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "人员ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 姓名 + */ + @ApiModelProperty(value = "姓名") + @TableField("WORKER_NAME") + private String workerName; + + /** + * 性别 + */ + @ApiModelProperty(value = "性别") + @TableField("GENDER") + private String gender; + + /** + * 所属部门 + */ + @ApiModelProperty(value = "所属部门(人员管理)") + @TableField("DEPT_ID") + private Long deptId; + + /** + * 所属单位 + */ + @ApiModelProperty(value = "所属单位(入场申请中使用)") + @TableField("OWNER_SHIP") + private String ownerShip; + + /** + * 联系方式 + */ + @ApiModelProperty(value = "联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 证件号 + */ + @ApiModelProperty(value = "证件号") + @TableField("ID_CARD_NUMBER") + private String idCardNumber; + + /** + * 入场原因 + */ + @ApiModelProperty(value = "入场原因(入场申请中使用)") + @TableField("ENTER_REASON") + private String enterReason; + + /** + * 入场人脸照片 + */ + @ApiModelProperty(value = "人脸照片(照片路径)") + @TableField("WORKER_AVATAR") + private String workerAvatar; + + /** + * 申请入场时间 + */ + @ApiModelProperty(value = "注册时间/申请入场时间") + @TableField("CREATE_TIME") + private Date createTime; + + /** + * 人员类型 + */ + @ApiModelProperty(value = "人员类型(区分人员管理和入场申请)") + @TableField("WORKER_TYPE") + private String workerType; + + @ApiModelProperty(value = "性别名称") + @TableField(exist = false) + private String genderName; + + @ApiModelProperty(value = "部门名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @ApiModelProperty(value = "是否注册(0未注册;1已注册)",allowableValues = "0,1") + @TableField(exist = false) + private String isRegister; + + @Override + public String toString() { + return "Worker{" + + "id=" + id + + ", workerName=" + workerName + + ", gender=" + gender + + ", deptId=" + deptId + + ", ownerShip=" + ownerShip + + ", phoneNumber=" + phoneNumber + + ", idCardNumber=" + idCardNumber + + ", enterReason=" + enterReason + + ", workerAvatar=" + workerAvatar + + ", createTime=" + createTime + + ", workerType=" + workerType + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java new file mode 100644 index 0000000..9801742 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警记录表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusAlarmMapper extends BaseMapper { + + Page listPage(Page page,@Param("ew") QueryWrapper queryWrapper); + + void cancelAlarm(@Param("deviceId")Long deviceId,@Param("alarmType") String alarmType); + + List alarmCount(@Param("projectId")Long projectId, @Param("alarmStatus")String alarmStatus); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java new file mode 100644 index 0000000..9590b7d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件图片表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventImageMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java new file mode 100644 index 0000000..3c85edf --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java new file mode 100644 index 0000000..4ca9212 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 设备扩展信息表(安全树) Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface DeviceExtMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java new file mode 100644 index 0000000..444c0c5 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Mapper +public interface DeviceMapper extends BaseMapper { + + Page listDetailPage(Page page,@Param("ew") QueryWrapper ew); + + List selectProjectDevice(@Param("projectId") Long projectId); + + List selectHelmetList(@Param("deviceType")String deviceType); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java new file mode 100644 index 0000000..1d0c14e --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectDeviceMapper extends BaseMapper { + List selectDetailByProjectId(@Param("projectId") Long projectId); + + List selectDeviceLocationList(@Param("projectId") Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java new file mode 100644 index 0000000..58583d1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectWorkerMapper extends BaseMapper { + + List selectDetailByProjectId(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + + List selectWorkerLocationList(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java new file mode 100644 index 0000000..a4934d2 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +/** + *

+ * 作业现场表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkSiteInfoMapper extends BaseMapper { + + Page selectListPage(Page page,@Param("ew") QueryWrapper ew); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java new file mode 100644 index 0000000..258fb12 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkerMapper extends BaseMapper { + + + Page selectListPage(Page page, @Param("ew") QueryWrapper ew); + + List selectWorkerAvatars(@Param("projectId")Long projectId); + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml new file mode 100644 index 0000000..595088a --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml @@ -0,0 +1,58 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml new file mode 100644 index 0000000..fbc3db3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml new file mode 100644 index 0000000..627d573 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml new file mode 100644 index 0000000..5321d1c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml new file mode 100644 index 0000000..94262e1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml @@ -0,0 +1,97 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml new file mode 100644 index 0000000..c6d1c24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml @@ -0,0 +1,29 @@ + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml new file mode 100644 index 0000000..8d2de10 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml new file mode 100644 index 0000000..8f01326 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml @@ -0,0 +1,26 @@ + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml new file mode 100644 index 0000000..3e28b39 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml @@ -0,0 +1,56 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java new file mode 100644 index 0000000..f63c19c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 报警记录表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusAlarmService extends IService { + + boolean alarmUpload(AlarmUpload alarmUpload); + + Page listPage(Page page,QueryWrapper queryWrapper); + + List alarmCount(Long projectId,String alarmStatus); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java new file mode 100644 index 0000000..b1187ed --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 事件图片表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusEventImageService extends IService { + + boolean saveBusEventImages(Long eventId, List imageList); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java new file mode 100644 index 0000000..85c48d0 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 事件表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusEventService extends IService { + + boolean saveBusEvent(BusEvent busEvent); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java new file mode 100644 index 0000000..6fc5361 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 设备扩展信息表(安全树) 服务类 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface IDeviceExtService extends IService { + + boolean saveDeviceExt(DeviceDetailDTO deviceDetailDTO); + + boolean updateDeviceExt(DeviceDetailDTO deviceDetailDTO); + + boolean removeByDeviceIds(List deviceIds); + + boolean setGasThreshold(String gasIp,String gasPort,String threshold); + + String getGasThreshold(String gasIp,String gasPort); + + Long selectByGasIpPort(String gasIp,String gasPort); + + Long selectByCameraIpPort(String cameraIp,String cameraPort); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java new file mode 100644 index 0000000..9e62756 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java @@ -0,0 +1,32 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IDeviceService extends IService { + + boolean saveDevice(DeviceDetailDTO deviceDetailDTO); + + boolean updateDevice(DeviceDetailDTO deviceDetailDTO); + + boolean deleteDevices(List deviceIds); + + Page listPage(Page page, QueryWrapper queryWrapper, String status,Long projectId); + + List selectProjectDevice(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java new file mode 100644 index 0000000..8599411 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IProjectDeviceService extends IService { + + boolean saveProjectDeviceList(Long projectId, List projectDeviceList); + + boolean updateProjectDeviceList(Long projectId, List projectDeviceList); + + boolean deleteByProjectId(Long projectId); + + boolean deleteByProjectIds(List projectIds); + + List selectDetailByProjectId(Long projectId); + + Long selectProjectIdByDevice(Long deviceId); + + List selectDeviceLocationList(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java new file mode 100644 index 0000000..e921bc3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IProjectWorkerService extends IService { + + boolean saveProjectWorkerList(Long projectId, List projectWorkerList); + + boolean updateProjectWorkerList(Long projectId, List projectWorkerList); + + boolean deleteByProjectId(Long projectId); + + boolean deleteByProjectIds(List projectIds); + + List selectDetailByProjectId(Long projectId,String workerType); + + List selectWorkerLocationDTO(Long projectId); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java new file mode 100644 index 0000000..58a8590 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; +/** + *

+ * 作业现场表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IWorkSiteInfoService extends IService { + + boolean addWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO); + + boolean updateWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO); + + boolean deleteProjects(List projectIds); + + WorkSiteDetailDTO getWorkSiteDetail(Long projectId); + + Page selectListPage(Page page, QueryWrapper queryWrapper); + + boolean start(Long projectId); + + boolean finish(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java new file mode 100644 index 0000000..6c6ee98 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.extension.service.IService; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IWorkerService extends IService { + + boolean addWorker(Worker worker,Long projectId); + + Page selectListPage(Page page,QueryWrapper ew); + + Worker selectWorkerDetail(Long workerId); + + List faceRegister(String cameraIp,String cameraPort); + + List projectTempWorker(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java new file mode 100644 index 0000000..b44de1d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.consts.AlarmTypeEnum; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.entity.DataTreeLocation; +import com.casic.missiles.modular.system.mapper.BusAlarmMapper; +import com.casic.missiles.modular.system.service.*; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +/** + *

+ * 报警记录表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +@Slf4j +public class BusAlarmServiceImpl extends ServiceImpl implements IBusAlarmService { + + private final IDeviceExtService deviceExtService; + private final IDeviceService deviceService; + private final IProjectDeviceService projectDeviceService; + + private final ICasicFileService fileService; + + private final AbstractDictService dictService; + private final IDataSupportService dataSupportService; + + @Override + @Transactional + public boolean alarmUpload(AlarmUpload alarmUpload) { + log.info("alarm upload ==> {}",alarmUpload.toString()); + Long deviceId = null; + if(StrUtil.isAllNotBlank(alarmUpload.getGasIp(),alarmUpload.getGasPort())){ + deviceId = deviceExtService.selectByGasIpPort(alarmUpload.getGasIp(),alarmUpload.getGasPort()); + } + if(ObjectUtil.isEmpty(deviceId) && StrUtil.isAllNotBlank(alarmUpload.getCameraIp(),alarmUpload.getCameraPort())){ + deviceId = deviceExtService.selectByCameraIpPort(alarmUpload.getCameraIp(),alarmUpload.getCameraPort()); + } + + if(ObjectUtil.isEmpty(deviceId)){ + return false; + } + + BusAlarm alarm = new BusAlarm(); + alarm.setDeviceId(deviceId); + alarm.setProjectId(projectDeviceService.selectProjectIdByDevice(deviceId)); + alarm.setAlarmValue(alarmUpload.getAlarmValue()); + if(StrUtil.isNotEmpty(alarmUpload.getAlarmTime())){ + alarm.setAlarmTime(DateUtil.parseDateTime(alarmUpload.getAlarmTime())); + }else { + alarm.setAlarmTime(new Date()); + } + + alarm.setAlarmType(alarmUpload.getAlarmType()); + alarm.setAlarmContent(alarmUpload.getAlarmContent()); + if(StrUtil.isNotEmpty(alarmUpload.getAlarmImage())){ + String imgBase64 = "data:image/jpeg;base64," + alarmUpload.getAlarmImage(); + String imageUrl = fileService.saveFile(imgBase64); + alarm.setAlarmImage(imageUrl); + } + alarm.setAlarmStatus(ALARM_STATUS_ON); + + DataTreeLocation treeLocation = dataSupportService.getTreeLocation(deviceId); + if(ObjectUtil.isNotEmpty(treeLocation)){ + alarm.setAlarmLng(treeLocation.getGdLng()); + alarm.setAlarmLat(treeLocation.getGdLat()); + } + + //自动消警 + AlarmTypeEnum alarmTypeEnum = AlarmTypeEnum.getByAlarmType(alarm.getAlarmType()); + if(ObjectUtil.isNotEmpty(alarmTypeEnum) && alarmTypeEnum.isAutoCancel()){ + this.baseMapper.cancelAlarm(deviceId,alarm.getAlarmType()); + } + return this.save(alarm); + } + + @Override + public Page listPage(Page page, QueryWrapper queryWrapper) { + page = this.baseMapper.listPage(page, queryWrapper); + for (BusAlarm alarm : page.getRecords()) { + alarm.setAlarmTypeName(dictService.getDictNameByCode("alarmType",alarm.getAlarmType())); + alarm.setAlarmStatusName(dictService.getDictNameByCode("alarmStatus",alarm.getAlarmStatus())); + if(StrUtil.isNotEmpty(alarm.getProjectState())){ + alarm.setProjectStateName(dictService.getDictNameByCode("projectStatus",alarm.getProjectState())); + } + } + return page; + } + + @Override + public List alarmCount(Long projectId, String alarmStatus) { + List list = this.baseMapper.alarmCount(projectId, alarmStatus); + list = list.stream().filter(i->StrUtil.isNotEmpty(i.getAlarmType())).collect(Collectors.toList()); + for (AlarmTypeCountDTO countDTO : list) { + countDTO.setAlarmTypeName(dictService.getDictNameByCode("alarmType",countDTO.getAlarmType())); + } + return list; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java new file mode 100644 index 0000000..a43f7c1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.casic.missiles.modular.system.mapper.BusEventImageMapper; +import com.casic.missiles.modular.system.service.IBusEventImageService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 事件图片表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +public class BusEventImageServiceImpl extends ServiceImpl implements IBusEventImageService { + + @Override + public boolean saveBusEventImages(Long eventId, List imageList) { + imageList.forEach(i->i.setEventId(eventId)); + return this.saveBatch(imageList); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java new file mode 100644 index 0000000..21e511c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java @@ -0,0 +1,39 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.mapper.BusEventMapper; +import com.casic.missiles.modular.system.service.IBusEventImageService; +import com.casic.missiles.modular.system.service.IBusEventService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; + +/** + *

+ * 事件表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class BusEventServiceImpl extends ServiceImpl implements IBusEventService { + + private final IBusEventImageService busEventImageService; + + + @Override + @Transactional + public boolean saveBusEvent(BusEvent busEvent) { + busEvent.setCreateTime(new Date()); + boolean res = this.save(busEvent); + if(res){ + res = busEventImageService.saveBusEventImages(busEvent.getId(),busEvent.getImageList()); + } + return res; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java new file mode 100644 index 0000000..2bdb63d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java @@ -0,0 +1,102 @@ +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.core.conditions.update.UpdateWrapper; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.casic.missiles.modular.system.mapper.DeviceExtMapper; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 设备扩展信息表(安全树) 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Service +public class DeviceExtServiceImpl extends ServiceImpl implements IDeviceExtService { + + + @Override + public boolean saveDeviceExt(DeviceDetailDTO deviceDetailDTO) { + DeviceExt ext = new DeviceExt(); + ext.setDeviceId(deviceDetailDTO.getId()); + ext.setCameraCode(deviceDetailDTO.getCameraCode()); + ext.setCameraIp(deviceDetailDTO.getCameraIp()); + ext.setCameraPort(deviceDetailDTO.getCameraPort()); + ext.setGasCode(deviceDetailDTO.getGasCode()); + ext.setGasIp(deviceDetailDTO.getGasIp()); + ext.setGasPort(deviceDetailDTO.getGasPort()); + ext.setHatLiningCode(deviceDetailDTO.getHatLiningCode()); + return this.save(ext); + } + + @Override + public boolean updateDeviceExt(DeviceDetailDTO deviceDetailDTO) { + DeviceExt ext = this.selectByDeviceId(deviceDetailDTO.getId()); + ext.setCameraCode(deviceDetailDTO.getCameraCode()); + ext.setCameraIp(deviceDetailDTO.getCameraIp()); + ext.setCameraPort(deviceDetailDTO.getCameraPort()); + ext.setGasCode(deviceDetailDTO.getGasCode()); + ext.setGasIp(deviceDetailDTO.getGasIp()); + ext.setGasPort(deviceDetailDTO.getGasPort()); + ext.setHatLiningCode(deviceDetailDTO.getHatLiningCode()); + return this.updateById(ext); + } + + @Override + public boolean removeByDeviceIds(List deviceIds) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("DEVICE_ID",deviceIds); + return this.remove(queryWrapper); + } + + @Override + public boolean setGasThreshold(String gasIp, String gasPort, String threshold) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.set("GAS_THRESHOLD",threshold); + updateWrapper.eq("GAS_IP",gasIp); + updateWrapper.eq("GAS_PORT",gasPort); + return this.update(updateWrapper); + } + + @Override + public String getGasThreshold(String gasIp, String gasPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("GAS_IP",gasIp); + queryWrapper.eq("GAS_PORT",gasPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getGasThreshold() : null; + } + + private DeviceExt selectByDeviceId(Long deviceId){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVICE_ID",deviceId); + return this.getOne(queryWrapper); + } + + @Override + public Long selectByGasIpPort(String gasIp, String gasPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("GAS_IP",gasIp); + queryWrapper.eq("GAS_PORT",gasPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getDeviceId() : null; + } + + @Override + public Long selectByCameraIpPort(String cameraIp, String cameraPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("CAMERA_IP",cameraIp); + queryWrapper.eq("CAMERA_PORT",cameraPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getDeviceId() : null; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java new file mode 100644 index 0000000..9df79ef --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.mapper.DeviceMapper; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.modular.system.consts.DeviceConst.*; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class DeviceServiceImpl extends ServiceImpl implements IDeviceService { + + private final AbstractDictService dictService; + private final IDeviceExtService deviceExtService; + + private final IProjectDeviceService projectDeviceService; + + @Transactional + @Override + public boolean saveDevice(DeviceDetailDTO deviceDetailDTO) { + deviceDetailDTO.setCreateTime(new Date()); + boolean deviceRes = this.save(deviceDetailDTO); + if(deviceRes && DEVICE_TYPE_TREE.equals(deviceDetailDTO.getDeviceType())){ + deviceRes = deviceExtService.saveDeviceExt(deviceDetailDTO); + } + return deviceRes; + } + + @Transactional + @Override + public boolean updateDevice(DeviceDetailDTO deviceDetailDTO) { + boolean deviceRes = this.updateById(deviceDetailDTO); + if(deviceRes && DEVICE_TYPE_TREE.equals(deviceDetailDTO.getDeviceType())){ + deviceRes = deviceExtService.updateDeviceExt(deviceDetailDTO); + } + return deviceRes; + } + + @Transactional + @Override + public boolean deleteDevices(List deviceIds) { + return this.removeByIds(deviceIds) & deviceExtService.removeByDeviceIds(deviceIds); + } + + @Override + public Page listPage(Page page, QueryWrapper queryWrapper,String status,Long projectId) { + String ID_COLUMN_NAME = "br_device.ID"; + List useDevices = this.selectProjectDevice(null); + List projectDevices; + if(ObjectUtil.isNotEmpty(projectId)){ + projectDevices = this.selectProjectDevice(projectId); + } else { + projectDevices = null; + } + + // 查询使用中的设备(如果传了 projectId,查询 使用中&&此现场) + if(DEVICE_STATUS_USE.equals(status)){ + if(CollUtil.isEmpty(useDevices)){ + return page; + } + if(ObjectUtil.isNotEmpty(projectId) && CollUtil.isEmpty(projectDevices)){ + return page; + } + queryWrapper.in(ID_COLUMN_NAME,useDevices); + if(CollUtil.isNotEmpty(projectDevices)){ + queryWrapper.in(ID_COLUMN_NAME,projectDevices); + } + + } + + // 查询未使用的设备(如果传了 projectId,查询 未使用||此现场) + if(DEVICE_STATUS_NORMAL.equals(status)) { + if (CollUtil.isNotEmpty(useDevices)) { + if (CollUtil.isEmpty(projectDevices)) { + queryWrapper.notIn(ID_COLUMN_NAME, useDevices); + } else { + queryWrapper.and(i -> i.notIn(ID_COLUMN_NAME, useDevices).or().in(ID_COLUMN_NAME, projectDevices)); + } + } + } + + page = this.baseMapper.listDetailPage(page, queryWrapper); + for (DeviceDetailDTO record : page.getRecords()) { + record.setDeviceTypeName(dictService.getDictNameByCode("deviceType",record.getDeviceType())); + record.setIsPowerSupplyName(dictService.getDictNameByCode("isPowerSupply",record.getIsPowerSupply())); + record.setRegisterTime(DateUtil.formatDate(record.getCreateTime())); + record.setStatus(useDevices.contains(record.getId()) ? DEVICE_STATUS_USE : DEVICE_STATUS_NORMAL); + record.setStatusName(dictService.getDictNameByCode("deviceStatus",record.getStatus())); + } + return page; + } + + @Override + public List selectProjectDevice(Long projectId) { + return this.baseMapper.selectProjectDevice(projectId); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceSupportServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceSupportServiceImpl.java new file mode 100644 index 0000000..ffd01ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceSupportServiceImpl.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.mapper.DeviceMapper; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceSupportService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; + +import static com.casic.missiles.modular.system.consts.DeviceConst.DEVICE_TYPE_HAT; + +@Service +@RequiredArgsConstructor +public class DeviceSupportServiceImpl implements IDeviceSupportService { + + private final IDeviceExtService deviceExtService; + + private final DeviceMapper deviceMapper; + + @Override + public Long selectByGasIpPort(String gasIp, String gasPort) { + return deviceExtService.selectByGasIpPort(gasIp, gasPort); + } + + @Override + public List selectHelmetList() { + return deviceMapper.selectHelmetList(DEVICE_TYPE_HAT); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectDeviceServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectDeviceServiceImpl.java new file mode 100644 index 0000000..965f55c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectDeviceServiceImpl.java @@ -0,0 +1,96 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.DataGas; +import com.casic.missiles.modular.system.entity.DataTreeLocation; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.mapper.ProjectDeviceMapper; +import com.casic.missiles.modular.system.service.IDataSupportService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.utils.LngLatUtil; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.stream.Collectors; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class ProjectDeviceServiceImpl extends ServiceImpl implements IProjectDeviceService { + + private final IDataSupportService dataSupportService; + + @Override + public boolean saveProjectDeviceList(Long projectId, List projectDeviceList) { + projectDeviceList.forEach(i->i.setProjectId(projectId)); + return this.saveBatch(projectDeviceList); + } + + @Transactional + @Override + public boolean updateProjectDeviceList(Long projectId, List projectDeviceList) { + return this.deleteByProjectId(projectId) && this.saveProjectDeviceList(projectId, projectDeviceList); + } + + @Override + public boolean deleteByProjectId(Long projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("PROJECT_ID",projectId); + return this.remove(queryWrapper); + } + + @Override + public boolean deleteByProjectIds(List projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("PROJECT_ID",projectId); + return this.remove(queryWrapper); + } + + @Override + public List selectDetailByProjectId(Long projectId) { + return this.baseMapper.selectDetailByProjectId(projectId); + } + + @Override + public Long selectProjectIdByDevice(Long deviceId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVICE_ID",deviceId); + queryWrapper.exists("(select Id FROM br_work_site_info p where p.ID = br_project_device.PROJECT_ID AND p.PROJECT_STATE != '3')"); + ProjectDevice projectDevice = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(projectDevice) ? projectDevice.getProjectId() : null; + } + + @Override + public List selectDeviceLocationList(Long projectId) { + List list = this.baseMapper.selectDeviceLocationList(projectId); + for (DeviceLocationDTO locationDTO : list) { + DataGas dataGas = dataSupportService.getGasData(locationDTO.getDeviceId()); + DataTreeLocation location = dataSupportService.getTreeLocation(locationDTO.getDeviceId(),true); + if(ObjectUtil.isNotEmpty(dataGas)){ + locationDTO.setGasValue(dataGas.getGasValue()); + locationDTO.setTime(DateUtil.formatDateTime(dataGas.getTs())); + } + if(ObjectUtil.isNotEmpty(location)){ + locationDTO.setLng(location.getGdLng()); + locationDTO.setLat(location.getGdLat()); + locationDTO.setLocation(location.getLocation()); + } + } + list = list.stream().filter(i-> StrUtil.isAllNotEmpty(i.getLng(),i.getLat())).collect(Collectors.toList()); + return LngLatUtil.sort(list); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectWorkerServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectWorkerServiceImpl.java new file mode 100644 index 0000000..c3ec86c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectWorkerServiceImpl.java @@ -0,0 +1,101 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.DataHelmetHealth; +import com.casic.missiles.modular.system.entity.DataHelmetLocation; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.mapper.ProjectWorkerMapper; +import com.casic.missiles.modular.system.service.IHelmetSupportService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.system.consts.ProjectConst.WORKER_TYPE_NORMAL; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class ProjectWorkerServiceImpl extends ServiceImpl implements IProjectWorkerService { + + private final AbstractDeptService deptService; + private final IHelmetSupportService helmetSupportService; + + @Override + public boolean saveProjectWorkerList(Long projectId, List projectWorkerList) { + projectWorkerList.forEach(i->i.setProjectId(projectId)); + return this.saveBatch(projectWorkerList); + } + + @Transactional + @Override + public boolean updateProjectWorkerList(Long projectId, List projectWorkerList) { + return this.deleteByProjectId(projectId) && this.saveProjectWorkerList(projectId, projectWorkerList) ; + } + + @Override + public boolean deleteByProjectId(Long projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("PROJECT_ID",projectId); + return this.remove(queryWrapper); + } + + @Override + public boolean deleteByProjectIds(List projectIds) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("PROJECT_ID",projectIds); + return this.remove(queryWrapper); + } + + + @Override + public List selectDetailByProjectId(Long projectId,String workerType) { + List projectWorkerList = this.baseMapper.selectDetailByProjectId(projectId,workerType); + for (ProjectWorker projectWorker : projectWorkerList) { + if(ObjectUtil.isNotEmpty(projectWorker.getWorkerDeptId())){ + projectWorker.setWorkerDeptName(deptService.getDeptName(projectWorker.getWorkerDeptId())); + } + } + return projectWorkerList; + } + + @Override + public List selectWorkerLocationDTO(Long projectId) { + List projectWorkerList = this.baseMapper.selectWorkerLocationList(projectId,WORKER_TYPE_NORMAL); + for (WorkerLocationDTO workerLocationDTO : projectWorkerList) { + if(ObjectUtil.isNotEmpty(workerLocationDTO.getHatId())){ + DataHelmetLocation location = helmetSupportService.getHelmetLocation(workerLocationDTO.getHatId(),true); + if(ObjectUtil.isNotEmpty(location)){ + workerLocationDTO.setLng(location.getGdLng()); + workerLocationDTO.setLat(location.getGdLat()); + workerLocationDTO.setLocation(location.getLocation()); + } + + DataHelmetHealth health = helmetSupportService.getHelmetHealth(workerLocationDTO.getHatId()); + if(ObjectUtil.isNotEmpty(health)){ + workerLocationDTO.setBloodOxygen(health.getBloodOxygen()); + workerLocationDTO.setHeartRate(health.getHeartRate()); + workerLocationDTO.setTime(DateUtil.formatDateTime(health.getTs())); + } + } + } + projectWorkerList = projectWorkerList.stream().filter(i-> StrUtil.isAllNotEmpty(i.getLng(),i.getLat())).collect(Collectors.toList()); + return projectWorkerList; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkSiteInfoServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkSiteInfoServiceImpl.java new file mode 100644 index 0000000..5068da2 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkSiteInfoServiceImpl.java @@ -0,0 +1,151 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.mapper.WorkSiteInfoMapper; +import com.casic.missiles.modular.system.service.*; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.system.consts.ProjectConst.*; + +/** + *

+ * 作业现场表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class WorkSiteInfoServiceImpl extends ServiceImpl implements IWorkSiteInfoService { + + private final IProjectWorkerService projectWorkerService; + private final IProjectDeviceService projectDeviceService; + + private final IWorkerService workerService; + private final IBraceletService braceletService; + + private final AbstractDeptService deptService; + private final AbstractDictService dictService; + @Override + @Transactional + public boolean addWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO) { + workSiteDetailDTO.setCreateTime(new Date()); + workSiteDetailDTO.setUpdateTime(new Date()); + workSiteDetailDTO.setProjectState(PROJECT_STATE_PREPARE); + boolean res = this.save(workSiteDetailDTO); + if(res){ + res = projectDeviceService.saveProjectDeviceList(workSiteDetailDTO.getId(), workSiteDetailDTO.getDeviceList()); + res = res & projectWorkerService.saveProjectWorkerList(workSiteDetailDTO.getId(), workSiteDetailDTO.getWorkerList()); + } + return res; + } + + @Override + @Transactional + public boolean updateWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO) { + workSiteDetailDTO.setUpdateTime(new Date()); + boolean res = this.updateById(workSiteDetailDTO); + if(res){ + res = projectDeviceService.updateProjectDeviceList(workSiteDetailDTO.getId(), workSiteDetailDTO.getDeviceList()); + res = res & projectWorkerService.updateProjectWorkerList(workSiteDetailDTO.getId(), workSiteDetailDTO.getWorkerList()); + } + return res; + } + + @Override + public boolean deleteProjects(List projectIds) { + if(CollUtil.isNotEmpty(projectIds)) { + projectDeviceService.deleteByProjectIds(projectIds); + projectWorkerService.deleteByProjectIds(projectIds); + return this.removeByIds(projectIds); + } + return true; + } + + @Override + public WorkSiteDetailDTO getWorkSiteDetail(Long projectId) { + WorkSiteInfo workSiteInfo = this.getById(projectId); + WorkSiteDetailDTO workSiteDetailDTO = new WorkSiteDetailDTO(); + BeanUtil.copyProperties(workSiteInfo,workSiteDetailDTO,true); + workSiteDetailDTO.setDeviceList(projectDeviceService.selectDetailByProjectId(projectId)); + workSiteDetailDTO.setWorkerList(projectWorkerService.selectDetailByProjectId(projectId,WORKER_TYPE_NORMAL)); + + Worker responseWorker = workerService.selectWorkerDetail(workSiteDetailDTO.getWorkPerson()); + if(ObjectUtil.isNotEmpty(responseWorker)){ + workSiteDetailDTO.setWorkPersonName(responseWorker.getWorkerName()); + workSiteDetailDTO.setWorkPersonPhoneNumber(responseWorker.getPhoneNumber()); + workSiteDetailDTO.setWorkPersonDeptId(responseWorker.getDeptId()); + workSiteDetailDTO.setWorkPersonDeptName(responseWorker.getDeptName()); + } + return workSiteDetailDTO; + } + + @Override + public Page selectListPage(Page page, QueryWrapper queryWrapper) { + page = this.baseMapper.selectListPage(page, queryWrapper); + for (WorkSiteInfo workSiteInfo : page.getRecords()) { + workSiteInfo.setProjectStateName(dictService.getDictNameByCode("projectState", workSiteInfo.getProjectState())); + if(ObjectUtil.isNotEmpty(workSiteInfo.getWorkPersonDeptId())){ + workSiteInfo.setWorkPersonDeptName(deptService.getDeptName(workSiteInfo.getWorkPersonDeptId())); + } + workSiteInfo.setRegisterTime(DateUtil.formatDate(workSiteInfo.getCreateTime())); + } + return page; + } + + @Override + public boolean start(Long projectId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",projectId); + updateWrapper.set("PROJECT_STATE",PROJECT_STATE_WORKING); + updateWrapper.set("START_TIME",new Date()); + boolean res = this.update(updateWrapper); + //braceletService.enableBracelet(selectProjectBracelets(projectId)); + return res; + } + + @Override + public boolean finish(Long projectId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",projectId); + updateWrapper.set("PROJECT_STATE",PROJECT_STATE_FINISH); + updateWrapper.set("FINISH_TIME",new Date()); + boolean res = this.update(updateWrapper); + //braceletService.disableBracelet(selectProjectBracelets(projectId)); + return res; + } + + private List selectProjectBracelets(Long projectId){ + List deviceCodes = new ArrayList<>(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("PROJECT_ID",projectId); + queryWrapper.isNotNull("BRACELET_CODE"); + queryWrapper.select("BRACELET_CODE"); + List res = projectWorkerService.listObjs(queryWrapper); + if(CollUtil.isNotEmpty(res)){ + deviceCodes = res.stream().map(Object::toString).distinct().collect(Collectors.toList()); + } + return deviceCodes; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkerServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkerServiceImpl.java new file mode 100644 index 0000000..6859cff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkerServiceImpl.java @@ -0,0 +1,110 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.mapper.WorkerMapper; +import com.casic.missiles.modular.system.service.*; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.modular.system.consts.ProjectConst.WORKER_TYPE_TEMP; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class WorkerServiceImpl extends ServiceImpl implements IWorkerService { + + private final IProjectWorkerService projectWorkerService; + + private final IProjectDeviceService projectDeviceService; + private final AbstractDictService dictService; + private final AbstractDeptService deptService; + private final IDeviceExtService deviceExtService; + + @Override + @Transactional + public boolean addWorker(Worker worker, Long projectId) { + worker.setCreateTime(new Date()); + boolean res = this.save(worker); + if(res && ObjectUtil.isNotEmpty(projectId)){ + res = projectWorkerService.save(new ProjectWorker(projectId, worker.getId())); + if(ObjectUtil.isNotEmpty(worker.getWorkerAvatar())){ + // todo 向一体机推送人脸图片 + } + } + return res; + } + + @Override + public Page selectListPage(Page page, QueryWrapper ew) { + page = this.baseMapper.selectListPage(page, ew); + for (Worker worker : page.getRecords()) { + wrapperWorker(worker); + } + return page; + } + + private void wrapperWorker(Worker worker) { + if(StrUtil.isNotEmpty(worker.getGender())){ + worker.setGenderName(dictService.getDictNameByCode("sysSex", worker.getGender())); + } + if(ObjectUtil.isNotEmpty(worker.getDeptId())){ + worker.setDeptName(deptService.getDeptName(worker.getDeptId())); + } + worker.setRegisterTime(DateUtil.formatDate(worker.getCreateTime())); + if(StrUtil.isNotEmpty(worker.getStatus())){ + worker.setStatusName(dictService.getDictNameByCode("workerStatus", worker.getStatus())); + } + } + + @Override + public Worker selectWorkerDetail(Long workerId) { + Worker worker = this.getById(workerId); + if(ObjectUtil.isNotEmpty(worker)){ + wrapperWorker(worker); + } + return worker; + } + + @Override + public List faceRegister(String cameraIp, String cameraPort) { + Long deviceId = deviceExtService.selectByCameraIpPort(cameraIp, cameraPort); + if(ObjectUtil.isNotEmpty(deviceId)){ + Long projectId = projectDeviceService.selectProjectIdByDevice(deviceId); + if(ObjectUtil.isNotEmpty(projectId)){ + return this.baseMapper.selectWorkerAvatars(projectId); + } + } + return null; + } + + @Override + public List projectTempWorker(Long projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("WORKER_TYPE",WORKER_TYPE_TEMP); + queryWrapper.exists("(select ID FROM br_project_worker WHERE PROJECT_ID = "+ projectId +")"); + List workers = this.list(queryWrapper); + workers.forEach(this::wrapperWorker); + return workers; + } +} diff --git a/casic_video_283_web/pom.xml b/casic_video_283_web/pom.xml new file mode 100644 index 0000000..feace49 --- /dev/null +++ b/casic_video_283_web/pom.xml @@ -0,0 +1,166 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + casic_video_283_web + 1.0.0 + jar + casic_video_283_web + casic web启动入口 + + + + dev + + true + + + dev + + + + test + + test + + + + prod + + prod + + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-actuator + + + io.micrometer + micrometer-core + + + + + org.springframework.boot + spring-boot-starter-jdbc + + + + com.casic + casic-core + ${core.version} + + + com.casic + casic-admin-core + ${admin.version} + + + io.springfox + springfox-swagger-ui + + + + + com.casic + casic-admin-support + ${admin.version} + + + mysql + mysql-connector-java + ${mysql.driver.version} + + + com.casic + casic-area-starter + ${admin.version} + + + + com.casic + casic_video_283_server + ${pro.version} + + + + org.springframework.boot + spring-boot-starter-tomcat + + + + + casic_video_283_web-${pro.version} + + + org.apache.maven.plugins + maven-jar-plugin + ${maven.jar.plugin.version} + + + + /config/*-*.yml + **/MockController.class + + + + com.casic.missiles.CasicApplication + true + ./ + + + + + + org.apache.maven.plugins + maven-assembly-plugin + ${maven.assembly.plugin.version} + + + make-assembly + package + + single + + + + + + org.apache.maven.plugins + maven-war-plugin + ${maven.war.plugin.version} + + + + + src/main/resources + + + /config/*/* + /config/*-*.yml + + true + + + src/main/java + + **/*.xml + + true + + + + \ No newline at end of file diff --git a/casic_video_283_web/src/main/build/bin/start.bat b/casic_video_283_web/src/main/build/bin/start.bat new file mode 100644 index 0000000..1db4e88 --- /dev/null +++ b/casic_video_283_web/src/main/build/bin/start.bat @@ -0,0 +1,4 @@ +@echo off +title ${project.build.finalName} +java -jar ./lib/${project.build.finalName}.jar +@pause diff --git a/casic_video_283_web/src/main/build/bin/start.sh b/casic_video_283_web/src/main/build/bin/start.sh new file mode 100644 index 0000000..1cc33fc --- /dev/null +++ b/casic_video_283_web/src/main/build/bin/start.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +jar_name="${project.build.finalName}.jar" +echo "starting $jar_name ..." + +PID=$(ps -ef | grep ${jar_name} | grep -v grep | awk '{print $2}') + +OLD_IFS="$IFS" +IFS="," +PIDARR=($PID) +IFS="$OLD_IFS" + +if [ ! $PID ]; then + echo "process ${jar_name} not exit" +else + echo "process id: $PID" + + kill -9 ${PID} + + if [ $? -eq 0 ]; then + echo "kill ${jar_name} success" + else + echo "kill ${jar_name} fail" + exit + fi +fi + + + +nohup java -jar ./lib/${jar_name} >/dev/null 2>log & +echo "start ${jar_name} ..." \ No newline at end of file diff --git a/casic_video_283_web/src/main/build/package.xml b/casic_video_283_web/src/main/build/package.xml new file mode 100644 index 0000000..c9259ad --- /dev/null +++ b/casic_video_283_web/src/main/build/package.xml @@ -0,0 +1,43 @@ + + + package + + zip + tar.gz + + true + + + + true + true + lib + runtime + + + + + src/main/build/bin + + start.bat + start.sh + + true + 0744 + / + + + src/main/resources/config + true + + *.yml + /*/* + + /config + + + src/main/resources/i18n + / + + + \ No newline at end of file diff --git a/casic_video_283_web/src/main/java/com/casic/missiles/CasicApplication.java b/casic_video_283_web/src/main/java/com/casic/missiles/CasicApplication.java new file mode 100644 index 0000000..7b8791f --- /dev/null +++ b/casic_video_283_web/src/main/java/com/casic/missiles/CasicApplication.java @@ -0,0 +1,35 @@ +package com.casic.missiles; + +import lombok.extern.slf4j.Slf4j; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.web.servlet.ServletComponentScan; +import org.springframework.cache.annotation.EnableCaching; +import org.springframework.scheduling.annotation.EnableAsync; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +/** + * SpringBoot方式启动类 + * + * @author lwh + * @Date 2021/06/06 12:06 + */ +@SpringBootApplication +@EnableCaching +@EnableTransactionManagement(proxyTargetClass = true) +@EnableAsync +@Slf4j +@MapperScan(value = "com.casic.missiles.modular.system.mapper") +public class CasicApplication { + + static { + System.setProperty("druid.mysql.usePingMethod","false"); + } + + public static void main(String[] args) { + SpringApplication.run(CasicApplication.class, args); + log.info("CasicApplication is success!"); + } + +} diff --git a/casic_video_283_web/src/main/java/com/casic/missiles/CasicServletInitializer.java b/casic_video_283_web/src/main/java/com/casic/missiles/CasicServletInitializer.java new file mode 100644 index 0000000..e30585b --- /dev/null +++ b/casic_video_283_web/src/main/java/com/casic/missiles/CasicServletInitializer.java @@ -0,0 +1,18 @@ +package com.casic.missiles; + +import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; + +/** + * Guns Web程序启动类 + * + * @author fengshuonan + * @date 2017-05-21 9:43 + */ +public class CasicServletInitializer extends SpringBootServletInitializer { + + @Override + protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { + return application.sources(CasicApplication.class); + } +} diff --git a/casic_video_283_web/src/main/java/com/casic/missiles/config/SwaggerConfig.java b/casic_video_283_web/src/main/java/com/casic/missiles/config/SwaggerConfig.java new file mode 100644 index 0000000..fd233d8 --- /dev/null +++ b/casic_video_283_web/src/main/java/com/casic/missiles/config/SwaggerConfig.java @@ -0,0 +1,40 @@ +package com.casic.missiles.config; + + +import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j; +import io.swagger.annotations.ApiOperation; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import springfox.documentation.builders.ApiInfoBuilder; +import springfox.documentation.builders.PathSelectors; +import springfox.documentation.builders.RequestHandlerSelectors; +import springfox.documentation.service.ApiInfo; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spring.web.plugins.Docket; +import springfox.documentation.swagger2.annotations.EnableSwagger2; + +@Configuration //声明该类为配置类 +@EnableSwagger2 //声明启动Swagger2 +@EnableKnife4j +public class SwaggerConfig{ + private ApiInfo apiInfo() { + return new ApiInfoBuilder() + .title("北燃四分二期接口文档")//文档说明 + .version("1.0.0")//文档版本说明 + .build(); + } + + @Bean + public Docket productApi() { + return new Docket(DocumentationType.SWAGGER_2) + .apiInfo(apiInfo()) + .select() + .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) //添加ApiOperiation注解的被扫描 + .paths(PathSelectors.any()) + .build(); + + } + + +} + diff --git a/casic_video_283_web/src/main/java/com/casic/missiles/controller/MockController.java b/casic_video_283_web/src/main/java/com/casic/missiles/controller/MockController.java new file mode 100644 index 0000000..eae6c54 --- /dev/null +++ b/casic_video_283_web/src/main/java/com/casic/missiles/controller/MockController.java @@ -0,0 +1,82 @@ +package com.casic.missiles.controller; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.application.enums.LoginType; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.model.auth.CasicCustomToken; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.response.SuccessResponseData; +import com.casic.missiles.modular.domain.constants.PermissionConstants; +import com.casic.missiles.modular.interfaces.log.LogManager; +import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; +import com.casic.missiles.modular.system.dto.LoginSuccessDTO; +import lombok.extern.slf4j.Slf4j; +import org.apache.shiro.subject.Subject; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.security.NoSuchAlgorithmException; +import java.util.Map; + +import static com.casic.missiles.core.util.HttpContext.getIp; + + +/** + * 仅为mock登录使用 + * + * @author lenovo + */ +@Controller +@RequestMapping("/route") +@Slf4j +public class MockController extends BaseController { + + /** + * 获取mockToken + */ + @GetMapping("/mockToken") + @ResponseBody + public Object mockToken(String username, String password) { + super.getSession().setAttribute(PermissionConstants.IS_APP, false); + SuccessResponseData resultData = new SuccessResponseData(); + if (StrUtil.hasEmpty(username, password)) { + username = "admin"; + password = "111111"; + } + Subject currentUser = ShiroKit.getSubject(); + + try { + Map key = RSAUtils.genKeyPair(); + ShiroKit.getSession().setAttribute(PermissionConstants.PRIVATE_KEY, key.get(RSAUtils.RSAPrivateKey)); + + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } + + //token自定义 + CasicCustomToken token = new CasicCustomToken(username, password); + token.setType(LoginType.PASSWORD); + token.setRememberMe(false); + + try { + currentUser.login(token); + } catch (Exception e) { + e.printStackTrace(); + } + AuthUser shiroUser = ShiroKit.getUser(); + super.getSession().setAttribute("shiroUser", shiroUser); + super.getSession().setAttribute("username", shiroUser.getAccount()); + super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); + + LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), getIp())); + + ShiroKit.getSession().setAttribute("sessionFlag", true); + resultData.setData(new LoginSuccessDTO(ShiroKit.getSession().getId().toString(), null)); + resultData.setMessage("登录成功"); + return resultData; + } +} diff --git a/casic_video_283_web/src/main/resources/META-INF/spring-devtools.properties b/casic_video_283_web/src/main/resources/META-INF/spring-devtools.properties new file mode 100644 index 0000000..e3b0a7f --- /dev/null +++ b/casic_video_283_web/src/main/resources/META-INF/spring-devtools.properties @@ -0,0 +1 @@ +restart.include.beetl=/beetl-2.7.15.jar \ No newline at end of file diff --git a/casic_video_283_web/src/main/resources/config/application-dev.yml b/casic_video_283_web/src/main/resources/config/application-dev.yml new file mode 100644 index 0000000..fea6255 --- /dev/null +++ b/casic_video_283_web/src/main/resources/config/application-dev.yml @@ -0,0 +1,31 @@ +server: + port: 8083 +################### spring配置 ################### +spring: + datasource: + url: jdbc:mysql://111.198.10.15:11336/casic_283?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=Asia/Shanghai&&allowMultiQueries=true + username: root + password: Casic203 + jms: + pub-sub-domain: true +# session: +# store-type: redis + redis: + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh +# serializer: org.springframework.data.redis.serializer.StringRedisSerializer +# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer +casic: + #kaptcha-open: false #是否开启登录时验证码 (true/false) + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/webjars/**,/swagger-ui.html,/swagger-resources + #flowable数据源和多数据源配置 + db: + init: + enable: false + file: + uploadPath: /casic/casic-gas-operation-file/ +logging: + level.root: info + level.com.casic: debug + level.org.springframework.web: info \ No newline at end of file diff --git a/casic_video_283_web/src/main/resources/config/application-prod.yml b/casic_video_283_web/src/main/resources/config/application-prod.yml new file mode 100644 index 0000000..634fe1a --- /dev/null +++ b/casic_video_283_web/src/main/resources/config/application-prod.yml @@ -0,0 +1,29 @@ +server: + port: 8085 +# context-path: /callcenter/api +################### spring配置 ################### +spring: + datasource: + url: jdbc:mysql://111.198.10.15:11336/casic_283?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + username: root + password: Casic203 + initial-size: 2 + min-idle: 1 + jms: + pub-sub-domain: true + # session: + # store-type: redis + redis: + host: 127.0.0.1 + port: 6379 + password: + +#flowable数据源和多数据源配置 +casic: + kaptcha-open: false #是否开启登录时验证码 (true/false) + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/bracelet/receive/* +logging: + level.root: info + level.com.casic: debug + path: logs/ + file: missiles.log \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java new file mode 100644 index 0000000..73d7799 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.dto; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "AlarmUpload",description = "报警上传") +@Data +public class AlarmUpload { + + @ApiModelProperty(value = "摄像头ip") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + @ApiModelProperty(value = "安全树甲烷设备ip") + private String gasIp; + @ApiModelProperty(value = "安全树甲烷设备端口") + private String gasPort; + @ApiModelProperty(value = "报警值") + private String alarmValue; + @ApiModelProperty(value = "报警时间") + private String alarmTime; + @ApiModelProperty(value = "报警类型") + private String alarmType; + @ApiModelProperty(value = "报警图片") + private String alarmImage; + @ApiModelProperty(value = "报警内容") + private String alarmContent; + + @Override + public String toString() { + return "AlarmUpload{" + + "cameraIp='" + cameraIp + '\'' + + ", cameraPort='" + cameraPort + '\'' + + ", gasIp='" + gasIp + '\'' + + ", gasPort='" + gasPort + '\'' + + ", alarmValue='" + alarmValue + '\'' + + ", alarmTime='" + alarmTime + '\'' + + ", alarmType='" + alarmType + '\'' + + ", alarmImage='" + (StrUtil.isNotEmpty(alarmImage) ? alarmImage.substring(0,50) : "null") + '\'' + + ", alarmContent='" + alarmContent + '\'' + + '}'; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java new file mode 100644 index 0000000..ea518d9 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.modular.system.entity.Device; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("DeviceDetailDTO") +@Data +public class DeviceDetailDTO extends Device { + + @ApiModelProperty(value = "摄像头编号") + private String cameraCode; + + @ApiModelProperty(value = "摄像头IP") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + + @ApiModelProperty(value = "激甲编号") + private String gasCode; + + @ApiModelProperty(value = "激甲IP") + private String gasIp; + + @ApiModelProperty(value = "激甲端口") + private String gasPort; + + @ApiModelProperty(value = "智能帽衬编号") + private String hatLiningCode; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java new file mode 100644 index 0000000..29378ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("WorkSiteDetailDTO") +public class WorkSiteDetailDTO extends WorkSiteInfo { + + @ApiModelProperty(value = "安全树列表",dataType = "ProjectDevice") + private List deviceList; + + @ApiModelProperty(value = "人员列表",dataType = "ProjectWorker") + private List workerList; + + + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java new file mode 100644 index 0000000..6fd7b24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java @@ -0,0 +1,68 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "WorkerLocationDTO",description = "人员位置列表(首页)") +@Data +public class WorkerLocationDTO { + + @ApiModelProperty("人员ID") + private Long workerId; + + @ApiModelProperty("人员姓名") + private String workerName; + + @ApiModelProperty("安全帽编号") + private String hatCode; + + @ApiModelProperty("安全帽ID") + private Long hatId; + + @ApiModelProperty("背心编号") + private String vastCode; + + @ApiModelProperty("手环编号") + private String braceletCode; + + @ApiModelProperty("位置") + private String location; + + @ApiModelProperty("时间") + private String time; + + @ApiModelProperty("经度") + private String lng; + + @ApiModelProperty("纬度") + private String lat; + + @ApiModelProperty("心率") + private String heartRate; + + @ApiModelProperty("血氧") + private String bloodOxygen; + + @ApiModelProperty("一氧化碳") + private String co; + + @ApiModelProperty("甲烷") + private String gas; + + @ApiModelProperty("硫化氢") + private String h2s; + + @ApiModelProperty("氧气") + private String o2; + + @ApiModelProperty("信号") + private String signal; + + @ApiModelProperty("电量") + private String cell; + + @ApiModelProperty("是否报警") + private boolean alarmFlag; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java new file mode 100644 index 0000000..efb4a23 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java @@ -0,0 +1,159 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 报警记录表 + *

+ * + * @author zyj + * @since 2023-05-16 + */ +@Data +@ApiModel("Alarm") +@TableName("br_bus_alarm") +public class BusAlarm implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @ApiModelProperty(value = "设备ID") + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 报警类型 + */ + @ApiModelProperty(value = "报警类型") + @TableField("ALARM_TYPE") + private String alarmType; + + /** + * 报警状态 + */ + @ApiModelProperty(value = "报警状态") + @TableField("ALARM_STATUS") + private String alarmStatus; + + /** + * 报警值 + */ + @ApiModelProperty(value = "报警值") + @TableField("ALARM_VALUE") + private String alarmValue; + + /** + * 报警图片 + */ + @ApiModelProperty(value = "报警图片") + @TableField("ALARM_IMAGE") + private String alarmImage; + + /** + * 报警内容 + */ + @ApiModelProperty(value = "报警内容") + @TableField("ALARM_CONTENT") + private String alarmContent; + + /** + * 报警时间 + */ + @ApiModelProperty(value = "报警时间") + @TableField("ALARM_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date alarmTime; + + /** + * 消警时间 + */ + @ApiModelProperty(value = "消警时间") + @TableField("CANCEL_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + /** + * 报警位置经度 + */ + @ApiModelProperty(value = "报警位置经度") + @TableField("ALARM_LNG") + private String alarmLng; + + /** + * 报警位置纬度 + */ + @ApiModelProperty(value = "报警位置纬度") + @TableField("ALARM_LAT") + private String alarmLat; + + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmStatusName; + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmTypeName; + @ApiModelProperty("作业名称") + @TableField(exist = false) + private String workTitle; + @ApiModelProperty("所属道路") + @TableField(exist = false) + private String workRoad; + @ApiModelProperty("作业状态") + @TableField(exist = false) + private String projectState; + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + @ApiModelProperty("负责人姓名") + @TableField(exist = false) + private String workPersonName; + @ApiModelProperty("负责人联系方式") + @TableField(exist = false) + private String workPersonPhoneNumber; + + + @Override + public String toString() { + return "BusAlarm{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + ", alarmType=" + alarmType + + ", alarmValue=" + alarmValue + + ", alarmStatus=" + alarmStatus + + ", alarmImage=" + alarmImage + + ", alarmContent=" + alarmContent + + ", alarmTime=" + alarmTime + + ", cancelTime=" + cancelTime + + ", alarmLng=" + alarmLng + + ", alarmLat=" + alarmLat + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java new file mode 100644 index 0000000..a0b7543 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + *

+ * 事件表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event") +@Data +@ApiModel("BusEvent") +public class BusEvent implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("事件ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件标题 + */ + @ApiModelProperty("事件名称") + @TableField("EVENT_TITLE") + private String eventTitle; + + /** + * 上报人员 + */ + @ApiModelProperty("上报人员") + @TableField("UPLOAD_NAME") + private String uploadName; + + /** + * 联系方式 + */ + @ApiModelProperty("联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 事件描述 + */ + @ApiModelProperty("事件描述") + @TableField("EVENT_DESCRIPTION") + private String eventDescription; + + @ApiModelProperty("经度") + @TableField("LNG") + private String lng; + + @ApiModelProperty("纬度") + @TableField("LAT") + private String lat; + + /** + * 事件上传时间 + */ + @ApiModelProperty("事件上传时间") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty("事件照片") + @TableField(exist = false) + private List imageList; + + + + @Override + public String toString() { + return "BusEvent{" + + "id=" + id + + ", eventTitle=" + eventTitle + + ", uploadName=" + uploadName + + ", phoneNumber=" + phoneNumber + + ", eventDescription=" + eventDescription + + ", lng=" + lng + + ", lat=" + lat + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java new file mode 100644 index 0000000..1e75245 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 事件图片表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event_image") +@Data +@ApiModel("BusEventImage") +public class BusEventImage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件ID + */ + @TableField("EVENT_ID") + private Long eventId; + + /** + * 报警图片 + */ + @TableField("IMAGE") + @ApiModelProperty("图片url") + private String image; + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java new file mode 100644 index 0000000..df89c70 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.core.base.json.DateDeserializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Device") +@TableName("br_device") +@Data +public class Device implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "设备ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty(value = "设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + /** + * 设备类型 + */ + @ApiModelProperty(value = "设备类型") + @TableField("DEVICE_TYPE") + private String deviceType; + + /** + * 设备批次 + */ + @ApiModelProperty(value = "设备批次") + @TableField("DEVICE_BATCH") + private String deviceBatch; + + /** + * 厂家 + */ + @ApiModelProperty(value = "厂家") + @TableField("MANUFACTURER") + private String manufacturer; + + /** + * 是否供电 + */ + @ApiModelProperty(value = "是否供电") + @TableField("IS_POWER_SUPPLY") + private String isPowerSupply; + + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间",dataType = "Date") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty(value = "设备类型名称") + @TableField(exist = false) + private String deviceTypeName; + + @ApiModelProperty(value = "是否供电名称") + @TableField(exist = false) + private String isPowerSupplyName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", deviceCode=" + deviceCode + + ", deviceType=" + deviceType + + ", deviceBatch=" + deviceBatch + + ", manufacturer=" + manufacturer + + ", isPowerSupply=" + isPowerSupply + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java new file mode 100644 index 0000000..5ee7015 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java @@ -0,0 +1,99 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 设备扩展信息表(安全树) + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Data +@TableName("br_device_ext") +public class DeviceExt implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 摄像头编号 + */ + @TableField("CAMERA_CODE") + private String cameraCode; + + /** + * 摄像头IP + */ + @TableField("CAMERA_IP") + private String cameraIp; + + /** + * 摄像头端口 + */ + @TableField("CAMERA_PORT") + private String cameraPort; + + /** + * 激甲编号 + */ + @TableField("GAS_CODE") + private String gasCode; + + /** + * 激甲IP + */ + @TableField("GAS_IP") + private String gasIp; + + /** + * 激甲端口 + */ + @TableField("GAS_PORT") + private String gasPort; + + /** + * 甲烷报警阈值 + */ + @TableField("GAS_THRESHOLD") + private String gasThreshold; + + @TableField(value = "HAT_LINING_CODE") + private String hatLiningCode; + + + @Override + public String toString() { + return "DeviceExt{" + + "id=" + id + + ", deviceId=" + deviceId + + ", cameraCode=" + cameraCode + + ", cameraIp=" + cameraIp + + ", cameraPort=" + cameraPort + + ", gasCode=" + gasCode + + ", gasIp=" + gasIp + + ", gasPort=" + gasPort + + ", gasThreshold=" + gasThreshold + + ", hatLiningCode=" + hatLiningCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java new file mode 100644 index 0000000..c4f3472 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java @@ -0,0 +1,62 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Data +@ApiModel("ProjectDevice") +@TableName("br_project_device") +public class ProjectDevice implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + @ApiModelProperty("设备ID(新增编辑时传)") + private Long deviceId; + + /** + * 设备编号 + */ + @TableField(exist = false) + @ApiModelProperty("设备编号(详情中展示,新增编辑不用传)") + private String deviceCode; + + @Override + public String toString() { + return "ProjectDevice{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java new file mode 100644 index 0000000..10b23c4 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java @@ -0,0 +1,104 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("ProjectWorker") +@TableName("br_project_worker") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ProjectWorker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 人员ID + */ + @ApiModelProperty("人员ID") + @TableField("WORKER_ID") + private Long workerId; + + /** + * 安全帽编号 + */ + @ApiModelProperty("安全帽编号") + @TableField("HAT_CODE") + private String hatCode; + + /** + * 背心编号 + */ + @ApiModelProperty("背心编号") + @TableField("VAST_CODE") + private String vastCode; + + /** + * 手环编号 + */ + @ApiModelProperty("手环编号") + @TableField("BRACELET_CODE") + private String braceletCode; + + @ApiModelProperty("人员姓名(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerName; + + @ApiModelProperty("人员部门ID(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptId; + + @ApiModelProperty("人员部门名称(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptName; + + @ApiModelProperty("人员联系方式(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerPhoneNumber; + + public ProjectWorker(Long projectId, Long workerId) { + this.projectId = projectId; + this.workerId = workerId; + } + + @Override + public String toString() { + return "ProjectWorker{" + + "id=" + id + + ", projectId=" + projectId + + ", workerId=" + workerId + + ", hatCode=" + hatCode + + ", vastCode=" + vastCode + + ", braceletCode=" + braceletCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java new file mode 100644 index 0000000..fa6f41d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 作业现场表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("WorkSiteInfo") +@TableName("br_work_site_info") +@Data +public class WorkSiteInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("作业现场ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业名称 + */ + @ApiModelProperty("作业名称") + @TableField("WORK_TITLE") + private String workTitle; + + /** + * 责任人 + */ + @ApiModelProperty("责任人(人员ID)") + @TableField("WORK_PERSON") + private Long workPerson; + + /** + * 作业描述 + */ + @ApiModelProperty("作业描述") + @TableField("WORK_SITE_DESC") + private String workSiteDesc; + + /** + * 作业状态 + */ + @ApiModelProperty("作业状态") + @TableField("PROJECT_STATE") + private String projectState; + + /** + * 所属道路 + */ + @ApiModelProperty("所属道路") + @TableField("WORK_ROAD") + private String workRoad; + + @TableField("IMAGE_URL") + private String imageUrl; + + @TableField("CREATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + @TableField("UPDATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("FINISH_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + @ApiModelProperty("负责人姓名(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonName; + + @ApiModelProperty("负责人联系方式(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonPhoneNumber; + + @ApiModelProperty("负责人所属部门ID(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private Long workPersonDeptId; + + @ApiModelProperty("负责人所属部门名称(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonDeptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + + @Override + public String toString() { + return "WorkSiteInfo{" + + "id=" + id + + ", workTitle=" + workTitle + + ", workPerson=" + workPerson + + ", workSiteDesc=" + workSiteDesc + + ", projectState=" + projectState + + ", imageUrl=" + imageUrl + + ", updateTime=" + updateTime + + ", workRoad=" + workRoad + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java new file mode 100644 index 0000000..28a4daa --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java @@ -0,0 +1,147 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Worker") +@TableName("br_worker") +@Data +public class Worker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "人员ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 姓名 + */ + @ApiModelProperty(value = "姓名") + @TableField("WORKER_NAME") + private String workerName; + + /** + * 性别 + */ + @ApiModelProperty(value = "性别") + @TableField("GENDER") + private String gender; + + /** + * 所属部门 + */ + @ApiModelProperty(value = "所属部门(人员管理)") + @TableField("DEPT_ID") + private Long deptId; + + /** + * 所属单位 + */ + @ApiModelProperty(value = "所属单位(入场申请中使用)") + @TableField("OWNER_SHIP") + private String ownerShip; + + /** + * 联系方式 + */ + @ApiModelProperty(value = "联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 证件号 + */ + @ApiModelProperty(value = "证件号") + @TableField("ID_CARD_NUMBER") + private String idCardNumber; + + /** + * 入场原因 + */ + @ApiModelProperty(value = "入场原因(入场申请中使用)") + @TableField("ENTER_REASON") + private String enterReason; + + /** + * 入场人脸照片 + */ + @ApiModelProperty(value = "人脸照片(照片路径)") + @TableField("WORKER_AVATAR") + private String workerAvatar; + + /** + * 申请入场时间 + */ + @ApiModelProperty(value = "注册时间/申请入场时间") + @TableField("CREATE_TIME") + private Date createTime; + + /** + * 人员类型 + */ + @ApiModelProperty(value = "人员类型(区分人员管理和入场申请)") + @TableField("WORKER_TYPE") + private String workerType; + + @ApiModelProperty(value = "性别名称") + @TableField(exist = false) + private String genderName; + + @ApiModelProperty(value = "部门名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @ApiModelProperty(value = "是否注册(0未注册;1已注册)",allowableValues = "0,1") + @TableField(exist = false) + private String isRegister; + + @Override + public String toString() { + return "Worker{" + + "id=" + id + + ", workerName=" + workerName + + ", gender=" + gender + + ", deptId=" + deptId + + ", ownerShip=" + ownerShip + + ", phoneNumber=" + phoneNumber + + ", idCardNumber=" + idCardNumber + + ", enterReason=" + enterReason + + ", workerAvatar=" + workerAvatar + + ", createTime=" + createTime + + ", workerType=" + workerType + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java new file mode 100644 index 0000000..9801742 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警记录表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusAlarmMapper extends BaseMapper { + + Page listPage(Page page,@Param("ew") QueryWrapper queryWrapper); + + void cancelAlarm(@Param("deviceId")Long deviceId,@Param("alarmType") String alarmType); + + List alarmCount(@Param("projectId")Long projectId, @Param("alarmStatus")String alarmStatus); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java new file mode 100644 index 0000000..9590b7d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件图片表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventImageMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java new file mode 100644 index 0000000..3c85edf --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java new file mode 100644 index 0000000..4ca9212 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 设备扩展信息表(安全树) Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface DeviceExtMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java new file mode 100644 index 0000000..444c0c5 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Mapper +public interface DeviceMapper extends BaseMapper { + + Page listDetailPage(Page page,@Param("ew") QueryWrapper ew); + + List selectProjectDevice(@Param("projectId") Long projectId); + + List selectHelmetList(@Param("deviceType")String deviceType); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java new file mode 100644 index 0000000..1d0c14e --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectDeviceMapper extends BaseMapper { + List selectDetailByProjectId(@Param("projectId") Long projectId); + + List selectDeviceLocationList(@Param("projectId") Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java new file mode 100644 index 0000000..58583d1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectWorkerMapper extends BaseMapper { + + List selectDetailByProjectId(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + + List selectWorkerLocationList(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java new file mode 100644 index 0000000..a4934d2 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +/** + *

+ * 作业现场表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkSiteInfoMapper extends BaseMapper { + + Page selectListPage(Page page,@Param("ew") QueryWrapper ew); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java new file mode 100644 index 0000000..258fb12 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkerMapper extends BaseMapper { + + + Page selectListPage(Page page, @Param("ew") QueryWrapper ew); + + List selectWorkerAvatars(@Param("projectId")Long projectId); + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml new file mode 100644 index 0000000..595088a --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml @@ -0,0 +1,58 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml new file mode 100644 index 0000000..fbc3db3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml new file mode 100644 index 0000000..627d573 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml new file mode 100644 index 0000000..5321d1c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml new file mode 100644 index 0000000..94262e1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml @@ -0,0 +1,97 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml new file mode 100644 index 0000000..c6d1c24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml @@ -0,0 +1,29 @@ + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml new file mode 100644 index 0000000..8d2de10 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml new file mode 100644 index 0000000..8f01326 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml @@ -0,0 +1,26 @@ + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml new file mode 100644 index 0000000..3e28b39 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml @@ -0,0 +1,56 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java new file mode 100644 index 0000000..f63c19c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 报警记录表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusAlarmService extends IService { + + boolean alarmUpload(AlarmUpload alarmUpload); + + Page listPage(Page page,QueryWrapper queryWrapper); + + List alarmCount(Long projectId,String alarmStatus); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java new file mode 100644 index 0000000..b1187ed --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 事件图片表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusEventImageService extends IService { + + boolean saveBusEventImages(Long eventId, List imageList); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java new file mode 100644 index 0000000..85c48d0 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 事件表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusEventService extends IService { + + boolean saveBusEvent(BusEvent busEvent); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java new file mode 100644 index 0000000..6fc5361 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 设备扩展信息表(安全树) 服务类 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface IDeviceExtService extends IService { + + boolean saveDeviceExt(DeviceDetailDTO deviceDetailDTO); + + boolean updateDeviceExt(DeviceDetailDTO deviceDetailDTO); + + boolean removeByDeviceIds(List deviceIds); + + boolean setGasThreshold(String gasIp,String gasPort,String threshold); + + String getGasThreshold(String gasIp,String gasPort); + + Long selectByGasIpPort(String gasIp,String gasPort); + + Long selectByCameraIpPort(String cameraIp,String cameraPort); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java new file mode 100644 index 0000000..9e62756 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java @@ -0,0 +1,32 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IDeviceService extends IService { + + boolean saveDevice(DeviceDetailDTO deviceDetailDTO); + + boolean updateDevice(DeviceDetailDTO deviceDetailDTO); + + boolean deleteDevices(List deviceIds); + + Page listPage(Page page, QueryWrapper queryWrapper, String status,Long projectId); + + List selectProjectDevice(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java new file mode 100644 index 0000000..8599411 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IProjectDeviceService extends IService { + + boolean saveProjectDeviceList(Long projectId, List projectDeviceList); + + boolean updateProjectDeviceList(Long projectId, List projectDeviceList); + + boolean deleteByProjectId(Long projectId); + + boolean deleteByProjectIds(List projectIds); + + List selectDetailByProjectId(Long projectId); + + Long selectProjectIdByDevice(Long deviceId); + + List selectDeviceLocationList(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java new file mode 100644 index 0000000..e921bc3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IProjectWorkerService extends IService { + + boolean saveProjectWorkerList(Long projectId, List projectWorkerList); + + boolean updateProjectWorkerList(Long projectId, List projectWorkerList); + + boolean deleteByProjectId(Long projectId); + + boolean deleteByProjectIds(List projectIds); + + List selectDetailByProjectId(Long projectId,String workerType); + + List selectWorkerLocationDTO(Long projectId); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java new file mode 100644 index 0000000..58a8590 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; +/** + *

+ * 作业现场表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IWorkSiteInfoService extends IService { + + boolean addWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO); + + boolean updateWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO); + + boolean deleteProjects(List projectIds); + + WorkSiteDetailDTO getWorkSiteDetail(Long projectId); + + Page selectListPage(Page page, QueryWrapper queryWrapper); + + boolean start(Long projectId); + + boolean finish(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java new file mode 100644 index 0000000..6c6ee98 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.extension.service.IService; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IWorkerService extends IService { + + boolean addWorker(Worker worker,Long projectId); + + Page selectListPage(Page page,QueryWrapper ew); + + Worker selectWorkerDetail(Long workerId); + + List faceRegister(String cameraIp,String cameraPort); + + List projectTempWorker(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java new file mode 100644 index 0000000..b44de1d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.consts.AlarmTypeEnum; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.entity.DataTreeLocation; +import com.casic.missiles.modular.system.mapper.BusAlarmMapper; +import com.casic.missiles.modular.system.service.*; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +/** + *

+ * 报警记录表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +@Slf4j +public class BusAlarmServiceImpl extends ServiceImpl implements IBusAlarmService { + + private final IDeviceExtService deviceExtService; + private final IDeviceService deviceService; + private final IProjectDeviceService projectDeviceService; + + private final ICasicFileService fileService; + + private final AbstractDictService dictService; + private final IDataSupportService dataSupportService; + + @Override + @Transactional + public boolean alarmUpload(AlarmUpload alarmUpload) { + log.info("alarm upload ==> {}",alarmUpload.toString()); + Long deviceId = null; + if(StrUtil.isAllNotBlank(alarmUpload.getGasIp(),alarmUpload.getGasPort())){ + deviceId = deviceExtService.selectByGasIpPort(alarmUpload.getGasIp(),alarmUpload.getGasPort()); + } + if(ObjectUtil.isEmpty(deviceId) && StrUtil.isAllNotBlank(alarmUpload.getCameraIp(),alarmUpload.getCameraPort())){ + deviceId = deviceExtService.selectByCameraIpPort(alarmUpload.getCameraIp(),alarmUpload.getCameraPort()); + } + + if(ObjectUtil.isEmpty(deviceId)){ + return false; + } + + BusAlarm alarm = new BusAlarm(); + alarm.setDeviceId(deviceId); + alarm.setProjectId(projectDeviceService.selectProjectIdByDevice(deviceId)); + alarm.setAlarmValue(alarmUpload.getAlarmValue()); + if(StrUtil.isNotEmpty(alarmUpload.getAlarmTime())){ + alarm.setAlarmTime(DateUtil.parseDateTime(alarmUpload.getAlarmTime())); + }else { + alarm.setAlarmTime(new Date()); + } + + alarm.setAlarmType(alarmUpload.getAlarmType()); + alarm.setAlarmContent(alarmUpload.getAlarmContent()); + if(StrUtil.isNotEmpty(alarmUpload.getAlarmImage())){ + String imgBase64 = "data:image/jpeg;base64," + alarmUpload.getAlarmImage(); + String imageUrl = fileService.saveFile(imgBase64); + alarm.setAlarmImage(imageUrl); + } + alarm.setAlarmStatus(ALARM_STATUS_ON); + + DataTreeLocation treeLocation = dataSupportService.getTreeLocation(deviceId); + if(ObjectUtil.isNotEmpty(treeLocation)){ + alarm.setAlarmLng(treeLocation.getGdLng()); + alarm.setAlarmLat(treeLocation.getGdLat()); + } + + //自动消警 + AlarmTypeEnum alarmTypeEnum = AlarmTypeEnum.getByAlarmType(alarm.getAlarmType()); + if(ObjectUtil.isNotEmpty(alarmTypeEnum) && alarmTypeEnum.isAutoCancel()){ + this.baseMapper.cancelAlarm(deviceId,alarm.getAlarmType()); + } + return this.save(alarm); + } + + @Override + public Page listPage(Page page, QueryWrapper queryWrapper) { + page = this.baseMapper.listPage(page, queryWrapper); + for (BusAlarm alarm : page.getRecords()) { + alarm.setAlarmTypeName(dictService.getDictNameByCode("alarmType",alarm.getAlarmType())); + alarm.setAlarmStatusName(dictService.getDictNameByCode("alarmStatus",alarm.getAlarmStatus())); + if(StrUtil.isNotEmpty(alarm.getProjectState())){ + alarm.setProjectStateName(dictService.getDictNameByCode("projectStatus",alarm.getProjectState())); + } + } + return page; + } + + @Override + public List alarmCount(Long projectId, String alarmStatus) { + List list = this.baseMapper.alarmCount(projectId, alarmStatus); + list = list.stream().filter(i->StrUtil.isNotEmpty(i.getAlarmType())).collect(Collectors.toList()); + for (AlarmTypeCountDTO countDTO : list) { + countDTO.setAlarmTypeName(dictService.getDictNameByCode("alarmType",countDTO.getAlarmType())); + } + return list; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java new file mode 100644 index 0000000..a43f7c1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.casic.missiles.modular.system.mapper.BusEventImageMapper; +import com.casic.missiles.modular.system.service.IBusEventImageService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 事件图片表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +public class BusEventImageServiceImpl extends ServiceImpl implements IBusEventImageService { + + @Override + public boolean saveBusEventImages(Long eventId, List imageList) { + imageList.forEach(i->i.setEventId(eventId)); + return this.saveBatch(imageList); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java new file mode 100644 index 0000000..21e511c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java @@ -0,0 +1,39 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.mapper.BusEventMapper; +import com.casic.missiles.modular.system.service.IBusEventImageService; +import com.casic.missiles.modular.system.service.IBusEventService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; + +/** + *

+ * 事件表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class BusEventServiceImpl extends ServiceImpl implements IBusEventService { + + private final IBusEventImageService busEventImageService; + + + @Override + @Transactional + public boolean saveBusEvent(BusEvent busEvent) { + busEvent.setCreateTime(new Date()); + boolean res = this.save(busEvent); + if(res){ + res = busEventImageService.saveBusEventImages(busEvent.getId(),busEvent.getImageList()); + } + return res; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java new file mode 100644 index 0000000..2bdb63d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java @@ -0,0 +1,102 @@ +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.core.conditions.update.UpdateWrapper; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.casic.missiles.modular.system.mapper.DeviceExtMapper; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 设备扩展信息表(安全树) 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Service +public class DeviceExtServiceImpl extends ServiceImpl implements IDeviceExtService { + + + @Override + public boolean saveDeviceExt(DeviceDetailDTO deviceDetailDTO) { + DeviceExt ext = new DeviceExt(); + ext.setDeviceId(deviceDetailDTO.getId()); + ext.setCameraCode(deviceDetailDTO.getCameraCode()); + ext.setCameraIp(deviceDetailDTO.getCameraIp()); + ext.setCameraPort(deviceDetailDTO.getCameraPort()); + ext.setGasCode(deviceDetailDTO.getGasCode()); + ext.setGasIp(deviceDetailDTO.getGasIp()); + ext.setGasPort(deviceDetailDTO.getGasPort()); + ext.setHatLiningCode(deviceDetailDTO.getHatLiningCode()); + return this.save(ext); + } + + @Override + public boolean updateDeviceExt(DeviceDetailDTO deviceDetailDTO) { + DeviceExt ext = this.selectByDeviceId(deviceDetailDTO.getId()); + ext.setCameraCode(deviceDetailDTO.getCameraCode()); + ext.setCameraIp(deviceDetailDTO.getCameraIp()); + ext.setCameraPort(deviceDetailDTO.getCameraPort()); + ext.setGasCode(deviceDetailDTO.getGasCode()); + ext.setGasIp(deviceDetailDTO.getGasIp()); + ext.setGasPort(deviceDetailDTO.getGasPort()); + ext.setHatLiningCode(deviceDetailDTO.getHatLiningCode()); + return this.updateById(ext); + } + + @Override + public boolean removeByDeviceIds(List deviceIds) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("DEVICE_ID",deviceIds); + return this.remove(queryWrapper); + } + + @Override + public boolean setGasThreshold(String gasIp, String gasPort, String threshold) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.set("GAS_THRESHOLD",threshold); + updateWrapper.eq("GAS_IP",gasIp); + updateWrapper.eq("GAS_PORT",gasPort); + return this.update(updateWrapper); + } + + @Override + public String getGasThreshold(String gasIp, String gasPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("GAS_IP",gasIp); + queryWrapper.eq("GAS_PORT",gasPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getGasThreshold() : null; + } + + private DeviceExt selectByDeviceId(Long deviceId){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVICE_ID",deviceId); + return this.getOne(queryWrapper); + } + + @Override + public Long selectByGasIpPort(String gasIp, String gasPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("GAS_IP",gasIp); + queryWrapper.eq("GAS_PORT",gasPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getDeviceId() : null; + } + + @Override + public Long selectByCameraIpPort(String cameraIp, String cameraPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("CAMERA_IP",cameraIp); + queryWrapper.eq("CAMERA_PORT",cameraPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getDeviceId() : null; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java new file mode 100644 index 0000000..9df79ef --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.mapper.DeviceMapper; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.modular.system.consts.DeviceConst.*; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class DeviceServiceImpl extends ServiceImpl implements IDeviceService { + + private final AbstractDictService dictService; + private final IDeviceExtService deviceExtService; + + private final IProjectDeviceService projectDeviceService; + + @Transactional + @Override + public boolean saveDevice(DeviceDetailDTO deviceDetailDTO) { + deviceDetailDTO.setCreateTime(new Date()); + boolean deviceRes = this.save(deviceDetailDTO); + if(deviceRes && DEVICE_TYPE_TREE.equals(deviceDetailDTO.getDeviceType())){ + deviceRes = deviceExtService.saveDeviceExt(deviceDetailDTO); + } + return deviceRes; + } + + @Transactional + @Override + public boolean updateDevice(DeviceDetailDTO deviceDetailDTO) { + boolean deviceRes = this.updateById(deviceDetailDTO); + if(deviceRes && DEVICE_TYPE_TREE.equals(deviceDetailDTO.getDeviceType())){ + deviceRes = deviceExtService.updateDeviceExt(deviceDetailDTO); + } + return deviceRes; + } + + @Transactional + @Override + public boolean deleteDevices(List deviceIds) { + return this.removeByIds(deviceIds) & deviceExtService.removeByDeviceIds(deviceIds); + } + + @Override + public Page listPage(Page page, QueryWrapper queryWrapper,String status,Long projectId) { + String ID_COLUMN_NAME = "br_device.ID"; + List useDevices = this.selectProjectDevice(null); + List projectDevices; + if(ObjectUtil.isNotEmpty(projectId)){ + projectDevices = this.selectProjectDevice(projectId); + } else { + projectDevices = null; + } + + // 查询使用中的设备(如果传了 projectId,查询 使用中&&此现场) + if(DEVICE_STATUS_USE.equals(status)){ + if(CollUtil.isEmpty(useDevices)){ + return page; + } + if(ObjectUtil.isNotEmpty(projectId) && CollUtil.isEmpty(projectDevices)){ + return page; + } + queryWrapper.in(ID_COLUMN_NAME,useDevices); + if(CollUtil.isNotEmpty(projectDevices)){ + queryWrapper.in(ID_COLUMN_NAME,projectDevices); + } + + } + + // 查询未使用的设备(如果传了 projectId,查询 未使用||此现场) + if(DEVICE_STATUS_NORMAL.equals(status)) { + if (CollUtil.isNotEmpty(useDevices)) { + if (CollUtil.isEmpty(projectDevices)) { + queryWrapper.notIn(ID_COLUMN_NAME, useDevices); + } else { + queryWrapper.and(i -> i.notIn(ID_COLUMN_NAME, useDevices).or().in(ID_COLUMN_NAME, projectDevices)); + } + } + } + + page = this.baseMapper.listDetailPage(page, queryWrapper); + for (DeviceDetailDTO record : page.getRecords()) { + record.setDeviceTypeName(dictService.getDictNameByCode("deviceType",record.getDeviceType())); + record.setIsPowerSupplyName(dictService.getDictNameByCode("isPowerSupply",record.getIsPowerSupply())); + record.setRegisterTime(DateUtil.formatDate(record.getCreateTime())); + record.setStatus(useDevices.contains(record.getId()) ? DEVICE_STATUS_USE : DEVICE_STATUS_NORMAL); + record.setStatusName(dictService.getDictNameByCode("deviceStatus",record.getStatus())); + } + return page; + } + + @Override + public List selectProjectDevice(Long projectId) { + return this.baseMapper.selectProjectDevice(projectId); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceSupportServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceSupportServiceImpl.java new file mode 100644 index 0000000..ffd01ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceSupportServiceImpl.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.mapper.DeviceMapper; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceSupportService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; + +import static com.casic.missiles.modular.system.consts.DeviceConst.DEVICE_TYPE_HAT; + +@Service +@RequiredArgsConstructor +public class DeviceSupportServiceImpl implements IDeviceSupportService { + + private final IDeviceExtService deviceExtService; + + private final DeviceMapper deviceMapper; + + @Override + public Long selectByGasIpPort(String gasIp, String gasPort) { + return deviceExtService.selectByGasIpPort(gasIp, gasPort); + } + + @Override + public List selectHelmetList() { + return deviceMapper.selectHelmetList(DEVICE_TYPE_HAT); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectDeviceServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectDeviceServiceImpl.java new file mode 100644 index 0000000..965f55c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectDeviceServiceImpl.java @@ -0,0 +1,96 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.DataGas; +import com.casic.missiles.modular.system.entity.DataTreeLocation; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.mapper.ProjectDeviceMapper; +import com.casic.missiles.modular.system.service.IDataSupportService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.utils.LngLatUtil; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.stream.Collectors; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class ProjectDeviceServiceImpl extends ServiceImpl implements IProjectDeviceService { + + private final IDataSupportService dataSupportService; + + @Override + public boolean saveProjectDeviceList(Long projectId, List projectDeviceList) { + projectDeviceList.forEach(i->i.setProjectId(projectId)); + return this.saveBatch(projectDeviceList); + } + + @Transactional + @Override + public boolean updateProjectDeviceList(Long projectId, List projectDeviceList) { + return this.deleteByProjectId(projectId) && this.saveProjectDeviceList(projectId, projectDeviceList); + } + + @Override + public boolean deleteByProjectId(Long projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("PROJECT_ID",projectId); + return this.remove(queryWrapper); + } + + @Override + public boolean deleteByProjectIds(List projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("PROJECT_ID",projectId); + return this.remove(queryWrapper); + } + + @Override + public List selectDetailByProjectId(Long projectId) { + return this.baseMapper.selectDetailByProjectId(projectId); + } + + @Override + public Long selectProjectIdByDevice(Long deviceId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVICE_ID",deviceId); + queryWrapper.exists("(select Id FROM br_work_site_info p where p.ID = br_project_device.PROJECT_ID AND p.PROJECT_STATE != '3')"); + ProjectDevice projectDevice = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(projectDevice) ? projectDevice.getProjectId() : null; + } + + @Override + public List selectDeviceLocationList(Long projectId) { + List list = this.baseMapper.selectDeviceLocationList(projectId); + for (DeviceLocationDTO locationDTO : list) { + DataGas dataGas = dataSupportService.getGasData(locationDTO.getDeviceId()); + DataTreeLocation location = dataSupportService.getTreeLocation(locationDTO.getDeviceId(),true); + if(ObjectUtil.isNotEmpty(dataGas)){ + locationDTO.setGasValue(dataGas.getGasValue()); + locationDTO.setTime(DateUtil.formatDateTime(dataGas.getTs())); + } + if(ObjectUtil.isNotEmpty(location)){ + locationDTO.setLng(location.getGdLng()); + locationDTO.setLat(location.getGdLat()); + locationDTO.setLocation(location.getLocation()); + } + } + list = list.stream().filter(i-> StrUtil.isAllNotEmpty(i.getLng(),i.getLat())).collect(Collectors.toList()); + return LngLatUtil.sort(list); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectWorkerServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectWorkerServiceImpl.java new file mode 100644 index 0000000..c3ec86c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectWorkerServiceImpl.java @@ -0,0 +1,101 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.DataHelmetHealth; +import com.casic.missiles.modular.system.entity.DataHelmetLocation; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.mapper.ProjectWorkerMapper; +import com.casic.missiles.modular.system.service.IHelmetSupportService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.system.consts.ProjectConst.WORKER_TYPE_NORMAL; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class ProjectWorkerServiceImpl extends ServiceImpl implements IProjectWorkerService { + + private final AbstractDeptService deptService; + private final IHelmetSupportService helmetSupportService; + + @Override + public boolean saveProjectWorkerList(Long projectId, List projectWorkerList) { + projectWorkerList.forEach(i->i.setProjectId(projectId)); + return this.saveBatch(projectWorkerList); + } + + @Transactional + @Override + public boolean updateProjectWorkerList(Long projectId, List projectWorkerList) { + return this.deleteByProjectId(projectId) && this.saveProjectWorkerList(projectId, projectWorkerList) ; + } + + @Override + public boolean deleteByProjectId(Long projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("PROJECT_ID",projectId); + return this.remove(queryWrapper); + } + + @Override + public boolean deleteByProjectIds(List projectIds) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("PROJECT_ID",projectIds); + return this.remove(queryWrapper); + } + + + @Override + public List selectDetailByProjectId(Long projectId,String workerType) { + List projectWorkerList = this.baseMapper.selectDetailByProjectId(projectId,workerType); + for (ProjectWorker projectWorker : projectWorkerList) { + if(ObjectUtil.isNotEmpty(projectWorker.getWorkerDeptId())){ + projectWorker.setWorkerDeptName(deptService.getDeptName(projectWorker.getWorkerDeptId())); + } + } + return projectWorkerList; + } + + @Override + public List selectWorkerLocationDTO(Long projectId) { + List projectWorkerList = this.baseMapper.selectWorkerLocationList(projectId,WORKER_TYPE_NORMAL); + for (WorkerLocationDTO workerLocationDTO : projectWorkerList) { + if(ObjectUtil.isNotEmpty(workerLocationDTO.getHatId())){ + DataHelmetLocation location = helmetSupportService.getHelmetLocation(workerLocationDTO.getHatId(),true); + if(ObjectUtil.isNotEmpty(location)){ + workerLocationDTO.setLng(location.getGdLng()); + workerLocationDTO.setLat(location.getGdLat()); + workerLocationDTO.setLocation(location.getLocation()); + } + + DataHelmetHealth health = helmetSupportService.getHelmetHealth(workerLocationDTO.getHatId()); + if(ObjectUtil.isNotEmpty(health)){ + workerLocationDTO.setBloodOxygen(health.getBloodOxygen()); + workerLocationDTO.setHeartRate(health.getHeartRate()); + workerLocationDTO.setTime(DateUtil.formatDateTime(health.getTs())); + } + } + } + projectWorkerList = projectWorkerList.stream().filter(i-> StrUtil.isAllNotEmpty(i.getLng(),i.getLat())).collect(Collectors.toList()); + return projectWorkerList; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkSiteInfoServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkSiteInfoServiceImpl.java new file mode 100644 index 0000000..5068da2 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkSiteInfoServiceImpl.java @@ -0,0 +1,151 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.mapper.WorkSiteInfoMapper; +import com.casic.missiles.modular.system.service.*; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.system.consts.ProjectConst.*; + +/** + *

+ * 作业现场表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class WorkSiteInfoServiceImpl extends ServiceImpl implements IWorkSiteInfoService { + + private final IProjectWorkerService projectWorkerService; + private final IProjectDeviceService projectDeviceService; + + private final IWorkerService workerService; + private final IBraceletService braceletService; + + private final AbstractDeptService deptService; + private final AbstractDictService dictService; + @Override + @Transactional + public boolean addWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO) { + workSiteDetailDTO.setCreateTime(new Date()); + workSiteDetailDTO.setUpdateTime(new Date()); + workSiteDetailDTO.setProjectState(PROJECT_STATE_PREPARE); + boolean res = this.save(workSiteDetailDTO); + if(res){ + res = projectDeviceService.saveProjectDeviceList(workSiteDetailDTO.getId(), workSiteDetailDTO.getDeviceList()); + res = res & projectWorkerService.saveProjectWorkerList(workSiteDetailDTO.getId(), workSiteDetailDTO.getWorkerList()); + } + return res; + } + + @Override + @Transactional + public boolean updateWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO) { + workSiteDetailDTO.setUpdateTime(new Date()); + boolean res = this.updateById(workSiteDetailDTO); + if(res){ + res = projectDeviceService.updateProjectDeviceList(workSiteDetailDTO.getId(), workSiteDetailDTO.getDeviceList()); + res = res & projectWorkerService.updateProjectWorkerList(workSiteDetailDTO.getId(), workSiteDetailDTO.getWorkerList()); + } + return res; + } + + @Override + public boolean deleteProjects(List projectIds) { + if(CollUtil.isNotEmpty(projectIds)) { + projectDeviceService.deleteByProjectIds(projectIds); + projectWorkerService.deleteByProjectIds(projectIds); + return this.removeByIds(projectIds); + } + return true; + } + + @Override + public WorkSiteDetailDTO getWorkSiteDetail(Long projectId) { + WorkSiteInfo workSiteInfo = this.getById(projectId); + WorkSiteDetailDTO workSiteDetailDTO = new WorkSiteDetailDTO(); + BeanUtil.copyProperties(workSiteInfo,workSiteDetailDTO,true); + workSiteDetailDTO.setDeviceList(projectDeviceService.selectDetailByProjectId(projectId)); + workSiteDetailDTO.setWorkerList(projectWorkerService.selectDetailByProjectId(projectId,WORKER_TYPE_NORMAL)); + + Worker responseWorker = workerService.selectWorkerDetail(workSiteDetailDTO.getWorkPerson()); + if(ObjectUtil.isNotEmpty(responseWorker)){ + workSiteDetailDTO.setWorkPersonName(responseWorker.getWorkerName()); + workSiteDetailDTO.setWorkPersonPhoneNumber(responseWorker.getPhoneNumber()); + workSiteDetailDTO.setWorkPersonDeptId(responseWorker.getDeptId()); + workSiteDetailDTO.setWorkPersonDeptName(responseWorker.getDeptName()); + } + return workSiteDetailDTO; + } + + @Override + public Page selectListPage(Page page, QueryWrapper queryWrapper) { + page = this.baseMapper.selectListPage(page, queryWrapper); + for (WorkSiteInfo workSiteInfo : page.getRecords()) { + workSiteInfo.setProjectStateName(dictService.getDictNameByCode("projectState", workSiteInfo.getProjectState())); + if(ObjectUtil.isNotEmpty(workSiteInfo.getWorkPersonDeptId())){ + workSiteInfo.setWorkPersonDeptName(deptService.getDeptName(workSiteInfo.getWorkPersonDeptId())); + } + workSiteInfo.setRegisterTime(DateUtil.formatDate(workSiteInfo.getCreateTime())); + } + return page; + } + + @Override + public boolean start(Long projectId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",projectId); + updateWrapper.set("PROJECT_STATE",PROJECT_STATE_WORKING); + updateWrapper.set("START_TIME",new Date()); + boolean res = this.update(updateWrapper); + //braceletService.enableBracelet(selectProjectBracelets(projectId)); + return res; + } + + @Override + public boolean finish(Long projectId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",projectId); + updateWrapper.set("PROJECT_STATE",PROJECT_STATE_FINISH); + updateWrapper.set("FINISH_TIME",new Date()); + boolean res = this.update(updateWrapper); + //braceletService.disableBracelet(selectProjectBracelets(projectId)); + return res; + } + + private List selectProjectBracelets(Long projectId){ + List deviceCodes = new ArrayList<>(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("PROJECT_ID",projectId); + queryWrapper.isNotNull("BRACELET_CODE"); + queryWrapper.select("BRACELET_CODE"); + List res = projectWorkerService.listObjs(queryWrapper); + if(CollUtil.isNotEmpty(res)){ + deviceCodes = res.stream().map(Object::toString).distinct().collect(Collectors.toList()); + } + return deviceCodes; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkerServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkerServiceImpl.java new file mode 100644 index 0000000..6859cff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkerServiceImpl.java @@ -0,0 +1,110 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.mapper.WorkerMapper; +import com.casic.missiles.modular.system.service.*; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.modular.system.consts.ProjectConst.WORKER_TYPE_TEMP; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class WorkerServiceImpl extends ServiceImpl implements IWorkerService { + + private final IProjectWorkerService projectWorkerService; + + private final IProjectDeviceService projectDeviceService; + private final AbstractDictService dictService; + private final AbstractDeptService deptService; + private final IDeviceExtService deviceExtService; + + @Override + @Transactional + public boolean addWorker(Worker worker, Long projectId) { + worker.setCreateTime(new Date()); + boolean res = this.save(worker); + if(res && ObjectUtil.isNotEmpty(projectId)){ + res = projectWorkerService.save(new ProjectWorker(projectId, worker.getId())); + if(ObjectUtil.isNotEmpty(worker.getWorkerAvatar())){ + // todo 向一体机推送人脸图片 + } + } + return res; + } + + @Override + public Page selectListPage(Page page, QueryWrapper ew) { + page = this.baseMapper.selectListPage(page, ew); + for (Worker worker : page.getRecords()) { + wrapperWorker(worker); + } + return page; + } + + private void wrapperWorker(Worker worker) { + if(StrUtil.isNotEmpty(worker.getGender())){ + worker.setGenderName(dictService.getDictNameByCode("sysSex", worker.getGender())); + } + if(ObjectUtil.isNotEmpty(worker.getDeptId())){ + worker.setDeptName(deptService.getDeptName(worker.getDeptId())); + } + worker.setRegisterTime(DateUtil.formatDate(worker.getCreateTime())); + if(StrUtil.isNotEmpty(worker.getStatus())){ + worker.setStatusName(dictService.getDictNameByCode("workerStatus", worker.getStatus())); + } + } + + @Override + public Worker selectWorkerDetail(Long workerId) { + Worker worker = this.getById(workerId); + if(ObjectUtil.isNotEmpty(worker)){ + wrapperWorker(worker); + } + return worker; + } + + @Override + public List faceRegister(String cameraIp, String cameraPort) { + Long deviceId = deviceExtService.selectByCameraIpPort(cameraIp, cameraPort); + if(ObjectUtil.isNotEmpty(deviceId)){ + Long projectId = projectDeviceService.selectProjectIdByDevice(deviceId); + if(ObjectUtil.isNotEmpty(projectId)){ + return this.baseMapper.selectWorkerAvatars(projectId); + } + } + return null; + } + + @Override + public List projectTempWorker(Long projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("WORKER_TYPE",WORKER_TYPE_TEMP); + queryWrapper.exists("(select ID FROM br_project_worker WHERE PROJECT_ID = "+ projectId +")"); + List workers = this.list(queryWrapper); + workers.forEach(this::wrapperWorker); + return workers; + } +} diff --git a/casic_video_283_web/pom.xml b/casic_video_283_web/pom.xml new file mode 100644 index 0000000..feace49 --- /dev/null +++ b/casic_video_283_web/pom.xml @@ -0,0 +1,166 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + casic_video_283_web + 1.0.0 + jar + casic_video_283_web + casic web启动入口 + + + + dev + + true + + + dev + + + + test + + test + + + + prod + + prod + + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-actuator + + + io.micrometer + micrometer-core + + + + + org.springframework.boot + spring-boot-starter-jdbc + + + + com.casic + casic-core + ${core.version} + + + com.casic + casic-admin-core + ${admin.version} + + + io.springfox + springfox-swagger-ui + + + + + com.casic + casic-admin-support + ${admin.version} + + + mysql + mysql-connector-java + ${mysql.driver.version} + + + com.casic + casic-area-starter + ${admin.version} + + + + com.casic + casic_video_283_server + ${pro.version} + + + + org.springframework.boot + spring-boot-starter-tomcat + + + + + casic_video_283_web-${pro.version} + + + org.apache.maven.plugins + maven-jar-plugin + ${maven.jar.plugin.version} + + + + /config/*-*.yml + **/MockController.class + + + + com.casic.missiles.CasicApplication + true + ./ + + + + + + org.apache.maven.plugins + maven-assembly-plugin + ${maven.assembly.plugin.version} + + + make-assembly + package + + single + + + + + + org.apache.maven.plugins + maven-war-plugin + ${maven.war.plugin.version} + + + + + src/main/resources + + + /config/*/* + /config/*-*.yml + + true + + + src/main/java + + **/*.xml + + true + + + + \ No newline at end of file diff --git a/casic_video_283_web/src/main/build/bin/start.bat b/casic_video_283_web/src/main/build/bin/start.bat new file mode 100644 index 0000000..1db4e88 --- /dev/null +++ b/casic_video_283_web/src/main/build/bin/start.bat @@ -0,0 +1,4 @@ +@echo off +title ${project.build.finalName} +java -jar ./lib/${project.build.finalName}.jar +@pause diff --git a/casic_video_283_web/src/main/build/bin/start.sh b/casic_video_283_web/src/main/build/bin/start.sh new file mode 100644 index 0000000..1cc33fc --- /dev/null +++ b/casic_video_283_web/src/main/build/bin/start.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +jar_name="${project.build.finalName}.jar" +echo "starting $jar_name ..." + +PID=$(ps -ef | grep ${jar_name} | grep -v grep | awk '{print $2}') + +OLD_IFS="$IFS" +IFS="," +PIDARR=($PID) +IFS="$OLD_IFS" + +if [ ! $PID ]; then + echo "process ${jar_name} not exit" +else + echo "process id: $PID" + + kill -9 ${PID} + + if [ $? -eq 0 ]; then + echo "kill ${jar_name} success" + else + echo "kill ${jar_name} fail" + exit + fi +fi + + + +nohup java -jar ./lib/${jar_name} >/dev/null 2>log & +echo "start ${jar_name} ..." \ No newline at end of file diff --git a/casic_video_283_web/src/main/build/package.xml b/casic_video_283_web/src/main/build/package.xml new file mode 100644 index 0000000..c9259ad --- /dev/null +++ b/casic_video_283_web/src/main/build/package.xml @@ -0,0 +1,43 @@ + + + package + + zip + tar.gz + + true + + + + true + true + lib + runtime + + + + + src/main/build/bin + + start.bat + start.sh + + true + 0744 + / + + + src/main/resources/config + true + + *.yml + /*/* + + /config + + + src/main/resources/i18n + / + + + \ No newline at end of file diff --git a/casic_video_283_web/src/main/java/com/casic/missiles/CasicApplication.java b/casic_video_283_web/src/main/java/com/casic/missiles/CasicApplication.java new file mode 100644 index 0000000..7b8791f --- /dev/null +++ b/casic_video_283_web/src/main/java/com/casic/missiles/CasicApplication.java @@ -0,0 +1,35 @@ +package com.casic.missiles; + +import lombok.extern.slf4j.Slf4j; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.web.servlet.ServletComponentScan; +import org.springframework.cache.annotation.EnableCaching; +import org.springframework.scheduling.annotation.EnableAsync; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +/** + * SpringBoot方式启动类 + * + * @author lwh + * @Date 2021/06/06 12:06 + */ +@SpringBootApplication +@EnableCaching +@EnableTransactionManagement(proxyTargetClass = true) +@EnableAsync +@Slf4j +@MapperScan(value = "com.casic.missiles.modular.system.mapper") +public class CasicApplication { + + static { + System.setProperty("druid.mysql.usePingMethod","false"); + } + + public static void main(String[] args) { + SpringApplication.run(CasicApplication.class, args); + log.info("CasicApplication is success!"); + } + +} diff --git a/casic_video_283_web/src/main/java/com/casic/missiles/CasicServletInitializer.java b/casic_video_283_web/src/main/java/com/casic/missiles/CasicServletInitializer.java new file mode 100644 index 0000000..e30585b --- /dev/null +++ b/casic_video_283_web/src/main/java/com/casic/missiles/CasicServletInitializer.java @@ -0,0 +1,18 @@ +package com.casic.missiles; + +import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; + +/** + * Guns Web程序启动类 + * + * @author fengshuonan + * @date 2017-05-21 9:43 + */ +public class CasicServletInitializer extends SpringBootServletInitializer { + + @Override + protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { + return application.sources(CasicApplication.class); + } +} diff --git a/casic_video_283_web/src/main/java/com/casic/missiles/config/SwaggerConfig.java b/casic_video_283_web/src/main/java/com/casic/missiles/config/SwaggerConfig.java new file mode 100644 index 0000000..fd233d8 --- /dev/null +++ b/casic_video_283_web/src/main/java/com/casic/missiles/config/SwaggerConfig.java @@ -0,0 +1,40 @@ +package com.casic.missiles.config; + + +import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j; +import io.swagger.annotations.ApiOperation; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import springfox.documentation.builders.ApiInfoBuilder; +import springfox.documentation.builders.PathSelectors; +import springfox.documentation.builders.RequestHandlerSelectors; +import springfox.documentation.service.ApiInfo; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spring.web.plugins.Docket; +import springfox.documentation.swagger2.annotations.EnableSwagger2; + +@Configuration //声明该类为配置类 +@EnableSwagger2 //声明启动Swagger2 +@EnableKnife4j +public class SwaggerConfig{ + private ApiInfo apiInfo() { + return new ApiInfoBuilder() + .title("北燃四分二期接口文档")//文档说明 + .version("1.0.0")//文档版本说明 + .build(); + } + + @Bean + public Docket productApi() { + return new Docket(DocumentationType.SWAGGER_2) + .apiInfo(apiInfo()) + .select() + .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) //添加ApiOperiation注解的被扫描 + .paths(PathSelectors.any()) + .build(); + + } + + +} + diff --git a/casic_video_283_web/src/main/java/com/casic/missiles/controller/MockController.java b/casic_video_283_web/src/main/java/com/casic/missiles/controller/MockController.java new file mode 100644 index 0000000..eae6c54 --- /dev/null +++ b/casic_video_283_web/src/main/java/com/casic/missiles/controller/MockController.java @@ -0,0 +1,82 @@ +package com.casic.missiles.controller; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.application.enums.LoginType; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.model.auth.CasicCustomToken; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.response.SuccessResponseData; +import com.casic.missiles.modular.domain.constants.PermissionConstants; +import com.casic.missiles.modular.interfaces.log.LogManager; +import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; +import com.casic.missiles.modular.system.dto.LoginSuccessDTO; +import lombok.extern.slf4j.Slf4j; +import org.apache.shiro.subject.Subject; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.security.NoSuchAlgorithmException; +import java.util.Map; + +import static com.casic.missiles.core.util.HttpContext.getIp; + + +/** + * 仅为mock登录使用 + * + * @author lenovo + */ +@Controller +@RequestMapping("/route") +@Slf4j +public class MockController extends BaseController { + + /** + * 获取mockToken + */ + @GetMapping("/mockToken") + @ResponseBody + public Object mockToken(String username, String password) { + super.getSession().setAttribute(PermissionConstants.IS_APP, false); + SuccessResponseData resultData = new SuccessResponseData(); + if (StrUtil.hasEmpty(username, password)) { + username = "admin"; + password = "111111"; + } + Subject currentUser = ShiroKit.getSubject(); + + try { + Map key = RSAUtils.genKeyPair(); + ShiroKit.getSession().setAttribute(PermissionConstants.PRIVATE_KEY, key.get(RSAUtils.RSAPrivateKey)); + + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } + + //token自定义 + CasicCustomToken token = new CasicCustomToken(username, password); + token.setType(LoginType.PASSWORD); + token.setRememberMe(false); + + try { + currentUser.login(token); + } catch (Exception e) { + e.printStackTrace(); + } + AuthUser shiroUser = ShiroKit.getUser(); + super.getSession().setAttribute("shiroUser", shiroUser); + super.getSession().setAttribute("username", shiroUser.getAccount()); + super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); + + LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), getIp())); + + ShiroKit.getSession().setAttribute("sessionFlag", true); + resultData.setData(new LoginSuccessDTO(ShiroKit.getSession().getId().toString(), null)); + resultData.setMessage("登录成功"); + return resultData; + } +} diff --git a/casic_video_283_web/src/main/resources/META-INF/spring-devtools.properties b/casic_video_283_web/src/main/resources/META-INF/spring-devtools.properties new file mode 100644 index 0000000..e3b0a7f --- /dev/null +++ b/casic_video_283_web/src/main/resources/META-INF/spring-devtools.properties @@ -0,0 +1 @@ +restart.include.beetl=/beetl-2.7.15.jar \ No newline at end of file diff --git a/casic_video_283_web/src/main/resources/config/application-dev.yml b/casic_video_283_web/src/main/resources/config/application-dev.yml new file mode 100644 index 0000000..fea6255 --- /dev/null +++ b/casic_video_283_web/src/main/resources/config/application-dev.yml @@ -0,0 +1,31 @@ +server: + port: 8083 +################### spring配置 ################### +spring: + datasource: + url: jdbc:mysql://111.198.10.15:11336/casic_283?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=Asia/Shanghai&&allowMultiQueries=true + username: root + password: Casic203 + jms: + pub-sub-domain: true +# session: +# store-type: redis + redis: + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh +# serializer: org.springframework.data.redis.serializer.StringRedisSerializer +# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer +casic: + #kaptcha-open: false #是否开启登录时验证码 (true/false) + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/webjars/**,/swagger-ui.html,/swagger-resources + #flowable数据源和多数据源配置 + db: + init: + enable: false + file: + uploadPath: /casic/casic-gas-operation-file/ +logging: + level.root: info + level.com.casic: debug + level.org.springframework.web: info \ No newline at end of file diff --git a/casic_video_283_web/src/main/resources/config/application-prod.yml b/casic_video_283_web/src/main/resources/config/application-prod.yml new file mode 100644 index 0000000..634fe1a --- /dev/null +++ b/casic_video_283_web/src/main/resources/config/application-prod.yml @@ -0,0 +1,29 @@ +server: + port: 8085 +# context-path: /callcenter/api +################### spring配置 ################### +spring: + datasource: + url: jdbc:mysql://111.198.10.15:11336/casic_283?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + username: root + password: Casic203 + initial-size: 2 + min-idle: 1 + jms: + pub-sub-domain: true + # session: + # store-type: redis + redis: + host: 127.0.0.1 + port: 6379 + password: + +#flowable数据源和多数据源配置 +casic: + kaptcha-open: false #是否开启登录时验证码 (true/false) + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/bracelet/receive/* +logging: + level.root: info + level.com.casic: debug + path: logs/ + file: missiles.log \ No newline at end of file diff --git a/casic_video_283_web/src/main/resources/config/application-test.yml b/casic_video_283_web/src/main/resources/config/application-test.yml new file mode 100644 index 0000000..06ebf54 --- /dev/null +++ b/casic_video_283_web/src/main/resources/config/application-test.yml @@ -0,0 +1,23 @@ +server: + port: 11307 +################### spring配置 ################### +spring: + datasource: + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://localhost:3307/casic_283?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + username: root + password: root + initial-size: 2 + min-idle: 1 + jms: + pub-sub-domain: true +# session: +# store-type: redis +casic: + # kaptcha-open: false #是否开启登录时验证码 (true/false) + nologin-urls: /user/login,/user/appLogin,/kaptcha/base64,/config/baseConfig,/route/mockToken,/workflow/** +logging: + level.root: info + level.com.casic: debug + path: logs/ + file: missiles.log \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java new file mode 100644 index 0000000..73d7799 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.dto; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "AlarmUpload",description = "报警上传") +@Data +public class AlarmUpload { + + @ApiModelProperty(value = "摄像头ip") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + @ApiModelProperty(value = "安全树甲烷设备ip") + private String gasIp; + @ApiModelProperty(value = "安全树甲烷设备端口") + private String gasPort; + @ApiModelProperty(value = "报警值") + private String alarmValue; + @ApiModelProperty(value = "报警时间") + private String alarmTime; + @ApiModelProperty(value = "报警类型") + private String alarmType; + @ApiModelProperty(value = "报警图片") + private String alarmImage; + @ApiModelProperty(value = "报警内容") + private String alarmContent; + + @Override + public String toString() { + return "AlarmUpload{" + + "cameraIp='" + cameraIp + '\'' + + ", cameraPort='" + cameraPort + '\'' + + ", gasIp='" + gasIp + '\'' + + ", gasPort='" + gasPort + '\'' + + ", alarmValue='" + alarmValue + '\'' + + ", alarmTime='" + alarmTime + '\'' + + ", alarmType='" + alarmType + '\'' + + ", alarmImage='" + (StrUtil.isNotEmpty(alarmImage) ? alarmImage.substring(0,50) : "null") + '\'' + + ", alarmContent='" + alarmContent + '\'' + + '}'; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java new file mode 100644 index 0000000..ea518d9 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.modular.system.entity.Device; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("DeviceDetailDTO") +@Data +public class DeviceDetailDTO extends Device { + + @ApiModelProperty(value = "摄像头编号") + private String cameraCode; + + @ApiModelProperty(value = "摄像头IP") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + + @ApiModelProperty(value = "激甲编号") + private String gasCode; + + @ApiModelProperty(value = "激甲IP") + private String gasIp; + + @ApiModelProperty(value = "激甲端口") + private String gasPort; + + @ApiModelProperty(value = "智能帽衬编号") + private String hatLiningCode; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java new file mode 100644 index 0000000..29378ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("WorkSiteDetailDTO") +public class WorkSiteDetailDTO extends WorkSiteInfo { + + @ApiModelProperty(value = "安全树列表",dataType = "ProjectDevice") + private List deviceList; + + @ApiModelProperty(value = "人员列表",dataType = "ProjectWorker") + private List workerList; + + + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java new file mode 100644 index 0000000..6fd7b24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java @@ -0,0 +1,68 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "WorkerLocationDTO",description = "人员位置列表(首页)") +@Data +public class WorkerLocationDTO { + + @ApiModelProperty("人员ID") + private Long workerId; + + @ApiModelProperty("人员姓名") + private String workerName; + + @ApiModelProperty("安全帽编号") + private String hatCode; + + @ApiModelProperty("安全帽ID") + private Long hatId; + + @ApiModelProperty("背心编号") + private String vastCode; + + @ApiModelProperty("手环编号") + private String braceletCode; + + @ApiModelProperty("位置") + private String location; + + @ApiModelProperty("时间") + private String time; + + @ApiModelProperty("经度") + private String lng; + + @ApiModelProperty("纬度") + private String lat; + + @ApiModelProperty("心率") + private String heartRate; + + @ApiModelProperty("血氧") + private String bloodOxygen; + + @ApiModelProperty("一氧化碳") + private String co; + + @ApiModelProperty("甲烷") + private String gas; + + @ApiModelProperty("硫化氢") + private String h2s; + + @ApiModelProperty("氧气") + private String o2; + + @ApiModelProperty("信号") + private String signal; + + @ApiModelProperty("电量") + private String cell; + + @ApiModelProperty("是否报警") + private boolean alarmFlag; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java new file mode 100644 index 0000000..efb4a23 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java @@ -0,0 +1,159 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 报警记录表 + *

+ * + * @author zyj + * @since 2023-05-16 + */ +@Data +@ApiModel("Alarm") +@TableName("br_bus_alarm") +public class BusAlarm implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @ApiModelProperty(value = "设备ID") + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 报警类型 + */ + @ApiModelProperty(value = "报警类型") + @TableField("ALARM_TYPE") + private String alarmType; + + /** + * 报警状态 + */ + @ApiModelProperty(value = "报警状态") + @TableField("ALARM_STATUS") + private String alarmStatus; + + /** + * 报警值 + */ + @ApiModelProperty(value = "报警值") + @TableField("ALARM_VALUE") + private String alarmValue; + + /** + * 报警图片 + */ + @ApiModelProperty(value = "报警图片") + @TableField("ALARM_IMAGE") + private String alarmImage; + + /** + * 报警内容 + */ + @ApiModelProperty(value = "报警内容") + @TableField("ALARM_CONTENT") + private String alarmContent; + + /** + * 报警时间 + */ + @ApiModelProperty(value = "报警时间") + @TableField("ALARM_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date alarmTime; + + /** + * 消警时间 + */ + @ApiModelProperty(value = "消警时间") + @TableField("CANCEL_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + /** + * 报警位置经度 + */ + @ApiModelProperty(value = "报警位置经度") + @TableField("ALARM_LNG") + private String alarmLng; + + /** + * 报警位置纬度 + */ + @ApiModelProperty(value = "报警位置纬度") + @TableField("ALARM_LAT") + private String alarmLat; + + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmStatusName; + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmTypeName; + @ApiModelProperty("作业名称") + @TableField(exist = false) + private String workTitle; + @ApiModelProperty("所属道路") + @TableField(exist = false) + private String workRoad; + @ApiModelProperty("作业状态") + @TableField(exist = false) + private String projectState; + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + @ApiModelProperty("负责人姓名") + @TableField(exist = false) + private String workPersonName; + @ApiModelProperty("负责人联系方式") + @TableField(exist = false) + private String workPersonPhoneNumber; + + + @Override + public String toString() { + return "BusAlarm{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + ", alarmType=" + alarmType + + ", alarmValue=" + alarmValue + + ", alarmStatus=" + alarmStatus + + ", alarmImage=" + alarmImage + + ", alarmContent=" + alarmContent + + ", alarmTime=" + alarmTime + + ", cancelTime=" + cancelTime + + ", alarmLng=" + alarmLng + + ", alarmLat=" + alarmLat + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java new file mode 100644 index 0000000..a0b7543 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + *

+ * 事件表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event") +@Data +@ApiModel("BusEvent") +public class BusEvent implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("事件ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件标题 + */ + @ApiModelProperty("事件名称") + @TableField("EVENT_TITLE") + private String eventTitle; + + /** + * 上报人员 + */ + @ApiModelProperty("上报人员") + @TableField("UPLOAD_NAME") + private String uploadName; + + /** + * 联系方式 + */ + @ApiModelProperty("联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 事件描述 + */ + @ApiModelProperty("事件描述") + @TableField("EVENT_DESCRIPTION") + private String eventDescription; + + @ApiModelProperty("经度") + @TableField("LNG") + private String lng; + + @ApiModelProperty("纬度") + @TableField("LAT") + private String lat; + + /** + * 事件上传时间 + */ + @ApiModelProperty("事件上传时间") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty("事件照片") + @TableField(exist = false) + private List imageList; + + + + @Override + public String toString() { + return "BusEvent{" + + "id=" + id + + ", eventTitle=" + eventTitle + + ", uploadName=" + uploadName + + ", phoneNumber=" + phoneNumber + + ", eventDescription=" + eventDescription + + ", lng=" + lng + + ", lat=" + lat + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java new file mode 100644 index 0000000..1e75245 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 事件图片表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event_image") +@Data +@ApiModel("BusEventImage") +public class BusEventImage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件ID + */ + @TableField("EVENT_ID") + private Long eventId; + + /** + * 报警图片 + */ + @TableField("IMAGE") + @ApiModelProperty("图片url") + private String image; + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java new file mode 100644 index 0000000..df89c70 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.core.base.json.DateDeserializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Device") +@TableName("br_device") +@Data +public class Device implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "设备ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty(value = "设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + /** + * 设备类型 + */ + @ApiModelProperty(value = "设备类型") + @TableField("DEVICE_TYPE") + private String deviceType; + + /** + * 设备批次 + */ + @ApiModelProperty(value = "设备批次") + @TableField("DEVICE_BATCH") + private String deviceBatch; + + /** + * 厂家 + */ + @ApiModelProperty(value = "厂家") + @TableField("MANUFACTURER") + private String manufacturer; + + /** + * 是否供电 + */ + @ApiModelProperty(value = "是否供电") + @TableField("IS_POWER_SUPPLY") + private String isPowerSupply; + + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间",dataType = "Date") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty(value = "设备类型名称") + @TableField(exist = false) + private String deviceTypeName; + + @ApiModelProperty(value = "是否供电名称") + @TableField(exist = false) + private String isPowerSupplyName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", deviceCode=" + deviceCode + + ", deviceType=" + deviceType + + ", deviceBatch=" + deviceBatch + + ", manufacturer=" + manufacturer + + ", isPowerSupply=" + isPowerSupply + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java new file mode 100644 index 0000000..5ee7015 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java @@ -0,0 +1,99 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 设备扩展信息表(安全树) + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Data +@TableName("br_device_ext") +public class DeviceExt implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 摄像头编号 + */ + @TableField("CAMERA_CODE") + private String cameraCode; + + /** + * 摄像头IP + */ + @TableField("CAMERA_IP") + private String cameraIp; + + /** + * 摄像头端口 + */ + @TableField("CAMERA_PORT") + private String cameraPort; + + /** + * 激甲编号 + */ + @TableField("GAS_CODE") + private String gasCode; + + /** + * 激甲IP + */ + @TableField("GAS_IP") + private String gasIp; + + /** + * 激甲端口 + */ + @TableField("GAS_PORT") + private String gasPort; + + /** + * 甲烷报警阈值 + */ + @TableField("GAS_THRESHOLD") + private String gasThreshold; + + @TableField(value = "HAT_LINING_CODE") + private String hatLiningCode; + + + @Override + public String toString() { + return "DeviceExt{" + + "id=" + id + + ", deviceId=" + deviceId + + ", cameraCode=" + cameraCode + + ", cameraIp=" + cameraIp + + ", cameraPort=" + cameraPort + + ", gasCode=" + gasCode + + ", gasIp=" + gasIp + + ", gasPort=" + gasPort + + ", gasThreshold=" + gasThreshold + + ", hatLiningCode=" + hatLiningCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java new file mode 100644 index 0000000..c4f3472 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java @@ -0,0 +1,62 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Data +@ApiModel("ProjectDevice") +@TableName("br_project_device") +public class ProjectDevice implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + @ApiModelProperty("设备ID(新增编辑时传)") + private Long deviceId; + + /** + * 设备编号 + */ + @TableField(exist = false) + @ApiModelProperty("设备编号(详情中展示,新增编辑不用传)") + private String deviceCode; + + @Override + public String toString() { + return "ProjectDevice{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java new file mode 100644 index 0000000..10b23c4 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java @@ -0,0 +1,104 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("ProjectWorker") +@TableName("br_project_worker") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ProjectWorker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 人员ID + */ + @ApiModelProperty("人员ID") + @TableField("WORKER_ID") + private Long workerId; + + /** + * 安全帽编号 + */ + @ApiModelProperty("安全帽编号") + @TableField("HAT_CODE") + private String hatCode; + + /** + * 背心编号 + */ + @ApiModelProperty("背心编号") + @TableField("VAST_CODE") + private String vastCode; + + /** + * 手环编号 + */ + @ApiModelProperty("手环编号") + @TableField("BRACELET_CODE") + private String braceletCode; + + @ApiModelProperty("人员姓名(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerName; + + @ApiModelProperty("人员部门ID(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptId; + + @ApiModelProperty("人员部门名称(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptName; + + @ApiModelProperty("人员联系方式(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerPhoneNumber; + + public ProjectWorker(Long projectId, Long workerId) { + this.projectId = projectId; + this.workerId = workerId; + } + + @Override + public String toString() { + return "ProjectWorker{" + + "id=" + id + + ", projectId=" + projectId + + ", workerId=" + workerId + + ", hatCode=" + hatCode + + ", vastCode=" + vastCode + + ", braceletCode=" + braceletCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java new file mode 100644 index 0000000..fa6f41d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 作业现场表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("WorkSiteInfo") +@TableName("br_work_site_info") +@Data +public class WorkSiteInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("作业现场ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业名称 + */ + @ApiModelProperty("作业名称") + @TableField("WORK_TITLE") + private String workTitle; + + /** + * 责任人 + */ + @ApiModelProperty("责任人(人员ID)") + @TableField("WORK_PERSON") + private Long workPerson; + + /** + * 作业描述 + */ + @ApiModelProperty("作业描述") + @TableField("WORK_SITE_DESC") + private String workSiteDesc; + + /** + * 作业状态 + */ + @ApiModelProperty("作业状态") + @TableField("PROJECT_STATE") + private String projectState; + + /** + * 所属道路 + */ + @ApiModelProperty("所属道路") + @TableField("WORK_ROAD") + private String workRoad; + + @TableField("IMAGE_URL") + private String imageUrl; + + @TableField("CREATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + @TableField("UPDATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("FINISH_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + @ApiModelProperty("负责人姓名(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonName; + + @ApiModelProperty("负责人联系方式(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonPhoneNumber; + + @ApiModelProperty("负责人所属部门ID(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private Long workPersonDeptId; + + @ApiModelProperty("负责人所属部门名称(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonDeptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + + @Override + public String toString() { + return "WorkSiteInfo{" + + "id=" + id + + ", workTitle=" + workTitle + + ", workPerson=" + workPerson + + ", workSiteDesc=" + workSiteDesc + + ", projectState=" + projectState + + ", imageUrl=" + imageUrl + + ", updateTime=" + updateTime + + ", workRoad=" + workRoad + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java new file mode 100644 index 0000000..28a4daa --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java @@ -0,0 +1,147 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Worker") +@TableName("br_worker") +@Data +public class Worker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "人员ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 姓名 + */ + @ApiModelProperty(value = "姓名") + @TableField("WORKER_NAME") + private String workerName; + + /** + * 性别 + */ + @ApiModelProperty(value = "性别") + @TableField("GENDER") + private String gender; + + /** + * 所属部门 + */ + @ApiModelProperty(value = "所属部门(人员管理)") + @TableField("DEPT_ID") + private Long deptId; + + /** + * 所属单位 + */ + @ApiModelProperty(value = "所属单位(入场申请中使用)") + @TableField("OWNER_SHIP") + private String ownerShip; + + /** + * 联系方式 + */ + @ApiModelProperty(value = "联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 证件号 + */ + @ApiModelProperty(value = "证件号") + @TableField("ID_CARD_NUMBER") + private String idCardNumber; + + /** + * 入场原因 + */ + @ApiModelProperty(value = "入场原因(入场申请中使用)") + @TableField("ENTER_REASON") + private String enterReason; + + /** + * 入场人脸照片 + */ + @ApiModelProperty(value = "人脸照片(照片路径)") + @TableField("WORKER_AVATAR") + private String workerAvatar; + + /** + * 申请入场时间 + */ + @ApiModelProperty(value = "注册时间/申请入场时间") + @TableField("CREATE_TIME") + private Date createTime; + + /** + * 人员类型 + */ + @ApiModelProperty(value = "人员类型(区分人员管理和入场申请)") + @TableField("WORKER_TYPE") + private String workerType; + + @ApiModelProperty(value = "性别名称") + @TableField(exist = false) + private String genderName; + + @ApiModelProperty(value = "部门名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @ApiModelProperty(value = "是否注册(0未注册;1已注册)",allowableValues = "0,1") + @TableField(exist = false) + private String isRegister; + + @Override + public String toString() { + return "Worker{" + + "id=" + id + + ", workerName=" + workerName + + ", gender=" + gender + + ", deptId=" + deptId + + ", ownerShip=" + ownerShip + + ", phoneNumber=" + phoneNumber + + ", idCardNumber=" + idCardNumber + + ", enterReason=" + enterReason + + ", workerAvatar=" + workerAvatar + + ", createTime=" + createTime + + ", workerType=" + workerType + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java new file mode 100644 index 0000000..9801742 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警记录表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusAlarmMapper extends BaseMapper { + + Page listPage(Page page,@Param("ew") QueryWrapper queryWrapper); + + void cancelAlarm(@Param("deviceId")Long deviceId,@Param("alarmType") String alarmType); + + List alarmCount(@Param("projectId")Long projectId, @Param("alarmStatus")String alarmStatus); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java new file mode 100644 index 0000000..9590b7d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件图片表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventImageMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java new file mode 100644 index 0000000..3c85edf --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java new file mode 100644 index 0000000..4ca9212 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 设备扩展信息表(安全树) Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface DeviceExtMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java new file mode 100644 index 0000000..444c0c5 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Mapper +public interface DeviceMapper extends BaseMapper { + + Page listDetailPage(Page page,@Param("ew") QueryWrapper ew); + + List selectProjectDevice(@Param("projectId") Long projectId); + + List selectHelmetList(@Param("deviceType")String deviceType); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java new file mode 100644 index 0000000..1d0c14e --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectDeviceMapper extends BaseMapper { + List selectDetailByProjectId(@Param("projectId") Long projectId); + + List selectDeviceLocationList(@Param("projectId") Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java new file mode 100644 index 0000000..58583d1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectWorkerMapper extends BaseMapper { + + List selectDetailByProjectId(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + + List selectWorkerLocationList(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java new file mode 100644 index 0000000..a4934d2 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +/** + *

+ * 作业现场表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkSiteInfoMapper extends BaseMapper { + + Page selectListPage(Page page,@Param("ew") QueryWrapper ew); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java new file mode 100644 index 0000000..258fb12 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkerMapper extends BaseMapper { + + + Page selectListPage(Page page, @Param("ew") QueryWrapper ew); + + List selectWorkerAvatars(@Param("projectId")Long projectId); + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml new file mode 100644 index 0000000..595088a --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml @@ -0,0 +1,58 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml new file mode 100644 index 0000000..fbc3db3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml new file mode 100644 index 0000000..627d573 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml new file mode 100644 index 0000000..5321d1c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml new file mode 100644 index 0000000..94262e1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml @@ -0,0 +1,97 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml new file mode 100644 index 0000000..c6d1c24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml @@ -0,0 +1,29 @@ + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml new file mode 100644 index 0000000..8d2de10 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml new file mode 100644 index 0000000..8f01326 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml @@ -0,0 +1,26 @@ + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml new file mode 100644 index 0000000..3e28b39 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml @@ -0,0 +1,56 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java new file mode 100644 index 0000000..f63c19c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 报警记录表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusAlarmService extends IService { + + boolean alarmUpload(AlarmUpload alarmUpload); + + Page listPage(Page page,QueryWrapper queryWrapper); + + List alarmCount(Long projectId,String alarmStatus); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java new file mode 100644 index 0000000..b1187ed --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 事件图片表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusEventImageService extends IService { + + boolean saveBusEventImages(Long eventId, List imageList); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java new file mode 100644 index 0000000..85c48d0 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 事件表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusEventService extends IService { + + boolean saveBusEvent(BusEvent busEvent); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java new file mode 100644 index 0000000..6fc5361 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 设备扩展信息表(安全树) 服务类 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface IDeviceExtService extends IService { + + boolean saveDeviceExt(DeviceDetailDTO deviceDetailDTO); + + boolean updateDeviceExt(DeviceDetailDTO deviceDetailDTO); + + boolean removeByDeviceIds(List deviceIds); + + boolean setGasThreshold(String gasIp,String gasPort,String threshold); + + String getGasThreshold(String gasIp,String gasPort); + + Long selectByGasIpPort(String gasIp,String gasPort); + + Long selectByCameraIpPort(String cameraIp,String cameraPort); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java new file mode 100644 index 0000000..9e62756 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java @@ -0,0 +1,32 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IDeviceService extends IService { + + boolean saveDevice(DeviceDetailDTO deviceDetailDTO); + + boolean updateDevice(DeviceDetailDTO deviceDetailDTO); + + boolean deleteDevices(List deviceIds); + + Page listPage(Page page, QueryWrapper queryWrapper, String status,Long projectId); + + List selectProjectDevice(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java new file mode 100644 index 0000000..8599411 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IProjectDeviceService extends IService { + + boolean saveProjectDeviceList(Long projectId, List projectDeviceList); + + boolean updateProjectDeviceList(Long projectId, List projectDeviceList); + + boolean deleteByProjectId(Long projectId); + + boolean deleteByProjectIds(List projectIds); + + List selectDetailByProjectId(Long projectId); + + Long selectProjectIdByDevice(Long deviceId); + + List selectDeviceLocationList(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java new file mode 100644 index 0000000..e921bc3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IProjectWorkerService extends IService { + + boolean saveProjectWorkerList(Long projectId, List projectWorkerList); + + boolean updateProjectWorkerList(Long projectId, List projectWorkerList); + + boolean deleteByProjectId(Long projectId); + + boolean deleteByProjectIds(List projectIds); + + List selectDetailByProjectId(Long projectId,String workerType); + + List selectWorkerLocationDTO(Long projectId); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java new file mode 100644 index 0000000..58a8590 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; +/** + *

+ * 作业现场表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IWorkSiteInfoService extends IService { + + boolean addWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO); + + boolean updateWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO); + + boolean deleteProjects(List projectIds); + + WorkSiteDetailDTO getWorkSiteDetail(Long projectId); + + Page selectListPage(Page page, QueryWrapper queryWrapper); + + boolean start(Long projectId); + + boolean finish(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java new file mode 100644 index 0000000..6c6ee98 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.extension.service.IService; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IWorkerService extends IService { + + boolean addWorker(Worker worker,Long projectId); + + Page selectListPage(Page page,QueryWrapper ew); + + Worker selectWorkerDetail(Long workerId); + + List faceRegister(String cameraIp,String cameraPort); + + List projectTempWorker(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java new file mode 100644 index 0000000..b44de1d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.consts.AlarmTypeEnum; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.entity.DataTreeLocation; +import com.casic.missiles.modular.system.mapper.BusAlarmMapper; +import com.casic.missiles.modular.system.service.*; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +/** + *

+ * 报警记录表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +@Slf4j +public class BusAlarmServiceImpl extends ServiceImpl implements IBusAlarmService { + + private final IDeviceExtService deviceExtService; + private final IDeviceService deviceService; + private final IProjectDeviceService projectDeviceService; + + private final ICasicFileService fileService; + + private final AbstractDictService dictService; + private final IDataSupportService dataSupportService; + + @Override + @Transactional + public boolean alarmUpload(AlarmUpload alarmUpload) { + log.info("alarm upload ==> {}",alarmUpload.toString()); + Long deviceId = null; + if(StrUtil.isAllNotBlank(alarmUpload.getGasIp(),alarmUpload.getGasPort())){ + deviceId = deviceExtService.selectByGasIpPort(alarmUpload.getGasIp(),alarmUpload.getGasPort()); + } + if(ObjectUtil.isEmpty(deviceId) && StrUtil.isAllNotBlank(alarmUpload.getCameraIp(),alarmUpload.getCameraPort())){ + deviceId = deviceExtService.selectByCameraIpPort(alarmUpload.getCameraIp(),alarmUpload.getCameraPort()); + } + + if(ObjectUtil.isEmpty(deviceId)){ + return false; + } + + BusAlarm alarm = new BusAlarm(); + alarm.setDeviceId(deviceId); + alarm.setProjectId(projectDeviceService.selectProjectIdByDevice(deviceId)); + alarm.setAlarmValue(alarmUpload.getAlarmValue()); + if(StrUtil.isNotEmpty(alarmUpload.getAlarmTime())){ + alarm.setAlarmTime(DateUtil.parseDateTime(alarmUpload.getAlarmTime())); + }else { + alarm.setAlarmTime(new Date()); + } + + alarm.setAlarmType(alarmUpload.getAlarmType()); + alarm.setAlarmContent(alarmUpload.getAlarmContent()); + if(StrUtil.isNotEmpty(alarmUpload.getAlarmImage())){ + String imgBase64 = "data:image/jpeg;base64," + alarmUpload.getAlarmImage(); + String imageUrl = fileService.saveFile(imgBase64); + alarm.setAlarmImage(imageUrl); + } + alarm.setAlarmStatus(ALARM_STATUS_ON); + + DataTreeLocation treeLocation = dataSupportService.getTreeLocation(deviceId); + if(ObjectUtil.isNotEmpty(treeLocation)){ + alarm.setAlarmLng(treeLocation.getGdLng()); + alarm.setAlarmLat(treeLocation.getGdLat()); + } + + //自动消警 + AlarmTypeEnum alarmTypeEnum = AlarmTypeEnum.getByAlarmType(alarm.getAlarmType()); + if(ObjectUtil.isNotEmpty(alarmTypeEnum) && alarmTypeEnum.isAutoCancel()){ + this.baseMapper.cancelAlarm(deviceId,alarm.getAlarmType()); + } + return this.save(alarm); + } + + @Override + public Page listPage(Page page, QueryWrapper queryWrapper) { + page = this.baseMapper.listPage(page, queryWrapper); + for (BusAlarm alarm : page.getRecords()) { + alarm.setAlarmTypeName(dictService.getDictNameByCode("alarmType",alarm.getAlarmType())); + alarm.setAlarmStatusName(dictService.getDictNameByCode("alarmStatus",alarm.getAlarmStatus())); + if(StrUtil.isNotEmpty(alarm.getProjectState())){ + alarm.setProjectStateName(dictService.getDictNameByCode("projectStatus",alarm.getProjectState())); + } + } + return page; + } + + @Override + public List alarmCount(Long projectId, String alarmStatus) { + List list = this.baseMapper.alarmCount(projectId, alarmStatus); + list = list.stream().filter(i->StrUtil.isNotEmpty(i.getAlarmType())).collect(Collectors.toList()); + for (AlarmTypeCountDTO countDTO : list) { + countDTO.setAlarmTypeName(dictService.getDictNameByCode("alarmType",countDTO.getAlarmType())); + } + return list; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java new file mode 100644 index 0000000..a43f7c1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.casic.missiles.modular.system.mapper.BusEventImageMapper; +import com.casic.missiles.modular.system.service.IBusEventImageService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 事件图片表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +public class BusEventImageServiceImpl extends ServiceImpl implements IBusEventImageService { + + @Override + public boolean saveBusEventImages(Long eventId, List imageList) { + imageList.forEach(i->i.setEventId(eventId)); + return this.saveBatch(imageList); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java new file mode 100644 index 0000000..21e511c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java @@ -0,0 +1,39 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.mapper.BusEventMapper; +import com.casic.missiles.modular.system.service.IBusEventImageService; +import com.casic.missiles.modular.system.service.IBusEventService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; + +/** + *

+ * 事件表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class BusEventServiceImpl extends ServiceImpl implements IBusEventService { + + private final IBusEventImageService busEventImageService; + + + @Override + @Transactional + public boolean saveBusEvent(BusEvent busEvent) { + busEvent.setCreateTime(new Date()); + boolean res = this.save(busEvent); + if(res){ + res = busEventImageService.saveBusEventImages(busEvent.getId(),busEvent.getImageList()); + } + return res; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java new file mode 100644 index 0000000..2bdb63d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java @@ -0,0 +1,102 @@ +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.core.conditions.update.UpdateWrapper; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.casic.missiles.modular.system.mapper.DeviceExtMapper; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 设备扩展信息表(安全树) 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Service +public class DeviceExtServiceImpl extends ServiceImpl implements IDeviceExtService { + + + @Override + public boolean saveDeviceExt(DeviceDetailDTO deviceDetailDTO) { + DeviceExt ext = new DeviceExt(); + ext.setDeviceId(deviceDetailDTO.getId()); + ext.setCameraCode(deviceDetailDTO.getCameraCode()); + ext.setCameraIp(deviceDetailDTO.getCameraIp()); + ext.setCameraPort(deviceDetailDTO.getCameraPort()); + ext.setGasCode(deviceDetailDTO.getGasCode()); + ext.setGasIp(deviceDetailDTO.getGasIp()); + ext.setGasPort(deviceDetailDTO.getGasPort()); + ext.setHatLiningCode(deviceDetailDTO.getHatLiningCode()); + return this.save(ext); + } + + @Override + public boolean updateDeviceExt(DeviceDetailDTO deviceDetailDTO) { + DeviceExt ext = this.selectByDeviceId(deviceDetailDTO.getId()); + ext.setCameraCode(deviceDetailDTO.getCameraCode()); + ext.setCameraIp(deviceDetailDTO.getCameraIp()); + ext.setCameraPort(deviceDetailDTO.getCameraPort()); + ext.setGasCode(deviceDetailDTO.getGasCode()); + ext.setGasIp(deviceDetailDTO.getGasIp()); + ext.setGasPort(deviceDetailDTO.getGasPort()); + ext.setHatLiningCode(deviceDetailDTO.getHatLiningCode()); + return this.updateById(ext); + } + + @Override + public boolean removeByDeviceIds(List deviceIds) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("DEVICE_ID",deviceIds); + return this.remove(queryWrapper); + } + + @Override + public boolean setGasThreshold(String gasIp, String gasPort, String threshold) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.set("GAS_THRESHOLD",threshold); + updateWrapper.eq("GAS_IP",gasIp); + updateWrapper.eq("GAS_PORT",gasPort); + return this.update(updateWrapper); + } + + @Override + public String getGasThreshold(String gasIp, String gasPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("GAS_IP",gasIp); + queryWrapper.eq("GAS_PORT",gasPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getGasThreshold() : null; + } + + private DeviceExt selectByDeviceId(Long deviceId){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVICE_ID",deviceId); + return this.getOne(queryWrapper); + } + + @Override + public Long selectByGasIpPort(String gasIp, String gasPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("GAS_IP",gasIp); + queryWrapper.eq("GAS_PORT",gasPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getDeviceId() : null; + } + + @Override + public Long selectByCameraIpPort(String cameraIp, String cameraPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("CAMERA_IP",cameraIp); + queryWrapper.eq("CAMERA_PORT",cameraPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getDeviceId() : null; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java new file mode 100644 index 0000000..9df79ef --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.mapper.DeviceMapper; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.modular.system.consts.DeviceConst.*; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class DeviceServiceImpl extends ServiceImpl implements IDeviceService { + + private final AbstractDictService dictService; + private final IDeviceExtService deviceExtService; + + private final IProjectDeviceService projectDeviceService; + + @Transactional + @Override + public boolean saveDevice(DeviceDetailDTO deviceDetailDTO) { + deviceDetailDTO.setCreateTime(new Date()); + boolean deviceRes = this.save(deviceDetailDTO); + if(deviceRes && DEVICE_TYPE_TREE.equals(deviceDetailDTO.getDeviceType())){ + deviceRes = deviceExtService.saveDeviceExt(deviceDetailDTO); + } + return deviceRes; + } + + @Transactional + @Override + public boolean updateDevice(DeviceDetailDTO deviceDetailDTO) { + boolean deviceRes = this.updateById(deviceDetailDTO); + if(deviceRes && DEVICE_TYPE_TREE.equals(deviceDetailDTO.getDeviceType())){ + deviceRes = deviceExtService.updateDeviceExt(deviceDetailDTO); + } + return deviceRes; + } + + @Transactional + @Override + public boolean deleteDevices(List deviceIds) { + return this.removeByIds(deviceIds) & deviceExtService.removeByDeviceIds(deviceIds); + } + + @Override + public Page listPage(Page page, QueryWrapper queryWrapper,String status,Long projectId) { + String ID_COLUMN_NAME = "br_device.ID"; + List useDevices = this.selectProjectDevice(null); + List projectDevices; + if(ObjectUtil.isNotEmpty(projectId)){ + projectDevices = this.selectProjectDevice(projectId); + } else { + projectDevices = null; + } + + // 查询使用中的设备(如果传了 projectId,查询 使用中&&此现场) + if(DEVICE_STATUS_USE.equals(status)){ + if(CollUtil.isEmpty(useDevices)){ + return page; + } + if(ObjectUtil.isNotEmpty(projectId) && CollUtil.isEmpty(projectDevices)){ + return page; + } + queryWrapper.in(ID_COLUMN_NAME,useDevices); + if(CollUtil.isNotEmpty(projectDevices)){ + queryWrapper.in(ID_COLUMN_NAME,projectDevices); + } + + } + + // 查询未使用的设备(如果传了 projectId,查询 未使用||此现场) + if(DEVICE_STATUS_NORMAL.equals(status)) { + if (CollUtil.isNotEmpty(useDevices)) { + if (CollUtil.isEmpty(projectDevices)) { + queryWrapper.notIn(ID_COLUMN_NAME, useDevices); + } else { + queryWrapper.and(i -> i.notIn(ID_COLUMN_NAME, useDevices).or().in(ID_COLUMN_NAME, projectDevices)); + } + } + } + + page = this.baseMapper.listDetailPage(page, queryWrapper); + for (DeviceDetailDTO record : page.getRecords()) { + record.setDeviceTypeName(dictService.getDictNameByCode("deviceType",record.getDeviceType())); + record.setIsPowerSupplyName(dictService.getDictNameByCode("isPowerSupply",record.getIsPowerSupply())); + record.setRegisterTime(DateUtil.formatDate(record.getCreateTime())); + record.setStatus(useDevices.contains(record.getId()) ? DEVICE_STATUS_USE : DEVICE_STATUS_NORMAL); + record.setStatusName(dictService.getDictNameByCode("deviceStatus",record.getStatus())); + } + return page; + } + + @Override + public List selectProjectDevice(Long projectId) { + return this.baseMapper.selectProjectDevice(projectId); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceSupportServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceSupportServiceImpl.java new file mode 100644 index 0000000..ffd01ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceSupportServiceImpl.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.mapper.DeviceMapper; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceSupportService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; + +import static com.casic.missiles.modular.system.consts.DeviceConst.DEVICE_TYPE_HAT; + +@Service +@RequiredArgsConstructor +public class DeviceSupportServiceImpl implements IDeviceSupportService { + + private final IDeviceExtService deviceExtService; + + private final DeviceMapper deviceMapper; + + @Override + public Long selectByGasIpPort(String gasIp, String gasPort) { + return deviceExtService.selectByGasIpPort(gasIp, gasPort); + } + + @Override + public List selectHelmetList() { + return deviceMapper.selectHelmetList(DEVICE_TYPE_HAT); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectDeviceServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectDeviceServiceImpl.java new file mode 100644 index 0000000..965f55c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectDeviceServiceImpl.java @@ -0,0 +1,96 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.DataGas; +import com.casic.missiles.modular.system.entity.DataTreeLocation; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.mapper.ProjectDeviceMapper; +import com.casic.missiles.modular.system.service.IDataSupportService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.utils.LngLatUtil; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.stream.Collectors; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class ProjectDeviceServiceImpl extends ServiceImpl implements IProjectDeviceService { + + private final IDataSupportService dataSupportService; + + @Override + public boolean saveProjectDeviceList(Long projectId, List projectDeviceList) { + projectDeviceList.forEach(i->i.setProjectId(projectId)); + return this.saveBatch(projectDeviceList); + } + + @Transactional + @Override + public boolean updateProjectDeviceList(Long projectId, List projectDeviceList) { + return this.deleteByProjectId(projectId) && this.saveProjectDeviceList(projectId, projectDeviceList); + } + + @Override + public boolean deleteByProjectId(Long projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("PROJECT_ID",projectId); + return this.remove(queryWrapper); + } + + @Override + public boolean deleteByProjectIds(List projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("PROJECT_ID",projectId); + return this.remove(queryWrapper); + } + + @Override + public List selectDetailByProjectId(Long projectId) { + return this.baseMapper.selectDetailByProjectId(projectId); + } + + @Override + public Long selectProjectIdByDevice(Long deviceId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVICE_ID",deviceId); + queryWrapper.exists("(select Id FROM br_work_site_info p where p.ID = br_project_device.PROJECT_ID AND p.PROJECT_STATE != '3')"); + ProjectDevice projectDevice = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(projectDevice) ? projectDevice.getProjectId() : null; + } + + @Override + public List selectDeviceLocationList(Long projectId) { + List list = this.baseMapper.selectDeviceLocationList(projectId); + for (DeviceLocationDTO locationDTO : list) { + DataGas dataGas = dataSupportService.getGasData(locationDTO.getDeviceId()); + DataTreeLocation location = dataSupportService.getTreeLocation(locationDTO.getDeviceId(),true); + if(ObjectUtil.isNotEmpty(dataGas)){ + locationDTO.setGasValue(dataGas.getGasValue()); + locationDTO.setTime(DateUtil.formatDateTime(dataGas.getTs())); + } + if(ObjectUtil.isNotEmpty(location)){ + locationDTO.setLng(location.getGdLng()); + locationDTO.setLat(location.getGdLat()); + locationDTO.setLocation(location.getLocation()); + } + } + list = list.stream().filter(i-> StrUtil.isAllNotEmpty(i.getLng(),i.getLat())).collect(Collectors.toList()); + return LngLatUtil.sort(list); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectWorkerServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectWorkerServiceImpl.java new file mode 100644 index 0000000..c3ec86c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectWorkerServiceImpl.java @@ -0,0 +1,101 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.DataHelmetHealth; +import com.casic.missiles.modular.system.entity.DataHelmetLocation; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.mapper.ProjectWorkerMapper; +import com.casic.missiles.modular.system.service.IHelmetSupportService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.system.consts.ProjectConst.WORKER_TYPE_NORMAL; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class ProjectWorkerServiceImpl extends ServiceImpl implements IProjectWorkerService { + + private final AbstractDeptService deptService; + private final IHelmetSupportService helmetSupportService; + + @Override + public boolean saveProjectWorkerList(Long projectId, List projectWorkerList) { + projectWorkerList.forEach(i->i.setProjectId(projectId)); + return this.saveBatch(projectWorkerList); + } + + @Transactional + @Override + public boolean updateProjectWorkerList(Long projectId, List projectWorkerList) { + return this.deleteByProjectId(projectId) && this.saveProjectWorkerList(projectId, projectWorkerList) ; + } + + @Override + public boolean deleteByProjectId(Long projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("PROJECT_ID",projectId); + return this.remove(queryWrapper); + } + + @Override + public boolean deleteByProjectIds(List projectIds) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("PROJECT_ID",projectIds); + return this.remove(queryWrapper); + } + + + @Override + public List selectDetailByProjectId(Long projectId,String workerType) { + List projectWorkerList = this.baseMapper.selectDetailByProjectId(projectId,workerType); + for (ProjectWorker projectWorker : projectWorkerList) { + if(ObjectUtil.isNotEmpty(projectWorker.getWorkerDeptId())){ + projectWorker.setWorkerDeptName(deptService.getDeptName(projectWorker.getWorkerDeptId())); + } + } + return projectWorkerList; + } + + @Override + public List selectWorkerLocationDTO(Long projectId) { + List projectWorkerList = this.baseMapper.selectWorkerLocationList(projectId,WORKER_TYPE_NORMAL); + for (WorkerLocationDTO workerLocationDTO : projectWorkerList) { + if(ObjectUtil.isNotEmpty(workerLocationDTO.getHatId())){ + DataHelmetLocation location = helmetSupportService.getHelmetLocation(workerLocationDTO.getHatId(),true); + if(ObjectUtil.isNotEmpty(location)){ + workerLocationDTO.setLng(location.getGdLng()); + workerLocationDTO.setLat(location.getGdLat()); + workerLocationDTO.setLocation(location.getLocation()); + } + + DataHelmetHealth health = helmetSupportService.getHelmetHealth(workerLocationDTO.getHatId()); + if(ObjectUtil.isNotEmpty(health)){ + workerLocationDTO.setBloodOxygen(health.getBloodOxygen()); + workerLocationDTO.setHeartRate(health.getHeartRate()); + workerLocationDTO.setTime(DateUtil.formatDateTime(health.getTs())); + } + } + } + projectWorkerList = projectWorkerList.stream().filter(i-> StrUtil.isAllNotEmpty(i.getLng(),i.getLat())).collect(Collectors.toList()); + return projectWorkerList; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkSiteInfoServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkSiteInfoServiceImpl.java new file mode 100644 index 0000000..5068da2 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkSiteInfoServiceImpl.java @@ -0,0 +1,151 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.mapper.WorkSiteInfoMapper; +import com.casic.missiles.modular.system.service.*; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.system.consts.ProjectConst.*; + +/** + *

+ * 作业现场表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class WorkSiteInfoServiceImpl extends ServiceImpl implements IWorkSiteInfoService { + + private final IProjectWorkerService projectWorkerService; + private final IProjectDeviceService projectDeviceService; + + private final IWorkerService workerService; + private final IBraceletService braceletService; + + private final AbstractDeptService deptService; + private final AbstractDictService dictService; + @Override + @Transactional + public boolean addWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO) { + workSiteDetailDTO.setCreateTime(new Date()); + workSiteDetailDTO.setUpdateTime(new Date()); + workSiteDetailDTO.setProjectState(PROJECT_STATE_PREPARE); + boolean res = this.save(workSiteDetailDTO); + if(res){ + res = projectDeviceService.saveProjectDeviceList(workSiteDetailDTO.getId(), workSiteDetailDTO.getDeviceList()); + res = res & projectWorkerService.saveProjectWorkerList(workSiteDetailDTO.getId(), workSiteDetailDTO.getWorkerList()); + } + return res; + } + + @Override + @Transactional + public boolean updateWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO) { + workSiteDetailDTO.setUpdateTime(new Date()); + boolean res = this.updateById(workSiteDetailDTO); + if(res){ + res = projectDeviceService.updateProjectDeviceList(workSiteDetailDTO.getId(), workSiteDetailDTO.getDeviceList()); + res = res & projectWorkerService.updateProjectWorkerList(workSiteDetailDTO.getId(), workSiteDetailDTO.getWorkerList()); + } + return res; + } + + @Override + public boolean deleteProjects(List projectIds) { + if(CollUtil.isNotEmpty(projectIds)) { + projectDeviceService.deleteByProjectIds(projectIds); + projectWorkerService.deleteByProjectIds(projectIds); + return this.removeByIds(projectIds); + } + return true; + } + + @Override + public WorkSiteDetailDTO getWorkSiteDetail(Long projectId) { + WorkSiteInfo workSiteInfo = this.getById(projectId); + WorkSiteDetailDTO workSiteDetailDTO = new WorkSiteDetailDTO(); + BeanUtil.copyProperties(workSiteInfo,workSiteDetailDTO,true); + workSiteDetailDTO.setDeviceList(projectDeviceService.selectDetailByProjectId(projectId)); + workSiteDetailDTO.setWorkerList(projectWorkerService.selectDetailByProjectId(projectId,WORKER_TYPE_NORMAL)); + + Worker responseWorker = workerService.selectWorkerDetail(workSiteDetailDTO.getWorkPerson()); + if(ObjectUtil.isNotEmpty(responseWorker)){ + workSiteDetailDTO.setWorkPersonName(responseWorker.getWorkerName()); + workSiteDetailDTO.setWorkPersonPhoneNumber(responseWorker.getPhoneNumber()); + workSiteDetailDTO.setWorkPersonDeptId(responseWorker.getDeptId()); + workSiteDetailDTO.setWorkPersonDeptName(responseWorker.getDeptName()); + } + return workSiteDetailDTO; + } + + @Override + public Page selectListPage(Page page, QueryWrapper queryWrapper) { + page = this.baseMapper.selectListPage(page, queryWrapper); + for (WorkSiteInfo workSiteInfo : page.getRecords()) { + workSiteInfo.setProjectStateName(dictService.getDictNameByCode("projectState", workSiteInfo.getProjectState())); + if(ObjectUtil.isNotEmpty(workSiteInfo.getWorkPersonDeptId())){ + workSiteInfo.setWorkPersonDeptName(deptService.getDeptName(workSiteInfo.getWorkPersonDeptId())); + } + workSiteInfo.setRegisterTime(DateUtil.formatDate(workSiteInfo.getCreateTime())); + } + return page; + } + + @Override + public boolean start(Long projectId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",projectId); + updateWrapper.set("PROJECT_STATE",PROJECT_STATE_WORKING); + updateWrapper.set("START_TIME",new Date()); + boolean res = this.update(updateWrapper); + //braceletService.enableBracelet(selectProjectBracelets(projectId)); + return res; + } + + @Override + public boolean finish(Long projectId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",projectId); + updateWrapper.set("PROJECT_STATE",PROJECT_STATE_FINISH); + updateWrapper.set("FINISH_TIME",new Date()); + boolean res = this.update(updateWrapper); + //braceletService.disableBracelet(selectProjectBracelets(projectId)); + return res; + } + + private List selectProjectBracelets(Long projectId){ + List deviceCodes = new ArrayList<>(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("PROJECT_ID",projectId); + queryWrapper.isNotNull("BRACELET_CODE"); + queryWrapper.select("BRACELET_CODE"); + List res = projectWorkerService.listObjs(queryWrapper); + if(CollUtil.isNotEmpty(res)){ + deviceCodes = res.stream().map(Object::toString).distinct().collect(Collectors.toList()); + } + return deviceCodes; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkerServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkerServiceImpl.java new file mode 100644 index 0000000..6859cff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkerServiceImpl.java @@ -0,0 +1,110 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.mapper.WorkerMapper; +import com.casic.missiles.modular.system.service.*; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.modular.system.consts.ProjectConst.WORKER_TYPE_TEMP; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class WorkerServiceImpl extends ServiceImpl implements IWorkerService { + + private final IProjectWorkerService projectWorkerService; + + private final IProjectDeviceService projectDeviceService; + private final AbstractDictService dictService; + private final AbstractDeptService deptService; + private final IDeviceExtService deviceExtService; + + @Override + @Transactional + public boolean addWorker(Worker worker, Long projectId) { + worker.setCreateTime(new Date()); + boolean res = this.save(worker); + if(res && ObjectUtil.isNotEmpty(projectId)){ + res = projectWorkerService.save(new ProjectWorker(projectId, worker.getId())); + if(ObjectUtil.isNotEmpty(worker.getWorkerAvatar())){ + // todo 向一体机推送人脸图片 + } + } + return res; + } + + @Override + public Page selectListPage(Page page, QueryWrapper ew) { + page = this.baseMapper.selectListPage(page, ew); + for (Worker worker : page.getRecords()) { + wrapperWorker(worker); + } + return page; + } + + private void wrapperWorker(Worker worker) { + if(StrUtil.isNotEmpty(worker.getGender())){ + worker.setGenderName(dictService.getDictNameByCode("sysSex", worker.getGender())); + } + if(ObjectUtil.isNotEmpty(worker.getDeptId())){ + worker.setDeptName(deptService.getDeptName(worker.getDeptId())); + } + worker.setRegisterTime(DateUtil.formatDate(worker.getCreateTime())); + if(StrUtil.isNotEmpty(worker.getStatus())){ + worker.setStatusName(dictService.getDictNameByCode("workerStatus", worker.getStatus())); + } + } + + @Override + public Worker selectWorkerDetail(Long workerId) { + Worker worker = this.getById(workerId); + if(ObjectUtil.isNotEmpty(worker)){ + wrapperWorker(worker); + } + return worker; + } + + @Override + public List faceRegister(String cameraIp, String cameraPort) { + Long deviceId = deviceExtService.selectByCameraIpPort(cameraIp, cameraPort); + if(ObjectUtil.isNotEmpty(deviceId)){ + Long projectId = projectDeviceService.selectProjectIdByDevice(deviceId); + if(ObjectUtil.isNotEmpty(projectId)){ + return this.baseMapper.selectWorkerAvatars(projectId); + } + } + return null; + } + + @Override + public List projectTempWorker(Long projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("WORKER_TYPE",WORKER_TYPE_TEMP); + queryWrapper.exists("(select ID FROM br_project_worker WHERE PROJECT_ID = "+ projectId +")"); + List workers = this.list(queryWrapper); + workers.forEach(this::wrapperWorker); + return workers; + } +} diff --git a/casic_video_283_web/pom.xml b/casic_video_283_web/pom.xml new file mode 100644 index 0000000..feace49 --- /dev/null +++ b/casic_video_283_web/pom.xml @@ -0,0 +1,166 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + casic_video_283_web + 1.0.0 + jar + casic_video_283_web + casic web启动入口 + + + + dev + + true + + + dev + + + + test + + test + + + + prod + + prod + + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-actuator + + + io.micrometer + micrometer-core + + + + + org.springframework.boot + spring-boot-starter-jdbc + + + + com.casic + casic-core + ${core.version} + + + com.casic + casic-admin-core + ${admin.version} + + + io.springfox + springfox-swagger-ui + + + + + com.casic + casic-admin-support + ${admin.version} + + + mysql + mysql-connector-java + ${mysql.driver.version} + + + com.casic + casic-area-starter + ${admin.version} + + + + com.casic + casic_video_283_server + ${pro.version} + + + + org.springframework.boot + spring-boot-starter-tomcat + + + + + casic_video_283_web-${pro.version} + + + org.apache.maven.plugins + maven-jar-plugin + ${maven.jar.plugin.version} + + + + /config/*-*.yml + **/MockController.class + + + + com.casic.missiles.CasicApplication + true + ./ + + + + + + org.apache.maven.plugins + maven-assembly-plugin + ${maven.assembly.plugin.version} + + + make-assembly + package + + single + + + + + + org.apache.maven.plugins + maven-war-plugin + ${maven.war.plugin.version} + + + + + src/main/resources + + + /config/*/* + /config/*-*.yml + + true + + + src/main/java + + **/*.xml + + true + + + + \ No newline at end of file diff --git a/casic_video_283_web/src/main/build/bin/start.bat b/casic_video_283_web/src/main/build/bin/start.bat new file mode 100644 index 0000000..1db4e88 --- /dev/null +++ b/casic_video_283_web/src/main/build/bin/start.bat @@ -0,0 +1,4 @@ +@echo off +title ${project.build.finalName} +java -jar ./lib/${project.build.finalName}.jar +@pause diff --git a/casic_video_283_web/src/main/build/bin/start.sh b/casic_video_283_web/src/main/build/bin/start.sh new file mode 100644 index 0000000..1cc33fc --- /dev/null +++ b/casic_video_283_web/src/main/build/bin/start.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +jar_name="${project.build.finalName}.jar" +echo "starting $jar_name ..." + +PID=$(ps -ef | grep ${jar_name} | grep -v grep | awk '{print $2}') + +OLD_IFS="$IFS" +IFS="," +PIDARR=($PID) +IFS="$OLD_IFS" + +if [ ! $PID ]; then + echo "process ${jar_name} not exit" +else + echo "process id: $PID" + + kill -9 ${PID} + + if [ $? -eq 0 ]; then + echo "kill ${jar_name} success" + else + echo "kill ${jar_name} fail" + exit + fi +fi + + + +nohup java -jar ./lib/${jar_name} >/dev/null 2>log & +echo "start ${jar_name} ..." \ No newline at end of file diff --git a/casic_video_283_web/src/main/build/package.xml b/casic_video_283_web/src/main/build/package.xml new file mode 100644 index 0000000..c9259ad --- /dev/null +++ b/casic_video_283_web/src/main/build/package.xml @@ -0,0 +1,43 @@ + + + package + + zip + tar.gz + + true + + + + true + true + lib + runtime + + + + + src/main/build/bin + + start.bat + start.sh + + true + 0744 + / + + + src/main/resources/config + true + + *.yml + /*/* + + /config + + + src/main/resources/i18n + / + + + \ No newline at end of file diff --git a/casic_video_283_web/src/main/java/com/casic/missiles/CasicApplication.java b/casic_video_283_web/src/main/java/com/casic/missiles/CasicApplication.java new file mode 100644 index 0000000..7b8791f --- /dev/null +++ b/casic_video_283_web/src/main/java/com/casic/missiles/CasicApplication.java @@ -0,0 +1,35 @@ +package com.casic.missiles; + +import lombok.extern.slf4j.Slf4j; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.web.servlet.ServletComponentScan; +import org.springframework.cache.annotation.EnableCaching; +import org.springframework.scheduling.annotation.EnableAsync; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +/** + * SpringBoot方式启动类 + * + * @author lwh + * @Date 2021/06/06 12:06 + */ +@SpringBootApplication +@EnableCaching +@EnableTransactionManagement(proxyTargetClass = true) +@EnableAsync +@Slf4j +@MapperScan(value = "com.casic.missiles.modular.system.mapper") +public class CasicApplication { + + static { + System.setProperty("druid.mysql.usePingMethod","false"); + } + + public static void main(String[] args) { + SpringApplication.run(CasicApplication.class, args); + log.info("CasicApplication is success!"); + } + +} diff --git a/casic_video_283_web/src/main/java/com/casic/missiles/CasicServletInitializer.java b/casic_video_283_web/src/main/java/com/casic/missiles/CasicServletInitializer.java new file mode 100644 index 0000000..e30585b --- /dev/null +++ b/casic_video_283_web/src/main/java/com/casic/missiles/CasicServletInitializer.java @@ -0,0 +1,18 @@ +package com.casic.missiles; + +import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; + +/** + * Guns Web程序启动类 + * + * @author fengshuonan + * @date 2017-05-21 9:43 + */ +public class CasicServletInitializer extends SpringBootServletInitializer { + + @Override + protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { + return application.sources(CasicApplication.class); + } +} diff --git a/casic_video_283_web/src/main/java/com/casic/missiles/config/SwaggerConfig.java b/casic_video_283_web/src/main/java/com/casic/missiles/config/SwaggerConfig.java new file mode 100644 index 0000000..fd233d8 --- /dev/null +++ b/casic_video_283_web/src/main/java/com/casic/missiles/config/SwaggerConfig.java @@ -0,0 +1,40 @@ +package com.casic.missiles.config; + + +import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j; +import io.swagger.annotations.ApiOperation; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import springfox.documentation.builders.ApiInfoBuilder; +import springfox.documentation.builders.PathSelectors; +import springfox.documentation.builders.RequestHandlerSelectors; +import springfox.documentation.service.ApiInfo; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spring.web.plugins.Docket; +import springfox.documentation.swagger2.annotations.EnableSwagger2; + +@Configuration //声明该类为配置类 +@EnableSwagger2 //声明启动Swagger2 +@EnableKnife4j +public class SwaggerConfig{ + private ApiInfo apiInfo() { + return new ApiInfoBuilder() + .title("北燃四分二期接口文档")//文档说明 + .version("1.0.0")//文档版本说明 + .build(); + } + + @Bean + public Docket productApi() { + return new Docket(DocumentationType.SWAGGER_2) + .apiInfo(apiInfo()) + .select() + .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) //添加ApiOperiation注解的被扫描 + .paths(PathSelectors.any()) + .build(); + + } + + +} + diff --git a/casic_video_283_web/src/main/java/com/casic/missiles/controller/MockController.java b/casic_video_283_web/src/main/java/com/casic/missiles/controller/MockController.java new file mode 100644 index 0000000..eae6c54 --- /dev/null +++ b/casic_video_283_web/src/main/java/com/casic/missiles/controller/MockController.java @@ -0,0 +1,82 @@ +package com.casic.missiles.controller; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.application.enums.LoginType; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.model.auth.CasicCustomToken; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.response.SuccessResponseData; +import com.casic.missiles.modular.domain.constants.PermissionConstants; +import com.casic.missiles.modular.interfaces.log.LogManager; +import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; +import com.casic.missiles.modular.system.dto.LoginSuccessDTO; +import lombok.extern.slf4j.Slf4j; +import org.apache.shiro.subject.Subject; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.security.NoSuchAlgorithmException; +import java.util.Map; + +import static com.casic.missiles.core.util.HttpContext.getIp; + + +/** + * 仅为mock登录使用 + * + * @author lenovo + */ +@Controller +@RequestMapping("/route") +@Slf4j +public class MockController extends BaseController { + + /** + * 获取mockToken + */ + @GetMapping("/mockToken") + @ResponseBody + public Object mockToken(String username, String password) { + super.getSession().setAttribute(PermissionConstants.IS_APP, false); + SuccessResponseData resultData = new SuccessResponseData(); + if (StrUtil.hasEmpty(username, password)) { + username = "admin"; + password = "111111"; + } + Subject currentUser = ShiroKit.getSubject(); + + try { + Map key = RSAUtils.genKeyPair(); + ShiroKit.getSession().setAttribute(PermissionConstants.PRIVATE_KEY, key.get(RSAUtils.RSAPrivateKey)); + + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } + + //token自定义 + CasicCustomToken token = new CasicCustomToken(username, password); + token.setType(LoginType.PASSWORD); + token.setRememberMe(false); + + try { + currentUser.login(token); + } catch (Exception e) { + e.printStackTrace(); + } + AuthUser shiroUser = ShiroKit.getUser(); + super.getSession().setAttribute("shiroUser", shiroUser); + super.getSession().setAttribute("username", shiroUser.getAccount()); + super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); + + LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), getIp())); + + ShiroKit.getSession().setAttribute("sessionFlag", true); + resultData.setData(new LoginSuccessDTO(ShiroKit.getSession().getId().toString(), null)); + resultData.setMessage("登录成功"); + return resultData; + } +} diff --git a/casic_video_283_web/src/main/resources/META-INF/spring-devtools.properties b/casic_video_283_web/src/main/resources/META-INF/spring-devtools.properties new file mode 100644 index 0000000..e3b0a7f --- /dev/null +++ b/casic_video_283_web/src/main/resources/META-INF/spring-devtools.properties @@ -0,0 +1 @@ +restart.include.beetl=/beetl-2.7.15.jar \ No newline at end of file diff --git a/casic_video_283_web/src/main/resources/config/application-dev.yml b/casic_video_283_web/src/main/resources/config/application-dev.yml new file mode 100644 index 0000000..fea6255 --- /dev/null +++ b/casic_video_283_web/src/main/resources/config/application-dev.yml @@ -0,0 +1,31 @@ +server: + port: 8083 +################### spring配置 ################### +spring: + datasource: + url: jdbc:mysql://111.198.10.15:11336/casic_283?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=Asia/Shanghai&&allowMultiQueries=true + username: root + password: Casic203 + jms: + pub-sub-domain: true +# session: +# store-type: redis + redis: + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh +# serializer: org.springframework.data.redis.serializer.StringRedisSerializer +# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer +casic: + #kaptcha-open: false #是否开启登录时验证码 (true/false) + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/webjars/**,/swagger-ui.html,/swagger-resources + #flowable数据源和多数据源配置 + db: + init: + enable: false + file: + uploadPath: /casic/casic-gas-operation-file/ +logging: + level.root: info + level.com.casic: debug + level.org.springframework.web: info \ No newline at end of file diff --git a/casic_video_283_web/src/main/resources/config/application-prod.yml b/casic_video_283_web/src/main/resources/config/application-prod.yml new file mode 100644 index 0000000..634fe1a --- /dev/null +++ b/casic_video_283_web/src/main/resources/config/application-prod.yml @@ -0,0 +1,29 @@ +server: + port: 8085 +# context-path: /callcenter/api +################### spring配置 ################### +spring: + datasource: + url: jdbc:mysql://111.198.10.15:11336/casic_283?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + username: root + password: Casic203 + initial-size: 2 + min-idle: 1 + jms: + pub-sub-domain: true + # session: + # store-type: redis + redis: + host: 127.0.0.1 + port: 6379 + password: + +#flowable数据源和多数据源配置 +casic: + kaptcha-open: false #是否开启登录时验证码 (true/false) + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/bracelet/receive/* +logging: + level.root: info + level.com.casic: debug + path: logs/ + file: missiles.log \ No newline at end of file diff --git a/casic_video_283_web/src/main/resources/config/application-test.yml b/casic_video_283_web/src/main/resources/config/application-test.yml new file mode 100644 index 0000000..06ebf54 --- /dev/null +++ b/casic_video_283_web/src/main/resources/config/application-test.yml @@ -0,0 +1,23 @@ +server: + port: 11307 +################### spring配置 ################### +spring: + datasource: + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://localhost:3307/casic_283?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + username: root + password: root + initial-size: 2 + min-idle: 1 + jms: + pub-sub-domain: true +# session: +# store-type: redis +casic: + # kaptcha-open: false #是否开启登录时验证码 (true/false) + nologin-urls: /user/login,/user/appLogin,/kaptcha/base64,/config/baseConfig,/route/mockToken,/workflow/** +logging: + level.root: info + level.com.casic: debug + path: logs/ + file: missiles.log \ No newline at end of file diff --git a/casic_video_283_web/src/main/resources/config/application.yml b/casic_video_283_web/src/main/resources/config/application.yml new file mode 100644 index 0000000..599fcce --- /dev/null +++ b/casic_video_283_web/src/main/resources/config/application.yml @@ -0,0 +1,25 @@ +########################################################## +################## 所有profile共有的配置 ################# +########################################################## +spring: + profiles: + active: @activatedProperties@ + servlet: + multipart: + max-file-size: 50MB + max-request-size: 80MB +#mybatis-plus: +# sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector +################### mybatis-plus配置 ################### +################### guns配置 ################### +casic: + swagger-open: true #是否开启swagger (true/false) + kaptcha-open: false #是否开启登录时验证码 (true/false) + muti-datasource-open: false #是否开启多数据源(true/false) + spring-session-open: false #是否开启spring session,如果是多机环境需要开启(true/false) + session-invalidate-time: 86400 #session失效时间(只在单机环境下生效,,多机环境在SpringSessionConfig类中配置) 单位:秒 + session-validation-interval: 900 #多久检测一次失效的session(只在单机环境下生效) 单位:秒 + no-login-urls: /user/login,/kaptcha,/config/baseConfig + config: + export-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\export\ + config-path: E:\Develop\IdeaProject\smartcity\casic-smartcity-dcms\casic-web\src\main\resources\config\ diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java new file mode 100644 index 0000000..73d7799 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.dto; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "AlarmUpload",description = "报警上传") +@Data +public class AlarmUpload { + + @ApiModelProperty(value = "摄像头ip") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + @ApiModelProperty(value = "安全树甲烷设备ip") + private String gasIp; + @ApiModelProperty(value = "安全树甲烷设备端口") + private String gasPort; + @ApiModelProperty(value = "报警值") + private String alarmValue; + @ApiModelProperty(value = "报警时间") + private String alarmTime; + @ApiModelProperty(value = "报警类型") + private String alarmType; + @ApiModelProperty(value = "报警图片") + private String alarmImage; + @ApiModelProperty(value = "报警内容") + private String alarmContent; + + @Override + public String toString() { + return "AlarmUpload{" + + "cameraIp='" + cameraIp + '\'' + + ", cameraPort='" + cameraPort + '\'' + + ", gasIp='" + gasIp + '\'' + + ", gasPort='" + gasPort + '\'' + + ", alarmValue='" + alarmValue + '\'' + + ", alarmTime='" + alarmTime + '\'' + + ", alarmType='" + alarmType + '\'' + + ", alarmImage='" + (StrUtil.isNotEmpty(alarmImage) ? alarmImage.substring(0,50) : "null") + '\'' + + ", alarmContent='" + alarmContent + '\'' + + '}'; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java new file mode 100644 index 0000000..ea518d9 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.modular.system.entity.Device; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("DeviceDetailDTO") +@Data +public class DeviceDetailDTO extends Device { + + @ApiModelProperty(value = "摄像头编号") + private String cameraCode; + + @ApiModelProperty(value = "摄像头IP") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + + @ApiModelProperty(value = "激甲编号") + private String gasCode; + + @ApiModelProperty(value = "激甲IP") + private String gasIp; + + @ApiModelProperty(value = "激甲端口") + private String gasPort; + + @ApiModelProperty(value = "智能帽衬编号") + private String hatLiningCode; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java new file mode 100644 index 0000000..29378ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("WorkSiteDetailDTO") +public class WorkSiteDetailDTO extends WorkSiteInfo { + + @ApiModelProperty(value = "安全树列表",dataType = "ProjectDevice") + private List deviceList; + + @ApiModelProperty(value = "人员列表",dataType = "ProjectWorker") + private List workerList; + + + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java new file mode 100644 index 0000000..6fd7b24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java @@ -0,0 +1,68 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "WorkerLocationDTO",description = "人员位置列表(首页)") +@Data +public class WorkerLocationDTO { + + @ApiModelProperty("人员ID") + private Long workerId; + + @ApiModelProperty("人员姓名") + private String workerName; + + @ApiModelProperty("安全帽编号") + private String hatCode; + + @ApiModelProperty("安全帽ID") + private Long hatId; + + @ApiModelProperty("背心编号") + private String vastCode; + + @ApiModelProperty("手环编号") + private String braceletCode; + + @ApiModelProperty("位置") + private String location; + + @ApiModelProperty("时间") + private String time; + + @ApiModelProperty("经度") + private String lng; + + @ApiModelProperty("纬度") + private String lat; + + @ApiModelProperty("心率") + private String heartRate; + + @ApiModelProperty("血氧") + private String bloodOxygen; + + @ApiModelProperty("一氧化碳") + private String co; + + @ApiModelProperty("甲烷") + private String gas; + + @ApiModelProperty("硫化氢") + private String h2s; + + @ApiModelProperty("氧气") + private String o2; + + @ApiModelProperty("信号") + private String signal; + + @ApiModelProperty("电量") + private String cell; + + @ApiModelProperty("是否报警") + private boolean alarmFlag; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java new file mode 100644 index 0000000..efb4a23 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java @@ -0,0 +1,159 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 报警记录表 + *

+ * + * @author zyj + * @since 2023-05-16 + */ +@Data +@ApiModel("Alarm") +@TableName("br_bus_alarm") +public class BusAlarm implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @ApiModelProperty(value = "设备ID") + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 报警类型 + */ + @ApiModelProperty(value = "报警类型") + @TableField("ALARM_TYPE") + private String alarmType; + + /** + * 报警状态 + */ + @ApiModelProperty(value = "报警状态") + @TableField("ALARM_STATUS") + private String alarmStatus; + + /** + * 报警值 + */ + @ApiModelProperty(value = "报警值") + @TableField("ALARM_VALUE") + private String alarmValue; + + /** + * 报警图片 + */ + @ApiModelProperty(value = "报警图片") + @TableField("ALARM_IMAGE") + private String alarmImage; + + /** + * 报警内容 + */ + @ApiModelProperty(value = "报警内容") + @TableField("ALARM_CONTENT") + private String alarmContent; + + /** + * 报警时间 + */ + @ApiModelProperty(value = "报警时间") + @TableField("ALARM_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date alarmTime; + + /** + * 消警时间 + */ + @ApiModelProperty(value = "消警时间") + @TableField("CANCEL_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + /** + * 报警位置经度 + */ + @ApiModelProperty(value = "报警位置经度") + @TableField("ALARM_LNG") + private String alarmLng; + + /** + * 报警位置纬度 + */ + @ApiModelProperty(value = "报警位置纬度") + @TableField("ALARM_LAT") + private String alarmLat; + + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmStatusName; + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmTypeName; + @ApiModelProperty("作业名称") + @TableField(exist = false) + private String workTitle; + @ApiModelProperty("所属道路") + @TableField(exist = false) + private String workRoad; + @ApiModelProperty("作业状态") + @TableField(exist = false) + private String projectState; + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + @ApiModelProperty("负责人姓名") + @TableField(exist = false) + private String workPersonName; + @ApiModelProperty("负责人联系方式") + @TableField(exist = false) + private String workPersonPhoneNumber; + + + @Override + public String toString() { + return "BusAlarm{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + ", alarmType=" + alarmType + + ", alarmValue=" + alarmValue + + ", alarmStatus=" + alarmStatus + + ", alarmImage=" + alarmImage + + ", alarmContent=" + alarmContent + + ", alarmTime=" + alarmTime + + ", cancelTime=" + cancelTime + + ", alarmLng=" + alarmLng + + ", alarmLat=" + alarmLat + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java new file mode 100644 index 0000000..a0b7543 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + *

+ * 事件表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event") +@Data +@ApiModel("BusEvent") +public class BusEvent implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("事件ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件标题 + */ + @ApiModelProperty("事件名称") + @TableField("EVENT_TITLE") + private String eventTitle; + + /** + * 上报人员 + */ + @ApiModelProperty("上报人员") + @TableField("UPLOAD_NAME") + private String uploadName; + + /** + * 联系方式 + */ + @ApiModelProperty("联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 事件描述 + */ + @ApiModelProperty("事件描述") + @TableField("EVENT_DESCRIPTION") + private String eventDescription; + + @ApiModelProperty("经度") + @TableField("LNG") + private String lng; + + @ApiModelProperty("纬度") + @TableField("LAT") + private String lat; + + /** + * 事件上传时间 + */ + @ApiModelProperty("事件上传时间") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty("事件照片") + @TableField(exist = false) + private List imageList; + + + + @Override + public String toString() { + return "BusEvent{" + + "id=" + id + + ", eventTitle=" + eventTitle + + ", uploadName=" + uploadName + + ", phoneNumber=" + phoneNumber + + ", eventDescription=" + eventDescription + + ", lng=" + lng + + ", lat=" + lat + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java new file mode 100644 index 0000000..1e75245 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 事件图片表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event_image") +@Data +@ApiModel("BusEventImage") +public class BusEventImage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件ID + */ + @TableField("EVENT_ID") + private Long eventId; + + /** + * 报警图片 + */ + @TableField("IMAGE") + @ApiModelProperty("图片url") + private String image; + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java new file mode 100644 index 0000000..df89c70 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.core.base.json.DateDeserializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Device") +@TableName("br_device") +@Data +public class Device implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "设备ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty(value = "设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + /** + * 设备类型 + */ + @ApiModelProperty(value = "设备类型") + @TableField("DEVICE_TYPE") + private String deviceType; + + /** + * 设备批次 + */ + @ApiModelProperty(value = "设备批次") + @TableField("DEVICE_BATCH") + private String deviceBatch; + + /** + * 厂家 + */ + @ApiModelProperty(value = "厂家") + @TableField("MANUFACTURER") + private String manufacturer; + + /** + * 是否供电 + */ + @ApiModelProperty(value = "是否供电") + @TableField("IS_POWER_SUPPLY") + private String isPowerSupply; + + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间",dataType = "Date") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty(value = "设备类型名称") + @TableField(exist = false) + private String deviceTypeName; + + @ApiModelProperty(value = "是否供电名称") + @TableField(exist = false) + private String isPowerSupplyName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", deviceCode=" + deviceCode + + ", deviceType=" + deviceType + + ", deviceBatch=" + deviceBatch + + ", manufacturer=" + manufacturer + + ", isPowerSupply=" + isPowerSupply + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java new file mode 100644 index 0000000..5ee7015 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java @@ -0,0 +1,99 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 设备扩展信息表(安全树) + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Data +@TableName("br_device_ext") +public class DeviceExt implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 摄像头编号 + */ + @TableField("CAMERA_CODE") + private String cameraCode; + + /** + * 摄像头IP + */ + @TableField("CAMERA_IP") + private String cameraIp; + + /** + * 摄像头端口 + */ + @TableField("CAMERA_PORT") + private String cameraPort; + + /** + * 激甲编号 + */ + @TableField("GAS_CODE") + private String gasCode; + + /** + * 激甲IP + */ + @TableField("GAS_IP") + private String gasIp; + + /** + * 激甲端口 + */ + @TableField("GAS_PORT") + private String gasPort; + + /** + * 甲烷报警阈值 + */ + @TableField("GAS_THRESHOLD") + private String gasThreshold; + + @TableField(value = "HAT_LINING_CODE") + private String hatLiningCode; + + + @Override + public String toString() { + return "DeviceExt{" + + "id=" + id + + ", deviceId=" + deviceId + + ", cameraCode=" + cameraCode + + ", cameraIp=" + cameraIp + + ", cameraPort=" + cameraPort + + ", gasCode=" + gasCode + + ", gasIp=" + gasIp + + ", gasPort=" + gasPort + + ", gasThreshold=" + gasThreshold + + ", hatLiningCode=" + hatLiningCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java new file mode 100644 index 0000000..c4f3472 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java @@ -0,0 +1,62 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Data +@ApiModel("ProjectDevice") +@TableName("br_project_device") +public class ProjectDevice implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + @ApiModelProperty("设备ID(新增编辑时传)") + private Long deviceId; + + /** + * 设备编号 + */ + @TableField(exist = false) + @ApiModelProperty("设备编号(详情中展示,新增编辑不用传)") + private String deviceCode; + + @Override + public String toString() { + return "ProjectDevice{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java new file mode 100644 index 0000000..10b23c4 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java @@ -0,0 +1,104 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("ProjectWorker") +@TableName("br_project_worker") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ProjectWorker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 人员ID + */ + @ApiModelProperty("人员ID") + @TableField("WORKER_ID") + private Long workerId; + + /** + * 安全帽编号 + */ + @ApiModelProperty("安全帽编号") + @TableField("HAT_CODE") + private String hatCode; + + /** + * 背心编号 + */ + @ApiModelProperty("背心编号") + @TableField("VAST_CODE") + private String vastCode; + + /** + * 手环编号 + */ + @ApiModelProperty("手环编号") + @TableField("BRACELET_CODE") + private String braceletCode; + + @ApiModelProperty("人员姓名(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerName; + + @ApiModelProperty("人员部门ID(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptId; + + @ApiModelProperty("人员部门名称(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptName; + + @ApiModelProperty("人员联系方式(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerPhoneNumber; + + public ProjectWorker(Long projectId, Long workerId) { + this.projectId = projectId; + this.workerId = workerId; + } + + @Override + public String toString() { + return "ProjectWorker{" + + "id=" + id + + ", projectId=" + projectId + + ", workerId=" + workerId + + ", hatCode=" + hatCode + + ", vastCode=" + vastCode + + ", braceletCode=" + braceletCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java new file mode 100644 index 0000000..fa6f41d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 作业现场表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("WorkSiteInfo") +@TableName("br_work_site_info") +@Data +public class WorkSiteInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("作业现场ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业名称 + */ + @ApiModelProperty("作业名称") + @TableField("WORK_TITLE") + private String workTitle; + + /** + * 责任人 + */ + @ApiModelProperty("责任人(人员ID)") + @TableField("WORK_PERSON") + private Long workPerson; + + /** + * 作业描述 + */ + @ApiModelProperty("作业描述") + @TableField("WORK_SITE_DESC") + private String workSiteDesc; + + /** + * 作业状态 + */ + @ApiModelProperty("作业状态") + @TableField("PROJECT_STATE") + private String projectState; + + /** + * 所属道路 + */ + @ApiModelProperty("所属道路") + @TableField("WORK_ROAD") + private String workRoad; + + @TableField("IMAGE_URL") + private String imageUrl; + + @TableField("CREATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + @TableField("UPDATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("FINISH_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + @ApiModelProperty("负责人姓名(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonName; + + @ApiModelProperty("负责人联系方式(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonPhoneNumber; + + @ApiModelProperty("负责人所属部门ID(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private Long workPersonDeptId; + + @ApiModelProperty("负责人所属部门名称(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonDeptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + + @Override + public String toString() { + return "WorkSiteInfo{" + + "id=" + id + + ", workTitle=" + workTitle + + ", workPerson=" + workPerson + + ", workSiteDesc=" + workSiteDesc + + ", projectState=" + projectState + + ", imageUrl=" + imageUrl + + ", updateTime=" + updateTime + + ", workRoad=" + workRoad + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java new file mode 100644 index 0000000..28a4daa --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java @@ -0,0 +1,147 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Worker") +@TableName("br_worker") +@Data +public class Worker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "人员ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 姓名 + */ + @ApiModelProperty(value = "姓名") + @TableField("WORKER_NAME") + private String workerName; + + /** + * 性别 + */ + @ApiModelProperty(value = "性别") + @TableField("GENDER") + private String gender; + + /** + * 所属部门 + */ + @ApiModelProperty(value = "所属部门(人员管理)") + @TableField("DEPT_ID") + private Long deptId; + + /** + * 所属单位 + */ + @ApiModelProperty(value = "所属单位(入场申请中使用)") + @TableField("OWNER_SHIP") + private String ownerShip; + + /** + * 联系方式 + */ + @ApiModelProperty(value = "联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 证件号 + */ + @ApiModelProperty(value = "证件号") + @TableField("ID_CARD_NUMBER") + private String idCardNumber; + + /** + * 入场原因 + */ + @ApiModelProperty(value = "入场原因(入场申请中使用)") + @TableField("ENTER_REASON") + private String enterReason; + + /** + * 入场人脸照片 + */ + @ApiModelProperty(value = "人脸照片(照片路径)") + @TableField("WORKER_AVATAR") + private String workerAvatar; + + /** + * 申请入场时间 + */ + @ApiModelProperty(value = "注册时间/申请入场时间") + @TableField("CREATE_TIME") + private Date createTime; + + /** + * 人员类型 + */ + @ApiModelProperty(value = "人员类型(区分人员管理和入场申请)") + @TableField("WORKER_TYPE") + private String workerType; + + @ApiModelProperty(value = "性别名称") + @TableField(exist = false) + private String genderName; + + @ApiModelProperty(value = "部门名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @ApiModelProperty(value = "是否注册(0未注册;1已注册)",allowableValues = "0,1") + @TableField(exist = false) + private String isRegister; + + @Override + public String toString() { + return "Worker{" + + "id=" + id + + ", workerName=" + workerName + + ", gender=" + gender + + ", deptId=" + deptId + + ", ownerShip=" + ownerShip + + ", phoneNumber=" + phoneNumber + + ", idCardNumber=" + idCardNumber + + ", enterReason=" + enterReason + + ", workerAvatar=" + workerAvatar + + ", createTime=" + createTime + + ", workerType=" + workerType + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java new file mode 100644 index 0000000..9801742 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警记录表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusAlarmMapper extends BaseMapper { + + Page listPage(Page page,@Param("ew") QueryWrapper queryWrapper); + + void cancelAlarm(@Param("deviceId")Long deviceId,@Param("alarmType") String alarmType); + + List alarmCount(@Param("projectId")Long projectId, @Param("alarmStatus")String alarmStatus); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java new file mode 100644 index 0000000..9590b7d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件图片表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventImageMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java new file mode 100644 index 0000000..3c85edf --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java new file mode 100644 index 0000000..4ca9212 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 设备扩展信息表(安全树) Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface DeviceExtMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java new file mode 100644 index 0000000..444c0c5 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Mapper +public interface DeviceMapper extends BaseMapper { + + Page listDetailPage(Page page,@Param("ew") QueryWrapper ew); + + List selectProjectDevice(@Param("projectId") Long projectId); + + List selectHelmetList(@Param("deviceType")String deviceType); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java new file mode 100644 index 0000000..1d0c14e --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectDeviceMapper extends BaseMapper { + List selectDetailByProjectId(@Param("projectId") Long projectId); + + List selectDeviceLocationList(@Param("projectId") Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java new file mode 100644 index 0000000..58583d1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectWorkerMapper extends BaseMapper { + + List selectDetailByProjectId(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + + List selectWorkerLocationList(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java new file mode 100644 index 0000000..a4934d2 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +/** + *

+ * 作业现场表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkSiteInfoMapper extends BaseMapper { + + Page selectListPage(Page page,@Param("ew") QueryWrapper ew); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java new file mode 100644 index 0000000..258fb12 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkerMapper extends BaseMapper { + + + Page selectListPage(Page page, @Param("ew") QueryWrapper ew); + + List selectWorkerAvatars(@Param("projectId")Long projectId); + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml new file mode 100644 index 0000000..595088a --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml @@ -0,0 +1,58 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml new file mode 100644 index 0000000..fbc3db3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml new file mode 100644 index 0000000..627d573 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml new file mode 100644 index 0000000..5321d1c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml new file mode 100644 index 0000000..94262e1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml @@ -0,0 +1,97 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml new file mode 100644 index 0000000..c6d1c24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml @@ -0,0 +1,29 @@ + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml new file mode 100644 index 0000000..8d2de10 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml new file mode 100644 index 0000000..8f01326 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml @@ -0,0 +1,26 @@ + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml new file mode 100644 index 0000000..3e28b39 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml @@ -0,0 +1,56 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java new file mode 100644 index 0000000..f63c19c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 报警记录表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusAlarmService extends IService { + + boolean alarmUpload(AlarmUpload alarmUpload); + + Page listPage(Page page,QueryWrapper queryWrapper); + + List alarmCount(Long projectId,String alarmStatus); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java new file mode 100644 index 0000000..b1187ed --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 事件图片表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusEventImageService extends IService { + + boolean saveBusEventImages(Long eventId, List imageList); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java new file mode 100644 index 0000000..85c48d0 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 事件表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusEventService extends IService { + + boolean saveBusEvent(BusEvent busEvent); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java new file mode 100644 index 0000000..6fc5361 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 设备扩展信息表(安全树) 服务类 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface IDeviceExtService extends IService { + + boolean saveDeviceExt(DeviceDetailDTO deviceDetailDTO); + + boolean updateDeviceExt(DeviceDetailDTO deviceDetailDTO); + + boolean removeByDeviceIds(List deviceIds); + + boolean setGasThreshold(String gasIp,String gasPort,String threshold); + + String getGasThreshold(String gasIp,String gasPort); + + Long selectByGasIpPort(String gasIp,String gasPort); + + Long selectByCameraIpPort(String cameraIp,String cameraPort); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java new file mode 100644 index 0000000..9e62756 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java @@ -0,0 +1,32 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IDeviceService extends IService { + + boolean saveDevice(DeviceDetailDTO deviceDetailDTO); + + boolean updateDevice(DeviceDetailDTO deviceDetailDTO); + + boolean deleteDevices(List deviceIds); + + Page listPage(Page page, QueryWrapper queryWrapper, String status,Long projectId); + + List selectProjectDevice(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java new file mode 100644 index 0000000..8599411 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IProjectDeviceService extends IService { + + boolean saveProjectDeviceList(Long projectId, List projectDeviceList); + + boolean updateProjectDeviceList(Long projectId, List projectDeviceList); + + boolean deleteByProjectId(Long projectId); + + boolean deleteByProjectIds(List projectIds); + + List selectDetailByProjectId(Long projectId); + + Long selectProjectIdByDevice(Long deviceId); + + List selectDeviceLocationList(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java new file mode 100644 index 0000000..e921bc3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IProjectWorkerService extends IService { + + boolean saveProjectWorkerList(Long projectId, List projectWorkerList); + + boolean updateProjectWorkerList(Long projectId, List projectWorkerList); + + boolean deleteByProjectId(Long projectId); + + boolean deleteByProjectIds(List projectIds); + + List selectDetailByProjectId(Long projectId,String workerType); + + List selectWorkerLocationDTO(Long projectId); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java new file mode 100644 index 0000000..58a8590 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; +/** + *

+ * 作业现场表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IWorkSiteInfoService extends IService { + + boolean addWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO); + + boolean updateWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO); + + boolean deleteProjects(List projectIds); + + WorkSiteDetailDTO getWorkSiteDetail(Long projectId); + + Page selectListPage(Page page, QueryWrapper queryWrapper); + + boolean start(Long projectId); + + boolean finish(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java new file mode 100644 index 0000000..6c6ee98 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.extension.service.IService; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IWorkerService extends IService { + + boolean addWorker(Worker worker,Long projectId); + + Page selectListPage(Page page,QueryWrapper ew); + + Worker selectWorkerDetail(Long workerId); + + List faceRegister(String cameraIp,String cameraPort); + + List projectTempWorker(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java new file mode 100644 index 0000000..b44de1d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.consts.AlarmTypeEnum; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.entity.DataTreeLocation; +import com.casic.missiles.modular.system.mapper.BusAlarmMapper; +import com.casic.missiles.modular.system.service.*; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +/** + *

+ * 报警记录表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +@Slf4j +public class BusAlarmServiceImpl extends ServiceImpl implements IBusAlarmService { + + private final IDeviceExtService deviceExtService; + private final IDeviceService deviceService; + private final IProjectDeviceService projectDeviceService; + + private final ICasicFileService fileService; + + private final AbstractDictService dictService; + private final IDataSupportService dataSupportService; + + @Override + @Transactional + public boolean alarmUpload(AlarmUpload alarmUpload) { + log.info("alarm upload ==> {}",alarmUpload.toString()); + Long deviceId = null; + if(StrUtil.isAllNotBlank(alarmUpload.getGasIp(),alarmUpload.getGasPort())){ + deviceId = deviceExtService.selectByGasIpPort(alarmUpload.getGasIp(),alarmUpload.getGasPort()); + } + if(ObjectUtil.isEmpty(deviceId) && StrUtil.isAllNotBlank(alarmUpload.getCameraIp(),alarmUpload.getCameraPort())){ + deviceId = deviceExtService.selectByCameraIpPort(alarmUpload.getCameraIp(),alarmUpload.getCameraPort()); + } + + if(ObjectUtil.isEmpty(deviceId)){ + return false; + } + + BusAlarm alarm = new BusAlarm(); + alarm.setDeviceId(deviceId); + alarm.setProjectId(projectDeviceService.selectProjectIdByDevice(deviceId)); + alarm.setAlarmValue(alarmUpload.getAlarmValue()); + if(StrUtil.isNotEmpty(alarmUpload.getAlarmTime())){ + alarm.setAlarmTime(DateUtil.parseDateTime(alarmUpload.getAlarmTime())); + }else { + alarm.setAlarmTime(new Date()); + } + + alarm.setAlarmType(alarmUpload.getAlarmType()); + alarm.setAlarmContent(alarmUpload.getAlarmContent()); + if(StrUtil.isNotEmpty(alarmUpload.getAlarmImage())){ + String imgBase64 = "data:image/jpeg;base64," + alarmUpload.getAlarmImage(); + String imageUrl = fileService.saveFile(imgBase64); + alarm.setAlarmImage(imageUrl); + } + alarm.setAlarmStatus(ALARM_STATUS_ON); + + DataTreeLocation treeLocation = dataSupportService.getTreeLocation(deviceId); + if(ObjectUtil.isNotEmpty(treeLocation)){ + alarm.setAlarmLng(treeLocation.getGdLng()); + alarm.setAlarmLat(treeLocation.getGdLat()); + } + + //自动消警 + AlarmTypeEnum alarmTypeEnum = AlarmTypeEnum.getByAlarmType(alarm.getAlarmType()); + if(ObjectUtil.isNotEmpty(alarmTypeEnum) && alarmTypeEnum.isAutoCancel()){ + this.baseMapper.cancelAlarm(deviceId,alarm.getAlarmType()); + } + return this.save(alarm); + } + + @Override + public Page listPage(Page page, QueryWrapper queryWrapper) { + page = this.baseMapper.listPage(page, queryWrapper); + for (BusAlarm alarm : page.getRecords()) { + alarm.setAlarmTypeName(dictService.getDictNameByCode("alarmType",alarm.getAlarmType())); + alarm.setAlarmStatusName(dictService.getDictNameByCode("alarmStatus",alarm.getAlarmStatus())); + if(StrUtil.isNotEmpty(alarm.getProjectState())){ + alarm.setProjectStateName(dictService.getDictNameByCode("projectStatus",alarm.getProjectState())); + } + } + return page; + } + + @Override + public List alarmCount(Long projectId, String alarmStatus) { + List list = this.baseMapper.alarmCount(projectId, alarmStatus); + list = list.stream().filter(i->StrUtil.isNotEmpty(i.getAlarmType())).collect(Collectors.toList()); + for (AlarmTypeCountDTO countDTO : list) { + countDTO.setAlarmTypeName(dictService.getDictNameByCode("alarmType",countDTO.getAlarmType())); + } + return list; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java new file mode 100644 index 0000000..a43f7c1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.casic.missiles.modular.system.mapper.BusEventImageMapper; +import com.casic.missiles.modular.system.service.IBusEventImageService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 事件图片表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +public class BusEventImageServiceImpl extends ServiceImpl implements IBusEventImageService { + + @Override + public boolean saveBusEventImages(Long eventId, List imageList) { + imageList.forEach(i->i.setEventId(eventId)); + return this.saveBatch(imageList); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java new file mode 100644 index 0000000..21e511c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java @@ -0,0 +1,39 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.mapper.BusEventMapper; +import com.casic.missiles.modular.system.service.IBusEventImageService; +import com.casic.missiles.modular.system.service.IBusEventService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; + +/** + *

+ * 事件表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class BusEventServiceImpl extends ServiceImpl implements IBusEventService { + + private final IBusEventImageService busEventImageService; + + + @Override + @Transactional + public boolean saveBusEvent(BusEvent busEvent) { + busEvent.setCreateTime(new Date()); + boolean res = this.save(busEvent); + if(res){ + res = busEventImageService.saveBusEventImages(busEvent.getId(),busEvent.getImageList()); + } + return res; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java new file mode 100644 index 0000000..2bdb63d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java @@ -0,0 +1,102 @@ +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.core.conditions.update.UpdateWrapper; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.casic.missiles.modular.system.mapper.DeviceExtMapper; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 设备扩展信息表(安全树) 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Service +public class DeviceExtServiceImpl extends ServiceImpl implements IDeviceExtService { + + + @Override + public boolean saveDeviceExt(DeviceDetailDTO deviceDetailDTO) { + DeviceExt ext = new DeviceExt(); + ext.setDeviceId(deviceDetailDTO.getId()); + ext.setCameraCode(deviceDetailDTO.getCameraCode()); + ext.setCameraIp(deviceDetailDTO.getCameraIp()); + ext.setCameraPort(deviceDetailDTO.getCameraPort()); + ext.setGasCode(deviceDetailDTO.getGasCode()); + ext.setGasIp(deviceDetailDTO.getGasIp()); + ext.setGasPort(deviceDetailDTO.getGasPort()); + ext.setHatLiningCode(deviceDetailDTO.getHatLiningCode()); + return this.save(ext); + } + + @Override + public boolean updateDeviceExt(DeviceDetailDTO deviceDetailDTO) { + DeviceExt ext = this.selectByDeviceId(deviceDetailDTO.getId()); + ext.setCameraCode(deviceDetailDTO.getCameraCode()); + ext.setCameraIp(deviceDetailDTO.getCameraIp()); + ext.setCameraPort(deviceDetailDTO.getCameraPort()); + ext.setGasCode(deviceDetailDTO.getGasCode()); + ext.setGasIp(deviceDetailDTO.getGasIp()); + ext.setGasPort(deviceDetailDTO.getGasPort()); + ext.setHatLiningCode(deviceDetailDTO.getHatLiningCode()); + return this.updateById(ext); + } + + @Override + public boolean removeByDeviceIds(List deviceIds) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("DEVICE_ID",deviceIds); + return this.remove(queryWrapper); + } + + @Override + public boolean setGasThreshold(String gasIp, String gasPort, String threshold) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.set("GAS_THRESHOLD",threshold); + updateWrapper.eq("GAS_IP",gasIp); + updateWrapper.eq("GAS_PORT",gasPort); + return this.update(updateWrapper); + } + + @Override + public String getGasThreshold(String gasIp, String gasPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("GAS_IP",gasIp); + queryWrapper.eq("GAS_PORT",gasPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getGasThreshold() : null; + } + + private DeviceExt selectByDeviceId(Long deviceId){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVICE_ID",deviceId); + return this.getOne(queryWrapper); + } + + @Override + public Long selectByGasIpPort(String gasIp, String gasPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("GAS_IP",gasIp); + queryWrapper.eq("GAS_PORT",gasPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getDeviceId() : null; + } + + @Override + public Long selectByCameraIpPort(String cameraIp, String cameraPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("CAMERA_IP",cameraIp); + queryWrapper.eq("CAMERA_PORT",cameraPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getDeviceId() : null; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java new file mode 100644 index 0000000..9df79ef --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.mapper.DeviceMapper; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.modular.system.consts.DeviceConst.*; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class DeviceServiceImpl extends ServiceImpl implements IDeviceService { + + private final AbstractDictService dictService; + private final IDeviceExtService deviceExtService; + + private final IProjectDeviceService projectDeviceService; + + @Transactional + @Override + public boolean saveDevice(DeviceDetailDTO deviceDetailDTO) { + deviceDetailDTO.setCreateTime(new Date()); + boolean deviceRes = this.save(deviceDetailDTO); + if(deviceRes && DEVICE_TYPE_TREE.equals(deviceDetailDTO.getDeviceType())){ + deviceRes = deviceExtService.saveDeviceExt(deviceDetailDTO); + } + return deviceRes; + } + + @Transactional + @Override + public boolean updateDevice(DeviceDetailDTO deviceDetailDTO) { + boolean deviceRes = this.updateById(deviceDetailDTO); + if(deviceRes && DEVICE_TYPE_TREE.equals(deviceDetailDTO.getDeviceType())){ + deviceRes = deviceExtService.updateDeviceExt(deviceDetailDTO); + } + return deviceRes; + } + + @Transactional + @Override + public boolean deleteDevices(List deviceIds) { + return this.removeByIds(deviceIds) & deviceExtService.removeByDeviceIds(deviceIds); + } + + @Override + public Page listPage(Page page, QueryWrapper queryWrapper,String status,Long projectId) { + String ID_COLUMN_NAME = "br_device.ID"; + List useDevices = this.selectProjectDevice(null); + List projectDevices; + if(ObjectUtil.isNotEmpty(projectId)){ + projectDevices = this.selectProjectDevice(projectId); + } else { + projectDevices = null; + } + + // 查询使用中的设备(如果传了 projectId,查询 使用中&&此现场) + if(DEVICE_STATUS_USE.equals(status)){ + if(CollUtil.isEmpty(useDevices)){ + return page; + } + if(ObjectUtil.isNotEmpty(projectId) && CollUtil.isEmpty(projectDevices)){ + return page; + } + queryWrapper.in(ID_COLUMN_NAME,useDevices); + if(CollUtil.isNotEmpty(projectDevices)){ + queryWrapper.in(ID_COLUMN_NAME,projectDevices); + } + + } + + // 查询未使用的设备(如果传了 projectId,查询 未使用||此现场) + if(DEVICE_STATUS_NORMAL.equals(status)) { + if (CollUtil.isNotEmpty(useDevices)) { + if (CollUtil.isEmpty(projectDevices)) { + queryWrapper.notIn(ID_COLUMN_NAME, useDevices); + } else { + queryWrapper.and(i -> i.notIn(ID_COLUMN_NAME, useDevices).or().in(ID_COLUMN_NAME, projectDevices)); + } + } + } + + page = this.baseMapper.listDetailPage(page, queryWrapper); + for (DeviceDetailDTO record : page.getRecords()) { + record.setDeviceTypeName(dictService.getDictNameByCode("deviceType",record.getDeviceType())); + record.setIsPowerSupplyName(dictService.getDictNameByCode("isPowerSupply",record.getIsPowerSupply())); + record.setRegisterTime(DateUtil.formatDate(record.getCreateTime())); + record.setStatus(useDevices.contains(record.getId()) ? DEVICE_STATUS_USE : DEVICE_STATUS_NORMAL); + record.setStatusName(dictService.getDictNameByCode("deviceStatus",record.getStatus())); + } + return page; + } + + @Override + public List selectProjectDevice(Long projectId) { + return this.baseMapper.selectProjectDevice(projectId); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceSupportServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceSupportServiceImpl.java new file mode 100644 index 0000000..ffd01ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceSupportServiceImpl.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.mapper.DeviceMapper; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceSupportService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; + +import static com.casic.missiles.modular.system.consts.DeviceConst.DEVICE_TYPE_HAT; + +@Service +@RequiredArgsConstructor +public class DeviceSupportServiceImpl implements IDeviceSupportService { + + private final IDeviceExtService deviceExtService; + + private final DeviceMapper deviceMapper; + + @Override + public Long selectByGasIpPort(String gasIp, String gasPort) { + return deviceExtService.selectByGasIpPort(gasIp, gasPort); + } + + @Override + public List selectHelmetList() { + return deviceMapper.selectHelmetList(DEVICE_TYPE_HAT); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectDeviceServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectDeviceServiceImpl.java new file mode 100644 index 0000000..965f55c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectDeviceServiceImpl.java @@ -0,0 +1,96 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.DataGas; +import com.casic.missiles.modular.system.entity.DataTreeLocation; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.mapper.ProjectDeviceMapper; +import com.casic.missiles.modular.system.service.IDataSupportService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.utils.LngLatUtil; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.stream.Collectors; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class ProjectDeviceServiceImpl extends ServiceImpl implements IProjectDeviceService { + + private final IDataSupportService dataSupportService; + + @Override + public boolean saveProjectDeviceList(Long projectId, List projectDeviceList) { + projectDeviceList.forEach(i->i.setProjectId(projectId)); + return this.saveBatch(projectDeviceList); + } + + @Transactional + @Override + public boolean updateProjectDeviceList(Long projectId, List projectDeviceList) { + return this.deleteByProjectId(projectId) && this.saveProjectDeviceList(projectId, projectDeviceList); + } + + @Override + public boolean deleteByProjectId(Long projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("PROJECT_ID",projectId); + return this.remove(queryWrapper); + } + + @Override + public boolean deleteByProjectIds(List projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("PROJECT_ID",projectId); + return this.remove(queryWrapper); + } + + @Override + public List selectDetailByProjectId(Long projectId) { + return this.baseMapper.selectDetailByProjectId(projectId); + } + + @Override + public Long selectProjectIdByDevice(Long deviceId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVICE_ID",deviceId); + queryWrapper.exists("(select Id FROM br_work_site_info p where p.ID = br_project_device.PROJECT_ID AND p.PROJECT_STATE != '3')"); + ProjectDevice projectDevice = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(projectDevice) ? projectDevice.getProjectId() : null; + } + + @Override + public List selectDeviceLocationList(Long projectId) { + List list = this.baseMapper.selectDeviceLocationList(projectId); + for (DeviceLocationDTO locationDTO : list) { + DataGas dataGas = dataSupportService.getGasData(locationDTO.getDeviceId()); + DataTreeLocation location = dataSupportService.getTreeLocation(locationDTO.getDeviceId(),true); + if(ObjectUtil.isNotEmpty(dataGas)){ + locationDTO.setGasValue(dataGas.getGasValue()); + locationDTO.setTime(DateUtil.formatDateTime(dataGas.getTs())); + } + if(ObjectUtil.isNotEmpty(location)){ + locationDTO.setLng(location.getGdLng()); + locationDTO.setLat(location.getGdLat()); + locationDTO.setLocation(location.getLocation()); + } + } + list = list.stream().filter(i-> StrUtil.isAllNotEmpty(i.getLng(),i.getLat())).collect(Collectors.toList()); + return LngLatUtil.sort(list); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectWorkerServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectWorkerServiceImpl.java new file mode 100644 index 0000000..c3ec86c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectWorkerServiceImpl.java @@ -0,0 +1,101 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.DataHelmetHealth; +import com.casic.missiles.modular.system.entity.DataHelmetLocation; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.mapper.ProjectWorkerMapper; +import com.casic.missiles.modular.system.service.IHelmetSupportService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.system.consts.ProjectConst.WORKER_TYPE_NORMAL; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class ProjectWorkerServiceImpl extends ServiceImpl implements IProjectWorkerService { + + private final AbstractDeptService deptService; + private final IHelmetSupportService helmetSupportService; + + @Override + public boolean saveProjectWorkerList(Long projectId, List projectWorkerList) { + projectWorkerList.forEach(i->i.setProjectId(projectId)); + return this.saveBatch(projectWorkerList); + } + + @Transactional + @Override + public boolean updateProjectWorkerList(Long projectId, List projectWorkerList) { + return this.deleteByProjectId(projectId) && this.saveProjectWorkerList(projectId, projectWorkerList) ; + } + + @Override + public boolean deleteByProjectId(Long projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("PROJECT_ID",projectId); + return this.remove(queryWrapper); + } + + @Override + public boolean deleteByProjectIds(List projectIds) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("PROJECT_ID",projectIds); + return this.remove(queryWrapper); + } + + + @Override + public List selectDetailByProjectId(Long projectId,String workerType) { + List projectWorkerList = this.baseMapper.selectDetailByProjectId(projectId,workerType); + for (ProjectWorker projectWorker : projectWorkerList) { + if(ObjectUtil.isNotEmpty(projectWorker.getWorkerDeptId())){ + projectWorker.setWorkerDeptName(deptService.getDeptName(projectWorker.getWorkerDeptId())); + } + } + return projectWorkerList; + } + + @Override + public List selectWorkerLocationDTO(Long projectId) { + List projectWorkerList = this.baseMapper.selectWorkerLocationList(projectId,WORKER_TYPE_NORMAL); + for (WorkerLocationDTO workerLocationDTO : projectWorkerList) { + if(ObjectUtil.isNotEmpty(workerLocationDTO.getHatId())){ + DataHelmetLocation location = helmetSupportService.getHelmetLocation(workerLocationDTO.getHatId(),true); + if(ObjectUtil.isNotEmpty(location)){ + workerLocationDTO.setLng(location.getGdLng()); + workerLocationDTO.setLat(location.getGdLat()); + workerLocationDTO.setLocation(location.getLocation()); + } + + DataHelmetHealth health = helmetSupportService.getHelmetHealth(workerLocationDTO.getHatId()); + if(ObjectUtil.isNotEmpty(health)){ + workerLocationDTO.setBloodOxygen(health.getBloodOxygen()); + workerLocationDTO.setHeartRate(health.getHeartRate()); + workerLocationDTO.setTime(DateUtil.formatDateTime(health.getTs())); + } + } + } + projectWorkerList = projectWorkerList.stream().filter(i-> StrUtil.isAllNotEmpty(i.getLng(),i.getLat())).collect(Collectors.toList()); + return projectWorkerList; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkSiteInfoServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkSiteInfoServiceImpl.java new file mode 100644 index 0000000..5068da2 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkSiteInfoServiceImpl.java @@ -0,0 +1,151 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.mapper.WorkSiteInfoMapper; +import com.casic.missiles.modular.system.service.*; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.system.consts.ProjectConst.*; + +/** + *

+ * 作业现场表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class WorkSiteInfoServiceImpl extends ServiceImpl implements IWorkSiteInfoService { + + private final IProjectWorkerService projectWorkerService; + private final IProjectDeviceService projectDeviceService; + + private final IWorkerService workerService; + private final IBraceletService braceletService; + + private final AbstractDeptService deptService; + private final AbstractDictService dictService; + @Override + @Transactional + public boolean addWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO) { + workSiteDetailDTO.setCreateTime(new Date()); + workSiteDetailDTO.setUpdateTime(new Date()); + workSiteDetailDTO.setProjectState(PROJECT_STATE_PREPARE); + boolean res = this.save(workSiteDetailDTO); + if(res){ + res = projectDeviceService.saveProjectDeviceList(workSiteDetailDTO.getId(), workSiteDetailDTO.getDeviceList()); + res = res & projectWorkerService.saveProjectWorkerList(workSiteDetailDTO.getId(), workSiteDetailDTO.getWorkerList()); + } + return res; + } + + @Override + @Transactional + public boolean updateWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO) { + workSiteDetailDTO.setUpdateTime(new Date()); + boolean res = this.updateById(workSiteDetailDTO); + if(res){ + res = projectDeviceService.updateProjectDeviceList(workSiteDetailDTO.getId(), workSiteDetailDTO.getDeviceList()); + res = res & projectWorkerService.updateProjectWorkerList(workSiteDetailDTO.getId(), workSiteDetailDTO.getWorkerList()); + } + return res; + } + + @Override + public boolean deleteProjects(List projectIds) { + if(CollUtil.isNotEmpty(projectIds)) { + projectDeviceService.deleteByProjectIds(projectIds); + projectWorkerService.deleteByProjectIds(projectIds); + return this.removeByIds(projectIds); + } + return true; + } + + @Override + public WorkSiteDetailDTO getWorkSiteDetail(Long projectId) { + WorkSiteInfo workSiteInfo = this.getById(projectId); + WorkSiteDetailDTO workSiteDetailDTO = new WorkSiteDetailDTO(); + BeanUtil.copyProperties(workSiteInfo,workSiteDetailDTO,true); + workSiteDetailDTO.setDeviceList(projectDeviceService.selectDetailByProjectId(projectId)); + workSiteDetailDTO.setWorkerList(projectWorkerService.selectDetailByProjectId(projectId,WORKER_TYPE_NORMAL)); + + Worker responseWorker = workerService.selectWorkerDetail(workSiteDetailDTO.getWorkPerson()); + if(ObjectUtil.isNotEmpty(responseWorker)){ + workSiteDetailDTO.setWorkPersonName(responseWorker.getWorkerName()); + workSiteDetailDTO.setWorkPersonPhoneNumber(responseWorker.getPhoneNumber()); + workSiteDetailDTO.setWorkPersonDeptId(responseWorker.getDeptId()); + workSiteDetailDTO.setWorkPersonDeptName(responseWorker.getDeptName()); + } + return workSiteDetailDTO; + } + + @Override + public Page selectListPage(Page page, QueryWrapper queryWrapper) { + page = this.baseMapper.selectListPage(page, queryWrapper); + for (WorkSiteInfo workSiteInfo : page.getRecords()) { + workSiteInfo.setProjectStateName(dictService.getDictNameByCode("projectState", workSiteInfo.getProjectState())); + if(ObjectUtil.isNotEmpty(workSiteInfo.getWorkPersonDeptId())){ + workSiteInfo.setWorkPersonDeptName(deptService.getDeptName(workSiteInfo.getWorkPersonDeptId())); + } + workSiteInfo.setRegisterTime(DateUtil.formatDate(workSiteInfo.getCreateTime())); + } + return page; + } + + @Override + public boolean start(Long projectId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",projectId); + updateWrapper.set("PROJECT_STATE",PROJECT_STATE_WORKING); + updateWrapper.set("START_TIME",new Date()); + boolean res = this.update(updateWrapper); + //braceletService.enableBracelet(selectProjectBracelets(projectId)); + return res; + } + + @Override + public boolean finish(Long projectId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",projectId); + updateWrapper.set("PROJECT_STATE",PROJECT_STATE_FINISH); + updateWrapper.set("FINISH_TIME",new Date()); + boolean res = this.update(updateWrapper); + //braceletService.disableBracelet(selectProjectBracelets(projectId)); + return res; + } + + private List selectProjectBracelets(Long projectId){ + List deviceCodes = new ArrayList<>(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("PROJECT_ID",projectId); + queryWrapper.isNotNull("BRACELET_CODE"); + queryWrapper.select("BRACELET_CODE"); + List res = projectWorkerService.listObjs(queryWrapper); + if(CollUtil.isNotEmpty(res)){ + deviceCodes = res.stream().map(Object::toString).distinct().collect(Collectors.toList()); + } + return deviceCodes; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkerServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkerServiceImpl.java new file mode 100644 index 0000000..6859cff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkerServiceImpl.java @@ -0,0 +1,110 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.mapper.WorkerMapper; +import com.casic.missiles.modular.system.service.*; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.modular.system.consts.ProjectConst.WORKER_TYPE_TEMP; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class WorkerServiceImpl extends ServiceImpl implements IWorkerService { + + private final IProjectWorkerService projectWorkerService; + + private final IProjectDeviceService projectDeviceService; + private final AbstractDictService dictService; + private final AbstractDeptService deptService; + private final IDeviceExtService deviceExtService; + + @Override + @Transactional + public boolean addWorker(Worker worker, Long projectId) { + worker.setCreateTime(new Date()); + boolean res = this.save(worker); + if(res && ObjectUtil.isNotEmpty(projectId)){ + res = projectWorkerService.save(new ProjectWorker(projectId, worker.getId())); + if(ObjectUtil.isNotEmpty(worker.getWorkerAvatar())){ + // todo 向一体机推送人脸图片 + } + } + return res; + } + + @Override + public Page selectListPage(Page page, QueryWrapper ew) { + page = this.baseMapper.selectListPage(page, ew); + for (Worker worker : page.getRecords()) { + wrapperWorker(worker); + } + return page; + } + + private void wrapperWorker(Worker worker) { + if(StrUtil.isNotEmpty(worker.getGender())){ + worker.setGenderName(dictService.getDictNameByCode("sysSex", worker.getGender())); + } + if(ObjectUtil.isNotEmpty(worker.getDeptId())){ + worker.setDeptName(deptService.getDeptName(worker.getDeptId())); + } + worker.setRegisterTime(DateUtil.formatDate(worker.getCreateTime())); + if(StrUtil.isNotEmpty(worker.getStatus())){ + worker.setStatusName(dictService.getDictNameByCode("workerStatus", worker.getStatus())); + } + } + + @Override + public Worker selectWorkerDetail(Long workerId) { + Worker worker = this.getById(workerId); + if(ObjectUtil.isNotEmpty(worker)){ + wrapperWorker(worker); + } + return worker; + } + + @Override + public List faceRegister(String cameraIp, String cameraPort) { + Long deviceId = deviceExtService.selectByCameraIpPort(cameraIp, cameraPort); + if(ObjectUtil.isNotEmpty(deviceId)){ + Long projectId = projectDeviceService.selectProjectIdByDevice(deviceId); + if(ObjectUtil.isNotEmpty(projectId)){ + return this.baseMapper.selectWorkerAvatars(projectId); + } + } + return null; + } + + @Override + public List projectTempWorker(Long projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("WORKER_TYPE",WORKER_TYPE_TEMP); + queryWrapper.exists("(select ID FROM br_project_worker WHERE PROJECT_ID = "+ projectId +")"); + List workers = this.list(queryWrapper); + workers.forEach(this::wrapperWorker); + return workers; + } +} diff --git a/casic_video_283_web/pom.xml b/casic_video_283_web/pom.xml new file mode 100644 index 0000000..feace49 --- /dev/null +++ b/casic_video_283_web/pom.xml @@ -0,0 +1,166 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + casic_video_283_web + 1.0.0 + jar + casic_video_283_web + casic web启动入口 + + + + dev + + true + + + dev + + + + test + + test + + + + prod + + prod + + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-actuator + + + io.micrometer + micrometer-core + + + + + org.springframework.boot + spring-boot-starter-jdbc + + + + com.casic + casic-core + ${core.version} + + + com.casic + casic-admin-core + ${admin.version} + + + io.springfox + springfox-swagger-ui + + + + + com.casic + casic-admin-support + ${admin.version} + + + mysql + mysql-connector-java + ${mysql.driver.version} + + + com.casic + casic-area-starter + ${admin.version} + + + + com.casic + casic_video_283_server + ${pro.version} + + + + org.springframework.boot + spring-boot-starter-tomcat + + + + + casic_video_283_web-${pro.version} + + + org.apache.maven.plugins + maven-jar-plugin + ${maven.jar.plugin.version} + + + + /config/*-*.yml + **/MockController.class + + + + com.casic.missiles.CasicApplication + true + ./ + + + + + + org.apache.maven.plugins + maven-assembly-plugin + ${maven.assembly.plugin.version} + + + make-assembly + package + + single + + + + + + org.apache.maven.plugins + maven-war-plugin + ${maven.war.plugin.version} + + + + + src/main/resources + + + /config/*/* + /config/*-*.yml + + true + + + src/main/java + + **/*.xml + + true + + + + \ No newline at end of file diff --git a/casic_video_283_web/src/main/build/bin/start.bat b/casic_video_283_web/src/main/build/bin/start.bat new file mode 100644 index 0000000..1db4e88 --- /dev/null +++ b/casic_video_283_web/src/main/build/bin/start.bat @@ -0,0 +1,4 @@ +@echo off +title ${project.build.finalName} +java -jar ./lib/${project.build.finalName}.jar +@pause diff --git a/casic_video_283_web/src/main/build/bin/start.sh b/casic_video_283_web/src/main/build/bin/start.sh new file mode 100644 index 0000000..1cc33fc --- /dev/null +++ b/casic_video_283_web/src/main/build/bin/start.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +jar_name="${project.build.finalName}.jar" +echo "starting $jar_name ..." + +PID=$(ps -ef | grep ${jar_name} | grep -v grep | awk '{print $2}') + +OLD_IFS="$IFS" +IFS="," +PIDARR=($PID) +IFS="$OLD_IFS" + +if [ ! $PID ]; then + echo "process ${jar_name} not exit" +else + echo "process id: $PID" + + kill -9 ${PID} + + if [ $? -eq 0 ]; then + echo "kill ${jar_name} success" + else + echo "kill ${jar_name} fail" + exit + fi +fi + + + +nohup java -jar ./lib/${jar_name} >/dev/null 2>log & +echo "start ${jar_name} ..." \ No newline at end of file diff --git a/casic_video_283_web/src/main/build/package.xml b/casic_video_283_web/src/main/build/package.xml new file mode 100644 index 0000000..c9259ad --- /dev/null +++ b/casic_video_283_web/src/main/build/package.xml @@ -0,0 +1,43 @@ + + + package + + zip + tar.gz + + true + + + + true + true + lib + runtime + + + + + src/main/build/bin + + start.bat + start.sh + + true + 0744 + / + + + src/main/resources/config + true + + *.yml + /*/* + + /config + + + src/main/resources/i18n + / + + + \ No newline at end of file diff --git a/casic_video_283_web/src/main/java/com/casic/missiles/CasicApplication.java b/casic_video_283_web/src/main/java/com/casic/missiles/CasicApplication.java new file mode 100644 index 0000000..7b8791f --- /dev/null +++ b/casic_video_283_web/src/main/java/com/casic/missiles/CasicApplication.java @@ -0,0 +1,35 @@ +package com.casic.missiles; + +import lombok.extern.slf4j.Slf4j; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.web.servlet.ServletComponentScan; +import org.springframework.cache.annotation.EnableCaching; +import org.springframework.scheduling.annotation.EnableAsync; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +/** + * SpringBoot方式启动类 + * + * @author lwh + * @Date 2021/06/06 12:06 + */ +@SpringBootApplication +@EnableCaching +@EnableTransactionManagement(proxyTargetClass = true) +@EnableAsync +@Slf4j +@MapperScan(value = "com.casic.missiles.modular.system.mapper") +public class CasicApplication { + + static { + System.setProperty("druid.mysql.usePingMethod","false"); + } + + public static void main(String[] args) { + SpringApplication.run(CasicApplication.class, args); + log.info("CasicApplication is success!"); + } + +} diff --git a/casic_video_283_web/src/main/java/com/casic/missiles/CasicServletInitializer.java b/casic_video_283_web/src/main/java/com/casic/missiles/CasicServletInitializer.java new file mode 100644 index 0000000..e30585b --- /dev/null +++ b/casic_video_283_web/src/main/java/com/casic/missiles/CasicServletInitializer.java @@ -0,0 +1,18 @@ +package com.casic.missiles; + +import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; + +/** + * Guns Web程序启动类 + * + * @author fengshuonan + * @date 2017-05-21 9:43 + */ +public class CasicServletInitializer extends SpringBootServletInitializer { + + @Override + protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { + return application.sources(CasicApplication.class); + } +} diff --git a/casic_video_283_web/src/main/java/com/casic/missiles/config/SwaggerConfig.java b/casic_video_283_web/src/main/java/com/casic/missiles/config/SwaggerConfig.java new file mode 100644 index 0000000..fd233d8 --- /dev/null +++ b/casic_video_283_web/src/main/java/com/casic/missiles/config/SwaggerConfig.java @@ -0,0 +1,40 @@ +package com.casic.missiles.config; + + +import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j; +import io.swagger.annotations.ApiOperation; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import springfox.documentation.builders.ApiInfoBuilder; +import springfox.documentation.builders.PathSelectors; +import springfox.documentation.builders.RequestHandlerSelectors; +import springfox.documentation.service.ApiInfo; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spring.web.plugins.Docket; +import springfox.documentation.swagger2.annotations.EnableSwagger2; + +@Configuration //声明该类为配置类 +@EnableSwagger2 //声明启动Swagger2 +@EnableKnife4j +public class SwaggerConfig{ + private ApiInfo apiInfo() { + return new ApiInfoBuilder() + .title("北燃四分二期接口文档")//文档说明 + .version("1.0.0")//文档版本说明 + .build(); + } + + @Bean + public Docket productApi() { + return new Docket(DocumentationType.SWAGGER_2) + .apiInfo(apiInfo()) + .select() + .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) //添加ApiOperiation注解的被扫描 + .paths(PathSelectors.any()) + .build(); + + } + + +} + diff --git a/casic_video_283_web/src/main/java/com/casic/missiles/controller/MockController.java b/casic_video_283_web/src/main/java/com/casic/missiles/controller/MockController.java new file mode 100644 index 0000000..eae6c54 --- /dev/null +++ b/casic_video_283_web/src/main/java/com/casic/missiles/controller/MockController.java @@ -0,0 +1,82 @@ +package com.casic.missiles.controller; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.application.enums.LoginType; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.model.auth.CasicCustomToken; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.response.SuccessResponseData; +import com.casic.missiles.modular.domain.constants.PermissionConstants; +import com.casic.missiles.modular.interfaces.log.LogManager; +import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; +import com.casic.missiles.modular.system.dto.LoginSuccessDTO; +import lombok.extern.slf4j.Slf4j; +import org.apache.shiro.subject.Subject; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.security.NoSuchAlgorithmException; +import java.util.Map; + +import static com.casic.missiles.core.util.HttpContext.getIp; + + +/** + * 仅为mock登录使用 + * + * @author lenovo + */ +@Controller +@RequestMapping("/route") +@Slf4j +public class MockController extends BaseController { + + /** + * 获取mockToken + */ + @GetMapping("/mockToken") + @ResponseBody + public Object mockToken(String username, String password) { + super.getSession().setAttribute(PermissionConstants.IS_APP, false); + SuccessResponseData resultData = new SuccessResponseData(); + if (StrUtil.hasEmpty(username, password)) { + username = "admin"; + password = "111111"; + } + Subject currentUser = ShiroKit.getSubject(); + + try { + Map key = RSAUtils.genKeyPair(); + ShiroKit.getSession().setAttribute(PermissionConstants.PRIVATE_KEY, key.get(RSAUtils.RSAPrivateKey)); + + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } + + //token自定义 + CasicCustomToken token = new CasicCustomToken(username, password); + token.setType(LoginType.PASSWORD); + token.setRememberMe(false); + + try { + currentUser.login(token); + } catch (Exception e) { + e.printStackTrace(); + } + AuthUser shiroUser = ShiroKit.getUser(); + super.getSession().setAttribute("shiroUser", shiroUser); + super.getSession().setAttribute("username", shiroUser.getAccount()); + super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); + + LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), getIp())); + + ShiroKit.getSession().setAttribute("sessionFlag", true); + resultData.setData(new LoginSuccessDTO(ShiroKit.getSession().getId().toString(), null)); + resultData.setMessage("登录成功"); + return resultData; + } +} diff --git a/casic_video_283_web/src/main/resources/META-INF/spring-devtools.properties b/casic_video_283_web/src/main/resources/META-INF/spring-devtools.properties new file mode 100644 index 0000000..e3b0a7f --- /dev/null +++ b/casic_video_283_web/src/main/resources/META-INF/spring-devtools.properties @@ -0,0 +1 @@ +restart.include.beetl=/beetl-2.7.15.jar \ No newline at end of file diff --git a/casic_video_283_web/src/main/resources/config/application-dev.yml b/casic_video_283_web/src/main/resources/config/application-dev.yml new file mode 100644 index 0000000..fea6255 --- /dev/null +++ b/casic_video_283_web/src/main/resources/config/application-dev.yml @@ -0,0 +1,31 @@ +server: + port: 8083 +################### spring配置 ################### +spring: + datasource: + url: jdbc:mysql://111.198.10.15:11336/casic_283?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=Asia/Shanghai&&allowMultiQueries=true + username: root + password: Casic203 + jms: + pub-sub-domain: true +# session: +# store-type: redis + redis: + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh +# serializer: org.springframework.data.redis.serializer.StringRedisSerializer +# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer +casic: + #kaptcha-open: false #是否开启登录时验证码 (true/false) + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/webjars/**,/swagger-ui.html,/swagger-resources + #flowable数据源和多数据源配置 + db: + init: + enable: false + file: + uploadPath: /casic/casic-gas-operation-file/ +logging: + level.root: info + level.com.casic: debug + level.org.springframework.web: info \ No newline at end of file diff --git a/casic_video_283_web/src/main/resources/config/application-prod.yml b/casic_video_283_web/src/main/resources/config/application-prod.yml new file mode 100644 index 0000000..634fe1a --- /dev/null +++ b/casic_video_283_web/src/main/resources/config/application-prod.yml @@ -0,0 +1,29 @@ +server: + port: 8085 +# context-path: /callcenter/api +################### spring配置 ################### +spring: + datasource: + url: jdbc:mysql://111.198.10.15:11336/casic_283?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + username: root + password: Casic203 + initial-size: 2 + min-idle: 1 + jms: + pub-sub-domain: true + # session: + # store-type: redis + redis: + host: 127.0.0.1 + port: 6379 + password: + +#flowable数据源和多数据源配置 +casic: + kaptcha-open: false #是否开启登录时验证码 (true/false) + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/bracelet/receive/* +logging: + level.root: info + level.com.casic: debug + path: logs/ + file: missiles.log \ No newline at end of file diff --git a/casic_video_283_web/src/main/resources/config/application-test.yml b/casic_video_283_web/src/main/resources/config/application-test.yml new file mode 100644 index 0000000..06ebf54 --- /dev/null +++ b/casic_video_283_web/src/main/resources/config/application-test.yml @@ -0,0 +1,23 @@ +server: + port: 11307 +################### spring配置 ################### +spring: + datasource: + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://localhost:3307/casic_283?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + username: root + password: root + initial-size: 2 + min-idle: 1 + jms: + pub-sub-domain: true +# session: +# store-type: redis +casic: + # kaptcha-open: false #是否开启登录时验证码 (true/false) + nologin-urls: /user/login,/user/appLogin,/kaptcha/base64,/config/baseConfig,/route/mockToken,/workflow/** +logging: + level.root: info + level.com.casic: debug + path: logs/ + file: missiles.log \ No newline at end of file diff --git a/casic_video_283_web/src/main/resources/config/application.yml b/casic_video_283_web/src/main/resources/config/application.yml new file mode 100644 index 0000000..599fcce --- /dev/null +++ b/casic_video_283_web/src/main/resources/config/application.yml @@ -0,0 +1,25 @@ +########################################################## +################## 所有profile共有的配置 ################# +########################################################## +spring: + profiles: + active: @activatedProperties@ + servlet: + multipart: + max-file-size: 50MB + max-request-size: 80MB +#mybatis-plus: +# sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector +################### mybatis-plus配置 ################### +################### guns配置 ################### +casic: + swagger-open: true #是否开启swagger (true/false) + kaptcha-open: false #是否开启登录时验证码 (true/false) + muti-datasource-open: false #是否开启多数据源(true/false) + spring-session-open: false #是否开启spring session,如果是多机环境需要开启(true/false) + session-invalidate-time: 86400 #session失效时间(只在单机环境下生效,,多机环境在SpringSessionConfig类中配置) 单位:秒 + session-validation-interval: 900 #多久检测一次失效的session(只在单机环境下生效) 单位:秒 + no-login-urls: /user/login,/kaptcha,/config/baseConfig + config: + export-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\export\ + config-path: E:\Develop\IdeaProject\smartcity\casic-smartcity-dcms\casic-web\src\main\resources\config\ diff --git a/casic_video_283_web/src/main/resources/logback-spring.xml b/casic_video_283_web/src/main/resources/logback-spring.xml new file mode 100644 index 0000000..c0c7ac9 --- /dev/null +++ b/casic_video_283_web/src/main/resources/logback-spring.xml @@ -0,0 +1,113 @@ + + + + + + + + + + + + + ${CONSOLE_LOG_PATTERN} + utf-8 + + + + + + + + + + + + + + + + + + + + + + ${CONSOLE_LOG_PATTERN} + utf-8 + + + + + + + + ${LOG_PATH}/missiles_error.log + + + + + + ${LOG_PATH}/error/log-error-%d{yyyy-MM-dd}.%i.log + + + + 10MB + + + + + true + + + + ${FILE_LOG_PATTERN} + utf-8 + + + + + error + ACCEPT + DENY + + + + + + + + ${LOG_PATH}/missiles_total.log + + + + + + ${LOG_PATH}/total/log-total-%d{yyyy-MM-dd}.%i.log + + + + 10MB + + + + + true + + + + ${FILE_LOG_PATTERN} + utf-8 + + + + + + + + + + + \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e20bc1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +**/target/** +logs/ +*.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fa98f0 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# casic项目 V2.0.0 + +[^_^]: # (Talk is cheap,Show me the code!) + +## 介绍 +基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot2.4 + shiro + mybatis-plus ! +基于casic项目代码简洁,注释丰富,上手容易,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块) +可以直接作为一个后台管理系统的脚手架! 2021目标 `更简洁`,`更规范`! + + +#### 其他 +>* [git地址](http://192.168.0.203:8080/gitbucket) +>* [本地免登地址](http://localhost:8083/route/mockToken) diff --git a/casic_video_283_server/pom.xml b/casic_video_283_server/pom.xml new file mode 100644 index 0000000..353504b --- /dev/null +++ b/casic_video_283_server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + + casic_video_283_server + 1.0.0 + jar + casic_video_283-server + casic 的spring boot版本 + + + + + com.casic + casic-core + ${core.version} + provided + + + com.casic + casic-admin-support + ${admin.version} + provided + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + provided + + + + + + com.casic + casic-file + ${admin.version} + + + com.casic + casic-file-support + ${admin.version} + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java new file mode 100644 index 0000000..1f82ebb --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusAlarmController.java @@ -0,0 +1,102 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_MANUAL_CANCEL; + +/** + *

+ * 报警记录表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "报警管理接口") +@Controller +@RequestMapping("/alarm") +@RequiredArgsConstructor +public class BusAlarmController extends BaseController { + + private final IBusAlarmService alarmService; + + @ApiOperation("报警上报接口") + @PostMapping("/upload") + @ResponseBody + public Object upload(@RequestBody AlarmUpload alarmUpload){ + alarmService.alarmUpload(alarmUpload); + return ResponseData.success(); + } + + @ApiOperation("报警列表分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle", value = "作业名称",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query",example = "0"), + @ApiImplicitParam(name = "alarmStatus", value = "报警状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState", value = "作业状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmType", value = "报警类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmStartTime", value = "报警开始时间",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "alarmEndTime", value = "报警结束时间",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = BusAlarm.class), + }) + @GetMapping("/listPage") + @ResponseBody + public Object listPage(String workTitle,Long projectId,String alarmStatus,String projectState,String alarmType,String alarmStartTime,String alarmEndTime){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("p.WORK_TITLE",workTitle); + } + if(ObjectUtil.isNotEmpty(projectId)){ + queryWrapper.eq("alarm.PROJECT_ID",projectId); + } + if(StrUtil.isNotEmpty(alarmStatus)){ + queryWrapper.eq("alarm.ALARM_STATUS",alarmStatus); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("p.PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(alarmType)){ + queryWrapper.eq("alarm.ALARM_TYPE",alarmType); + } + if(StrUtil.isNotEmpty(alarmStartTime)){ + queryWrapper.ge("alarm.ALARM_TIME",alarmStartTime); + } + if(StrUtil.isNotEmpty(alarmEndTime)){ + queryWrapper.le("alarm.ALARM_TIME",alarmEndTime); + } + page = alarmService.listPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("消警") + @PostMapping("/cancel") + @ResponseBody + public Object cancel(@RequestParam("alarmId") Long alarmId){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",alarmId); + updateWrapper.set("ALARM_STATUS",ALARM_STATUS_MANUAL_CANCEL); + alarmService.update(updateWrapper); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java new file mode 100644 index 0000000..dde5aad --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/BusEventController.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.service.IBusEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 事件表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/event") +@Api(tags = "事件上报") +@RequiredArgsConstructor +public class BusEventController { + + private final IBusEventService eventService; + + @ApiOperation("事件上报") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody BusEvent busEvent){ + eventService.saveBusEvent(busEvent); + return ResponseData.success(); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java new file mode 100644 index 0000000..03abc5f --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/DeviceController.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Api(tags = "设备管理接口") +@RequiredArgsConstructor +@Controller +@RequestMapping("/device") +public class DeviceController extends BaseController { + private final IDeviceService deviceService; + private final IDeviceExtService deviceExtService; + + @ApiOperation("设备分页列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "deviceType", value = "设备类型",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deviceCode", value = "设备编号",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "status", value = "设备状态",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectId", value = "作业ID(如果传此参数,列表中返回该作业使用的设备)",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceDetailDTO.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String deviceType, String deviceCode, String status,Long projectId){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(deviceType)){ + queryWrapper.eq("DEVICE_TYPE",deviceType); + } + if(StrUtil.isNotEmpty(deviceCode)){ + queryWrapper.like("DEVICE_CODE",deviceCode); + } + page = deviceService.listPage(page,queryWrapper,status,projectId); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增设备") + @PostMapping("add") + @ResponseBody + public Object add(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.saveDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑设备") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody DeviceDetailDTO deviceDetailDTO){ + deviceService.updateDevice(deviceDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("删除设备") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("设备id列表")@RequestBody List deviceIds){ + deviceService.deleteDevices(deviceIds); + return ResponseData.success(); + } + + @ApiOperation("设置甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "threshold", value = "甲烷阈值",dataType = "String", paramType = "query") + }) + @PostMapping("setThreshold") + @ResponseBody + public Object setThreshold(String gasIp,String gasPort,String threshold){ + deviceExtService.setGasThreshold(gasIp, gasPort, threshold); + return ResponseData.success(); + } + + + @ApiOperation("查询甲烷阈值") + @ApiImplicitParams({ + @ApiImplicitParam(name = "gasIp", value = "安全树甲烷设备IP",dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "gasPort", value = "安全树甲烷端口",dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = "{\"code\": 200,\"data\": \"100\",\"message\": \"请求成功\",\"success\": true}",response = String.class), + }) + @GetMapping("getThreshold") + @ResponseBody + public Object getThreshold(String gasIp,String gasPort){ + String data = deviceExtService.getGasThreshold(gasIp, gasPort); + return ResponseData.success(data); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java new file mode 100644 index 0000000..7570504 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/OverviewController.java @@ -0,0 +1,70 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.service.IBusAlarmService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +@Api(tags = "首页看板接口") +@Controller +@RequestMapping("overview") +@RequiredArgsConstructor +public class OverviewController { + + private final IBusAlarmService alarmService; + private final IProjectDeviceService projectDeviceService; + + private final IProjectWorkerService projectWorkerService; + + + @ApiOperation("报警统计接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = AlarmTypeCountDTO.class), + }) + @GetMapping("/alarmCount") + @ResponseBody + public Object alarmCount(Long projectId){ + return ResponseData.success(alarmService.alarmCount(projectId,ALARM_STATUS_ON)); + } + + @ApiOperation("设备列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = DeviceLocationDTO.class), + }) + @GetMapping("/deviceList") + @ResponseBody + public Object deviceList(Long projectId){ + return ResponseData.success(projectDeviceService.selectDeviceLocationList(projectId)); + } + + @ApiOperation("人员列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "作业ID",dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkerLocationDTO.class), + }) + @GetMapping("/workerList") + @ResponseBody + public Object workerList(Long projectId){ + return ResponseData.success(projectWorkerService.selectWorkerLocationDTO(projectId)); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java new file mode 100644 index 0000000..af36d69 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkSiteInfoController.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.service.IWorkSiteInfoService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 作业现场表 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/site") +@Api(tags = "作业现场管理") +@RequiredArgsConstructor +public class WorkSiteInfoController extends BaseController { + + + private final IWorkSiteInfoService workSiteInfoService; + + @ApiOperation("新增作业现场") + @PostMapping("add") + @ResponseBody + public Object addWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.addWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + @ApiOperation("编辑作业现场") + @PostMapping("update") + @ResponseBody + public Object updateWorkSite(@RequestBody WorkSiteDetailDTO workSiteDetailDTO){ + workSiteInfoService.updateWorkSiteInfo(workSiteDetailDTO); + return ResponseData.success(); + } + + + @ApiOperation("删除作业现场") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("作业现场id列表")@RequestBody List projectIds){ + workSiteInfoService.deleteProjects(projectIds); + return ResponseData.success(); + } + + @ApiOperation("查询作业现场详情") + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteDetailDTO.class), + }) + @GetMapping("detail") + @ResponseBody + public Object delete(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + WorkSiteDetailDTO detailDTO = workSiteInfoService.getWorkSiteDetail(projectId); + return ResponseData.success(detailDTO); + } + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "workTitle",value = "作业名称", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workRoad",value = "所属道路", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workPersonName",value = "责任人姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "projectState",value = "当前状态(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = WorkSiteInfo.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String workTitle,String workRoad,String workPersonName,String projectState,String startDate,String endDate){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(workTitle)){ + queryWrapper.like("WORK_TITLE",workTitle); + } + if(StrUtil.isNotEmpty(workRoad)){ + queryWrapper.like("WORK_ROAD",workRoad); + } + if(StrUtil.isNotEmpty(workPersonName)){ + queryWrapper.like("WORKER_NAME",workPersonName); + } + if(StrUtil.isNotEmpty(projectState)){ + queryWrapper.eq("PROJECT_STATE",projectState); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("br_work_site_info.CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("br_work_site_info.CREATE_TIME",endDate + " 23:59:59"); + } + page = workSiteInfoService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("开始作业") + @PostMapping("start") + @ResponseBody + public Object start(@ApiParam(value = "作业现场id",example = "0")@RequestParam Long projectId){ + workSiteInfoService.start(projectId); + return ResponseData.success(); + } + + @ApiOperation("完成作业") + @PostMapping("finish") + @ResponseBody + public Object finish(@ApiParam(value = "作业现场id", example = "0")@RequestParam Long projectId){ + workSiteInfoService.finish(projectId); + return ResponseData.success(); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java new file mode 100644 index 0000000..796f94c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/controller/WorkerController.java @@ -0,0 +1,136 @@ +package com.casic.missiles.modular.system.controller; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.service.IWorkerService; +import io.swagger.annotations.*; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.model.response.ResponseData.DEFAULT_SUCCESS_MESSAGE; + +/** + *

+ * 前端控制器 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Controller +@RequestMapping("/worker") +@RequiredArgsConstructor +@Api(tags = "人员管理接口") +public class WorkerController extends BaseController { + + private final IWorkerService workerService; + + @ApiOperation("分页列表查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "name",value = "姓名", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "deptId",value = "所属部门", dataType = "Long", paramType = "query", example = "0"), + @ApiImplicitParam(name = "status",value = "当前状态(字典值)", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "startDate",value = "注册开始日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "endDate",value = "注册结束日期", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "workerType",value = "人员类型(字典值)", dataType = "String", paramType = "query") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("listPage") + @ResponseBody + public Object listPage(String name,Long deptId, String status,String startDate,String endDate,String workerType){ + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(name)){ + queryWrapper.like("WORKER_NAME",name); + } + if(ObjectUtil.isNotEmpty(deptId)){ + queryWrapper.eq("DEPT_ID",deptId); + } + if(StrUtil.isNotEmpty(workerType)){ + queryWrapper.eq("WORKER_TYPE",workerType); + } + if(StrUtil.isNotEmpty(startDate)){ + queryWrapper.ge("CREATE_TIME",startDate + " 00:00:00"); + } + if(StrUtil.isNotEmpty(endDate)){ + queryWrapper.le("CREATE_TIME",endDate + " 23:59:59"); + } + if(StrUtil.isNotEmpty(status)){ + queryWrapper.eq("`STATUS`",status); + } + page = workerService.selectListPage(page,queryWrapper); + return ResponseData.success(super.packForBT(page)); + } + + @ApiOperation("新增人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "worker", value = "人员信息", dataType = "Worker", paramType = "body", required = true), + @ApiImplicitParam(name = "projectId", value = "项目ID(入场申请需要)", dataType = "Long", paramType = "query", example = "0") + }) + @PostMapping("add") + @ResponseBody + public Object add(@ApiParam("worker")@RequestBody Worker worker, + @RequestParam(required = false) Long projectId){ + workerService.addWorker(worker,projectId); + return ResponseData.success(); + } + + @ApiOperation("编辑人员") + @PostMapping("update") + @ResponseBody + public Object update(@RequestBody Worker worker){ + workerService.updateById(worker); + return ResponseData.success(); + } + + @ApiOperation("删除人员") + @PostMapping("delete") + @ResponseBody + public Object delete(@ApiParam("人员id列表")@RequestBody List workIds){ + workerService.removeByIds(workIds); + return ResponseData.success(); + } + + + @ApiOperation(value = "获取人脸图片",notes = "返回人脸图片url") + @ApiImplicitParams({ + @ApiImplicitParam(name = "cameraIp",value = "摄像头IP", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "cameraPort",value = "摄像头端口号", dataType = "String", paramType = "query"), + }) + @GetMapping("/face/register") + @ResponseBody + public Object faceRegister(String cameraIp,String cameraPort){ + return ResponseData.success(workerService.faceRegister(cameraIp, cameraPort)); + } + + + @ApiOperation(value = "查询临时入场人员列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目ID",required = true,dataType = "Long", paramType = "query", example = "0") + }) + @ApiResponses({ + @ApiResponse(code = 200,message = DEFAULT_SUCCESS_MESSAGE,response = Worker.class), + }) + @GetMapping("/projectTempWorker") + @ResponseBody + public Object projectTempWorker(Long projectId){ + return ResponseData.success(workerService.projectTempWorker(projectId)); + } + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java new file mode 100644 index 0000000..1a165a1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeCountDTO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "AlarmTypeCountDTO",description = "报警类型统计(首页)") +@Data +public class AlarmTypeCountDTO { + + private String alarmType; + private String alarmTypeName; + private Integer alarmCount; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java new file mode 100644 index 0000000..73d7799 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/AlarmUpload.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.dto; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "AlarmUpload",description = "报警上传") +@Data +public class AlarmUpload { + + @ApiModelProperty(value = "摄像头ip") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + @ApiModelProperty(value = "安全树甲烷设备ip") + private String gasIp; + @ApiModelProperty(value = "安全树甲烷设备端口") + private String gasPort; + @ApiModelProperty(value = "报警值") + private String alarmValue; + @ApiModelProperty(value = "报警时间") + private String alarmTime; + @ApiModelProperty(value = "报警类型") + private String alarmType; + @ApiModelProperty(value = "报警图片") + private String alarmImage; + @ApiModelProperty(value = "报警内容") + private String alarmContent; + + @Override + public String toString() { + return "AlarmUpload{" + + "cameraIp='" + cameraIp + '\'' + + ", cameraPort='" + cameraPort + '\'' + + ", gasIp='" + gasIp + '\'' + + ", gasPort='" + gasPort + '\'' + + ", alarmValue='" + alarmValue + '\'' + + ", alarmTime='" + alarmTime + '\'' + + ", alarmType='" + alarmType + '\'' + + ", alarmImage='" + (StrUtil.isNotEmpty(alarmImage) ? alarmImage.substring(0,50) : "null") + '\'' + + ", alarmContent='" + alarmContent + '\'' + + '}'; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java new file mode 100644 index 0000000..ea518d9 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/DeviceDetailDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.casic.missiles.modular.system.entity.Device; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("DeviceDetailDTO") +@Data +public class DeviceDetailDTO extends Device { + + @ApiModelProperty(value = "摄像头编号") + private String cameraCode; + + @ApiModelProperty(value = "摄像头IP") + private String cameraIp; + + @ApiModelProperty(value = "摄像头端口") + private String cameraPort; + + @ApiModelProperty(value = "激甲编号") + private String gasCode; + + @ApiModelProperty(value = "激甲IP") + private String gasIp; + + @ApiModelProperty(value = "激甲端口") + private String gasPort; + + @ApiModelProperty(value = "智能帽衬编号") + private String hatLiningCode; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java new file mode 100644 index 0000000..29378ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkSiteDetailDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("WorkSiteDetailDTO") +public class WorkSiteDetailDTO extends WorkSiteInfo { + + @ApiModelProperty(value = "安全树列表",dataType = "ProjectDevice") + private List deviceList; + + @ApiModelProperty(value = "人员列表",dataType = "ProjectWorker") + private List workerList; + + + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java new file mode 100644 index 0000000..6fd7b24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/dto/WorkerLocationDTO.java @@ -0,0 +1,68 @@ +package com.casic.missiles.modular.system.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "WorkerLocationDTO",description = "人员位置列表(首页)") +@Data +public class WorkerLocationDTO { + + @ApiModelProperty("人员ID") + private Long workerId; + + @ApiModelProperty("人员姓名") + private String workerName; + + @ApiModelProperty("安全帽编号") + private String hatCode; + + @ApiModelProperty("安全帽ID") + private Long hatId; + + @ApiModelProperty("背心编号") + private String vastCode; + + @ApiModelProperty("手环编号") + private String braceletCode; + + @ApiModelProperty("位置") + private String location; + + @ApiModelProperty("时间") + private String time; + + @ApiModelProperty("经度") + private String lng; + + @ApiModelProperty("纬度") + private String lat; + + @ApiModelProperty("心率") + private String heartRate; + + @ApiModelProperty("血氧") + private String bloodOxygen; + + @ApiModelProperty("一氧化碳") + private String co; + + @ApiModelProperty("甲烷") + private String gas; + + @ApiModelProperty("硫化氢") + private String h2s; + + @ApiModelProperty("氧气") + private String o2; + + @ApiModelProperty("信号") + private String signal; + + @ApiModelProperty("电量") + private String cell; + + @ApiModelProperty("是否报警") + private boolean alarmFlag; +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java new file mode 100644 index 0000000..efb4a23 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusAlarm.java @@ -0,0 +1,159 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 报警记录表 + *

+ * + * @author zyj + * @since 2023-05-16 + */ +@Data +@ApiModel("Alarm") +@TableName("br_bus_alarm") +public class BusAlarm implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @ApiModelProperty(value = "设备ID") + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 报警类型 + */ + @ApiModelProperty(value = "报警类型") + @TableField("ALARM_TYPE") + private String alarmType; + + /** + * 报警状态 + */ + @ApiModelProperty(value = "报警状态") + @TableField("ALARM_STATUS") + private String alarmStatus; + + /** + * 报警值 + */ + @ApiModelProperty(value = "报警值") + @TableField("ALARM_VALUE") + private String alarmValue; + + /** + * 报警图片 + */ + @ApiModelProperty(value = "报警图片") + @TableField("ALARM_IMAGE") + private String alarmImage; + + /** + * 报警内容 + */ + @ApiModelProperty(value = "报警内容") + @TableField("ALARM_CONTENT") + private String alarmContent; + + /** + * 报警时间 + */ + @ApiModelProperty(value = "报警时间") + @TableField("ALARM_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date alarmTime; + + /** + * 消警时间 + */ + @ApiModelProperty(value = "消警时间") + @TableField("CANCEL_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + /** + * 报警位置经度 + */ + @ApiModelProperty(value = "报警位置经度") + @TableField("ALARM_LNG") + private String alarmLng; + + /** + * 报警位置纬度 + */ + @ApiModelProperty(value = "报警位置纬度") + @TableField("ALARM_LAT") + private String alarmLat; + + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmStatusName; + @ApiModelProperty("报警类型名称") + @TableField(exist = false) + private String alarmTypeName; + @ApiModelProperty("作业名称") + @TableField(exist = false) + private String workTitle; + @ApiModelProperty("所属道路") + @TableField(exist = false) + private String workRoad; + @ApiModelProperty("作业状态") + @TableField(exist = false) + private String projectState; + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + @ApiModelProperty("负责人姓名") + @TableField(exist = false) + private String workPersonName; + @ApiModelProperty("负责人联系方式") + @TableField(exist = false) + private String workPersonPhoneNumber; + + + @Override + public String toString() { + return "BusAlarm{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + ", alarmType=" + alarmType + + ", alarmValue=" + alarmValue + + ", alarmStatus=" + alarmStatus + + ", alarmImage=" + alarmImage + + ", alarmContent=" + alarmContent + + ", alarmTime=" + alarmTime + + ", cancelTime=" + cancelTime + + ", alarmLng=" + alarmLng + + ", alarmLat=" + alarmLat + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java new file mode 100644 index 0000000..a0b7543 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEvent.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + *

+ * 事件表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event") +@Data +@ApiModel("BusEvent") +public class BusEvent implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("事件ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件标题 + */ + @ApiModelProperty("事件名称") + @TableField("EVENT_TITLE") + private String eventTitle; + + /** + * 上报人员 + */ + @ApiModelProperty("上报人员") + @TableField("UPLOAD_NAME") + private String uploadName; + + /** + * 联系方式 + */ + @ApiModelProperty("联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 事件描述 + */ + @ApiModelProperty("事件描述") + @TableField("EVENT_DESCRIPTION") + private String eventDescription; + + @ApiModelProperty("经度") + @TableField("LNG") + private String lng; + + @ApiModelProperty("纬度") + @TableField("LAT") + private String lat; + + /** + * 事件上传时间 + */ + @ApiModelProperty("事件上传时间") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty("事件照片") + @TableField(exist = false) + private List imageList; + + + + @Override + public String toString() { + return "BusEvent{" + + "id=" + id + + ", eventTitle=" + eventTitle + + ", uploadName=" + uploadName + + ", phoneNumber=" + phoneNumber + + ", eventDescription=" + eventDescription + + ", lng=" + lng + + ", lat=" + lat + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java new file mode 100644 index 0000000..1e75245 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/BusEventImage.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 事件图片表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@TableName("br_bus_event_image") +@Data +@ApiModel("BusEventImage") +public class BusEventImage implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 事件ID + */ + @TableField("EVENT_ID") + private Long eventId; + + /** + * 报警图片 + */ + @TableField("IMAGE") + @ApiModelProperty("图片url") + private String image; + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java new file mode 100644 index 0000000..df89c70 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Device.java @@ -0,0 +1,113 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.core.base.json.DateDeserializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Device") +@TableName("br_device") +@Data +public class Device implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "设备ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备编号 + */ + @ApiModelProperty(value = "设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + /** + * 设备类型 + */ + @ApiModelProperty(value = "设备类型") + @TableField("DEVICE_TYPE") + private String deviceType; + + /** + * 设备批次 + */ + @ApiModelProperty(value = "设备批次") + @TableField("DEVICE_BATCH") + private String deviceBatch; + + /** + * 厂家 + */ + @ApiModelProperty(value = "厂家") + @TableField("MANUFACTURER") + private String manufacturer; + + /** + * 是否供电 + */ + @ApiModelProperty(value = "是否供电") + @TableField("IS_POWER_SUPPLY") + private String isPowerSupply; + + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间",dataType = "Date") + @TableField("CREATE_TIME") + private Date createTime; + + @ApiModelProperty(value = "设备类型名称") + @TableField(exist = false) + private String deviceTypeName; + + @ApiModelProperty(value = "是否供电名称") + @TableField(exist = false) + private String isPowerSupplyName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @Override + public String toString() { + return "Device{" + + "id=" + id + + ", deviceCode=" + deviceCode + + ", deviceType=" + deviceType + + ", deviceBatch=" + deviceBatch + + ", manufacturer=" + manufacturer + + ", isPowerSupply=" + isPowerSupply + + ", createTime=" + createTime + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java new file mode 100644 index 0000000..5ee7015 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/DeviceExt.java @@ -0,0 +1,99 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 设备扩展信息表(安全树) + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Data +@TableName("br_device_ext") +public class DeviceExt implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 摄像头编号 + */ + @TableField("CAMERA_CODE") + private String cameraCode; + + /** + * 摄像头IP + */ + @TableField("CAMERA_IP") + private String cameraIp; + + /** + * 摄像头端口 + */ + @TableField("CAMERA_PORT") + private String cameraPort; + + /** + * 激甲编号 + */ + @TableField("GAS_CODE") + private String gasCode; + + /** + * 激甲IP + */ + @TableField("GAS_IP") + private String gasIp; + + /** + * 激甲端口 + */ + @TableField("GAS_PORT") + private String gasPort; + + /** + * 甲烷报警阈值 + */ + @TableField("GAS_THRESHOLD") + private String gasThreshold; + + @TableField(value = "HAT_LINING_CODE") + private String hatLiningCode; + + + @Override + public String toString() { + return "DeviceExt{" + + "id=" + id + + ", deviceId=" + deviceId + + ", cameraCode=" + cameraCode + + ", cameraIp=" + cameraIp + + ", cameraPort=" + cameraPort + + ", gasCode=" + gasCode + + ", gasIp=" + gasIp + + ", gasPort=" + gasPort + + ", gasThreshold=" + gasThreshold + + ", hatLiningCode=" + hatLiningCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java new file mode 100644 index 0000000..c4f3472 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectDevice.java @@ -0,0 +1,62 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Data +@ApiModel("ProjectDevice") +@TableName("br_project_device") +public class ProjectDevice implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 设备ID + */ + @TableField("DEVICE_ID") + @ApiModelProperty("设备ID(新增编辑时传)") + private Long deviceId; + + /** + * 设备编号 + */ + @TableField(exist = false) + @ApiModelProperty("设备编号(详情中展示,新增编辑不用传)") + private String deviceCode; + + @Override + public String toString() { + return "ProjectDevice{" + + "id=" + id + + ", projectId=" + projectId + + ", deviceId=" + deviceId + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java new file mode 100644 index 0000000..10b23c4 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/ProjectWorker.java @@ -0,0 +1,104 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("ProjectWorker") +@TableName("br_project_worker") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ProjectWorker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业现场ID + */ + @TableField("PROJECT_ID") + private Long projectId; + + /** + * 人员ID + */ + @ApiModelProperty("人员ID") + @TableField("WORKER_ID") + private Long workerId; + + /** + * 安全帽编号 + */ + @ApiModelProperty("安全帽编号") + @TableField("HAT_CODE") + private String hatCode; + + /** + * 背心编号 + */ + @ApiModelProperty("背心编号") + @TableField("VAST_CODE") + private String vastCode; + + /** + * 手环编号 + */ + @ApiModelProperty("手环编号") + @TableField("BRACELET_CODE") + private String braceletCode; + + @ApiModelProperty("人员姓名(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerName; + + @ApiModelProperty("人员部门ID(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptId; + + @ApiModelProperty("人员部门名称(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerDeptName; + + @ApiModelProperty("人员联系方式(详情中展示,新增编辑不用传)") + @TableField(exist = false) + private String workerPhoneNumber; + + public ProjectWorker(Long projectId, Long workerId) { + this.projectId = projectId; + this.workerId = workerId; + } + + @Override + public String toString() { + return "ProjectWorker{" + + "id=" + id + + ", projectId=" + projectId + + ", workerId=" + workerId + + ", hatCode=" + hatCode + + ", vastCode=" + vastCode + + ", braceletCode=" + braceletCode + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java new file mode 100644 index 0000000..fa6f41d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/WorkSiteInfo.java @@ -0,0 +1,130 @@ +package com.casic.missiles.modular.system.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * 作业现场表 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("WorkSiteInfo") +@TableName("br_work_site_info") +@Data +public class WorkSiteInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty("作业现场ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 作业名称 + */ + @ApiModelProperty("作业名称") + @TableField("WORK_TITLE") + private String workTitle; + + /** + * 责任人 + */ + @ApiModelProperty("责任人(人员ID)") + @TableField("WORK_PERSON") + private Long workPerson; + + /** + * 作业描述 + */ + @ApiModelProperty("作业描述") + @TableField("WORK_SITE_DESC") + private String workSiteDesc; + + /** + * 作业状态 + */ + @ApiModelProperty("作业状态") + @TableField("PROJECT_STATE") + private String projectState; + + /** + * 所属道路 + */ + @ApiModelProperty("所属道路") + @TableField("WORK_ROAD") + private String workRoad; + + @TableField("IMAGE_URL") + private String imageUrl; + + @TableField("CREATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + @TableField("UPDATE_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("FINISH_TIME") + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + @ApiModelProperty("负责人姓名(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonName; + + @ApiModelProperty("负责人联系方式(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonPhoneNumber; + + @ApiModelProperty("负责人所属部门ID(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private Long workPersonDeptId; + + @ApiModelProperty("负责人所属部门名称(详情中使用,新增编辑不用传)") + @TableField(exist = false) + private String workPersonDeptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty("作业状态名称") + @TableField(exist = false) + private String projectStateName; + + @Override + public String toString() { + return "WorkSiteInfo{" + + "id=" + id + + ", workTitle=" + workTitle + + ", workPerson=" + workPerson + + ", workSiteDesc=" + workSiteDesc + + ", projectState=" + projectState + + ", imageUrl=" + imageUrl + + ", updateTime=" + updateTime + + ", workRoad=" + workRoad + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java new file mode 100644 index 0000000..28a4daa --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/entity/Worker.java @@ -0,0 +1,147 @@ +package com.casic.missiles.modular.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@ApiModel("Worker") +@TableName("br_worker") +@Data +public class Worker implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "人员ID") + @TableId(value = "ID",type = IdType.ASSIGN_ID) + private Long id; + + /** + * 姓名 + */ + @ApiModelProperty(value = "姓名") + @TableField("WORKER_NAME") + private String workerName; + + /** + * 性别 + */ + @ApiModelProperty(value = "性别") + @TableField("GENDER") + private String gender; + + /** + * 所属部门 + */ + @ApiModelProperty(value = "所属部门(人员管理)") + @TableField("DEPT_ID") + private Long deptId; + + /** + * 所属单位 + */ + @ApiModelProperty(value = "所属单位(入场申请中使用)") + @TableField("OWNER_SHIP") + private String ownerShip; + + /** + * 联系方式 + */ + @ApiModelProperty(value = "联系方式") + @TableField("PHONE_NUMBER") + private String phoneNumber; + + /** + * 证件号 + */ + @ApiModelProperty(value = "证件号") + @TableField("ID_CARD_NUMBER") + private String idCardNumber; + + /** + * 入场原因 + */ + @ApiModelProperty(value = "入场原因(入场申请中使用)") + @TableField("ENTER_REASON") + private String enterReason; + + /** + * 入场人脸照片 + */ + @ApiModelProperty(value = "人脸照片(照片路径)") + @TableField("WORKER_AVATAR") + private String workerAvatar; + + /** + * 申请入场时间 + */ + @ApiModelProperty(value = "注册时间/申请入场时间") + @TableField("CREATE_TIME") + private Date createTime; + + /** + * 人员类型 + */ + @ApiModelProperty(value = "人员类型(区分人员管理和入场申请)") + @TableField("WORKER_TYPE") + private String workerType; + + @ApiModelProperty(value = "性别名称") + @TableField(exist = false) + private String genderName; + + @ApiModelProperty(value = "部门名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty(value = "注册时间",dataType = "String") + @TableField(exist = false) + private String registerTime; + + @ApiModelProperty(value = "当前状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "当前状态名称") + @TableField(exist = false) + private String statusName; + + @ApiModelProperty(value = "是否注册(0未注册;1已注册)",allowableValues = "0,1") + @TableField(exist = false) + private String isRegister; + + @Override + public String toString() { + return "Worker{" + + "id=" + id + + ", workerName=" + workerName + + ", gender=" + gender + + ", deptId=" + deptId + + ", ownerShip=" + ownerShip + + ", phoneNumber=" + phoneNumber + + ", idCardNumber=" + idCardNumber + + ", enterReason=" + enterReason + + ", workerAvatar=" + workerAvatar + + ", createTime=" + createTime + + ", workerType=" + workerType + + "}"; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java new file mode 100644 index 0000000..9801742 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusAlarmMapper.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警记录表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusAlarmMapper extends BaseMapper { + + Page listPage(Page page,@Param("ew") QueryWrapper queryWrapper); + + void cancelAlarm(@Param("deviceId")Long deviceId,@Param("alarmType") String alarmType); + + List alarmCount(@Param("projectId")Long projectId, @Param("alarmStatus")String alarmStatus); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java new file mode 100644 index 0000000..9590b7d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventImageMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件图片表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventImageMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java new file mode 100644 index 0000000..3c85edf --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/BusEventMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 事件表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface BusEventMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java new file mode 100644 index 0000000..4ca9212 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceExtMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 设备扩展信息表(安全树) Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface DeviceExtMapper extends BaseMapper { + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java new file mode 100644 index 0000000..444c0c5 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/DeviceMapper.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Mapper +public interface DeviceMapper extends BaseMapper { + + Page listDetailPage(Page page,@Param("ew") QueryWrapper ew); + + List selectProjectDevice(@Param("projectId") Long projectId); + + List selectHelmetList(@Param("deviceType")String deviceType); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java new file mode 100644 index 0000000..1d0c14e --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectDeviceMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectDeviceMapper extends BaseMapper { + List selectDetailByProjectId(@Param("projectId") Long projectId); + + List selectDeviceLocationList(@Param("projectId") Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java new file mode 100644 index 0000000..58583d1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/ProjectWorkerMapper.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.system.mapper; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface ProjectWorkerMapper extends BaseMapper { + + List selectDetailByProjectId(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + + List selectWorkerLocationList(@Param("projectId") Long projectId, + @Param("workerType")String workerType); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java new file mode 100644 index 0000000..a4934d2 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkSiteInfoMapper.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +/** + *

+ * 作业现场表 Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkSiteInfoMapper extends BaseMapper { + + Page selectListPage(Page page,@Param("ew") QueryWrapper ew); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java new file mode 100644 index 0000000..258fb12 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/WorkerMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface WorkerMapper extends BaseMapper { + + + Page selectListPage(Page page, @Param("ew") QueryWrapper ew); + + List selectWorkerAvatars(@Param("projectId")Long projectId); + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml new file mode 100644 index 0000000..595088a --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusAlarmMapper.xml @@ -0,0 +1,58 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml new file mode 100644 index 0000000..fbc3db3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventImageMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml new file mode 100644 index 0000000..627d573 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/BusEventMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml new file mode 100644 index 0000000..5321d1c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceExtMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml new file mode 100644 index 0000000..94262e1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/DeviceMapper.xml @@ -0,0 +1,97 @@ + + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml new file mode 100644 index 0000000..c6d1c24 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectDeviceMapper.xml @@ -0,0 +1,29 @@ + + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml new file mode 100644 index 0000000..8d2de10 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/ProjectWorkerMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml new file mode 100644 index 0000000..8f01326 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkSiteInfoMapper.xml @@ -0,0 +1,26 @@ + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml new file mode 100644 index 0000000..3e28b39 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/mapper/mapping/WorkerMapper.xml @@ -0,0 +1,56 @@ + + + + + + + + diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java new file mode 100644 index 0000000..f63c19c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusAlarmService.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 报警记录表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusAlarmService extends IService { + + boolean alarmUpload(AlarmUpload alarmUpload); + + Page listPage(Page page,QueryWrapper queryWrapper); + + List alarmCount(Long projectId,String alarmStatus); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java new file mode 100644 index 0000000..b1187ed --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventImageService.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 事件图片表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusEventImageService extends IService { + + boolean saveBusEventImages(Long eventId, List imageList); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java new file mode 100644 index 0000000..85c48d0 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IBusEventService.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 事件表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IBusEventService extends IService { + + boolean saveBusEvent(BusEvent busEvent); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java new file mode 100644 index 0000000..6fc5361 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceExtService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 设备扩展信息表(安全树) 服务类 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +public interface IDeviceExtService extends IService { + + boolean saveDeviceExt(DeviceDetailDTO deviceDetailDTO); + + boolean updateDeviceExt(DeviceDetailDTO deviceDetailDTO); + + boolean removeByDeviceIds(List deviceIds); + + boolean setGasThreshold(String gasIp,String gasPort,String threshold); + + String getGasThreshold(String gasIp,String gasPort); + + Long selectByGasIpPort(String gasIp,String gasPort); + + Long selectByCameraIpPort(String cameraIp,String cameraPort); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java new file mode 100644 index 0000000..9e62756 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java @@ -0,0 +1,32 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IDeviceService extends IService { + + boolean saveDevice(DeviceDetailDTO deviceDetailDTO); + + boolean updateDevice(DeviceDetailDTO deviceDetailDTO); + + boolean deleteDevices(List deviceIds); + + Page listPage(Page page, QueryWrapper queryWrapper, String status,Long projectId); + + List selectProjectDevice(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java new file mode 100644 index 0000000..8599411 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectDeviceService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IProjectDeviceService extends IService { + + boolean saveProjectDeviceList(Long projectId, List projectDeviceList); + + boolean updateProjectDeviceList(Long projectId, List projectDeviceList); + + boolean deleteByProjectId(Long projectId); + + boolean deleteByProjectIds(List projectIds); + + List selectDetailByProjectId(Long projectId); + + Long selectProjectIdByDevice(Long deviceId); + + List selectDeviceLocationList(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java new file mode 100644 index 0000000..e921bc3 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IProjectWorkerService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IProjectWorkerService extends IService { + + boolean saveProjectWorkerList(Long projectId, List projectWorkerList); + + boolean updateProjectWorkerList(Long projectId, List projectWorkerList); + + boolean deleteByProjectId(Long projectId); + + boolean deleteByProjectIds(List projectIds); + + List selectDetailByProjectId(Long projectId,String workerType); + + List selectWorkerLocationDTO(Long projectId); +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java new file mode 100644 index 0000000..58a8590 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkSiteInfoService.java @@ -0,0 +1,33 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; +/** + *

+ * 作业现场表 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IWorkSiteInfoService extends IService { + + boolean addWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO); + + boolean updateWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO); + + boolean deleteProjects(List projectIds); + + WorkSiteDetailDTO getWorkSiteDetail(Long projectId); + + Page selectListPage(Page page, QueryWrapper queryWrapper); + + boolean start(Long projectId); + + boolean finish(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java new file mode 100644 index 0000000..6c6ee98 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/IWorkerService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.entity.Worker; +import com.baomidou.mybatisplus.extension.service.IService; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +public interface IWorkerService extends IService { + + boolean addWorker(Worker worker,Long projectId); + + Page selectListPage(Page page,QueryWrapper ew); + + Worker selectWorkerDetail(Long workerId); + + List faceRegister(String cameraIp,String cameraPort); + + List projectTempWorker(Long projectId); + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java new file mode 100644 index 0000000..b44de1d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmServiceImpl.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.consts.AlarmTypeEnum; +import com.casic.missiles.modular.system.dto.AlarmTypeCountDTO; +import com.casic.missiles.modular.system.dto.AlarmUpload; +import com.casic.missiles.modular.system.entity.BusAlarm; +import com.casic.missiles.modular.system.entity.DataTreeLocation; +import com.casic.missiles.modular.system.mapper.BusAlarmMapper; +import com.casic.missiles.modular.system.service.*; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.system.consts.AlarmConst.ALARM_STATUS_ON; + +/** + *

+ * 报警记录表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +@Slf4j +public class BusAlarmServiceImpl extends ServiceImpl implements IBusAlarmService { + + private final IDeviceExtService deviceExtService; + private final IDeviceService deviceService; + private final IProjectDeviceService projectDeviceService; + + private final ICasicFileService fileService; + + private final AbstractDictService dictService; + private final IDataSupportService dataSupportService; + + @Override + @Transactional + public boolean alarmUpload(AlarmUpload alarmUpload) { + log.info("alarm upload ==> {}",alarmUpload.toString()); + Long deviceId = null; + if(StrUtil.isAllNotBlank(alarmUpload.getGasIp(),alarmUpload.getGasPort())){ + deviceId = deviceExtService.selectByGasIpPort(alarmUpload.getGasIp(),alarmUpload.getGasPort()); + } + if(ObjectUtil.isEmpty(deviceId) && StrUtil.isAllNotBlank(alarmUpload.getCameraIp(),alarmUpload.getCameraPort())){ + deviceId = deviceExtService.selectByCameraIpPort(alarmUpload.getCameraIp(),alarmUpload.getCameraPort()); + } + + if(ObjectUtil.isEmpty(deviceId)){ + return false; + } + + BusAlarm alarm = new BusAlarm(); + alarm.setDeviceId(deviceId); + alarm.setProjectId(projectDeviceService.selectProjectIdByDevice(deviceId)); + alarm.setAlarmValue(alarmUpload.getAlarmValue()); + if(StrUtil.isNotEmpty(alarmUpload.getAlarmTime())){ + alarm.setAlarmTime(DateUtil.parseDateTime(alarmUpload.getAlarmTime())); + }else { + alarm.setAlarmTime(new Date()); + } + + alarm.setAlarmType(alarmUpload.getAlarmType()); + alarm.setAlarmContent(alarmUpload.getAlarmContent()); + if(StrUtil.isNotEmpty(alarmUpload.getAlarmImage())){ + String imgBase64 = "data:image/jpeg;base64," + alarmUpload.getAlarmImage(); + String imageUrl = fileService.saveFile(imgBase64); + alarm.setAlarmImage(imageUrl); + } + alarm.setAlarmStatus(ALARM_STATUS_ON); + + DataTreeLocation treeLocation = dataSupportService.getTreeLocation(deviceId); + if(ObjectUtil.isNotEmpty(treeLocation)){ + alarm.setAlarmLng(treeLocation.getGdLng()); + alarm.setAlarmLat(treeLocation.getGdLat()); + } + + //自动消警 + AlarmTypeEnum alarmTypeEnum = AlarmTypeEnum.getByAlarmType(alarm.getAlarmType()); + if(ObjectUtil.isNotEmpty(alarmTypeEnum) && alarmTypeEnum.isAutoCancel()){ + this.baseMapper.cancelAlarm(deviceId,alarm.getAlarmType()); + } + return this.save(alarm); + } + + @Override + public Page listPage(Page page, QueryWrapper queryWrapper) { + page = this.baseMapper.listPage(page, queryWrapper); + for (BusAlarm alarm : page.getRecords()) { + alarm.setAlarmTypeName(dictService.getDictNameByCode("alarmType",alarm.getAlarmType())); + alarm.setAlarmStatusName(dictService.getDictNameByCode("alarmStatus",alarm.getAlarmStatus())); + if(StrUtil.isNotEmpty(alarm.getProjectState())){ + alarm.setProjectStateName(dictService.getDictNameByCode("projectStatus",alarm.getProjectState())); + } + } + return page; + } + + @Override + public List alarmCount(Long projectId, String alarmStatus) { + List list = this.baseMapper.alarmCount(projectId, alarmStatus); + list = list.stream().filter(i->StrUtil.isNotEmpty(i.getAlarmType())).collect(Collectors.toList()); + for (AlarmTypeCountDTO countDTO : list) { + countDTO.setAlarmTypeName(dictService.getDictNameByCode("alarmType",countDTO.getAlarmType())); + } + return list; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java new file mode 100644 index 0000000..a43f7c1 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventImageServiceImpl.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.entity.BusEventImage; +import com.casic.missiles.modular.system.mapper.BusEventImageMapper; +import com.casic.missiles.modular.system.service.IBusEventImageService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 事件图片表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +public class BusEventImageServiceImpl extends ServiceImpl implements IBusEventImageService { + + @Override + public boolean saveBusEventImages(Long eventId, List imageList) { + imageList.forEach(i->i.setEventId(eventId)); + return this.saveBatch(imageList); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java new file mode 100644 index 0000000..21e511c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/BusEventServiceImpl.java @@ -0,0 +1,39 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.entity.BusEvent; +import com.casic.missiles.modular.system.mapper.BusEventMapper; +import com.casic.missiles.modular.system.service.IBusEventImageService; +import com.casic.missiles.modular.system.service.IBusEventService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; + +/** + *

+ * 事件表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class BusEventServiceImpl extends ServiceImpl implements IBusEventService { + + private final IBusEventImageService busEventImageService; + + + @Override + @Transactional + public boolean saveBusEvent(BusEvent busEvent) { + busEvent.setCreateTime(new Date()); + boolean res = this.save(busEvent); + if(res){ + res = busEventImageService.saveBusEventImages(busEvent.getId(),busEvent.getImageList()); + } + return res; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java new file mode 100644 index 0000000..2bdb63d --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceExtServiceImpl.java @@ -0,0 +1,102 @@ +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.core.conditions.update.UpdateWrapper; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.entity.DeviceExt; +import com.casic.missiles.modular.system.mapper.DeviceExtMapper; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 设备扩展信息表(安全树) 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-27 + */ +@Service +public class DeviceExtServiceImpl extends ServiceImpl implements IDeviceExtService { + + + @Override + public boolean saveDeviceExt(DeviceDetailDTO deviceDetailDTO) { + DeviceExt ext = new DeviceExt(); + ext.setDeviceId(deviceDetailDTO.getId()); + ext.setCameraCode(deviceDetailDTO.getCameraCode()); + ext.setCameraIp(deviceDetailDTO.getCameraIp()); + ext.setCameraPort(deviceDetailDTO.getCameraPort()); + ext.setGasCode(deviceDetailDTO.getGasCode()); + ext.setGasIp(deviceDetailDTO.getGasIp()); + ext.setGasPort(deviceDetailDTO.getGasPort()); + ext.setHatLiningCode(deviceDetailDTO.getHatLiningCode()); + return this.save(ext); + } + + @Override + public boolean updateDeviceExt(DeviceDetailDTO deviceDetailDTO) { + DeviceExt ext = this.selectByDeviceId(deviceDetailDTO.getId()); + ext.setCameraCode(deviceDetailDTO.getCameraCode()); + ext.setCameraIp(deviceDetailDTO.getCameraIp()); + ext.setCameraPort(deviceDetailDTO.getCameraPort()); + ext.setGasCode(deviceDetailDTO.getGasCode()); + ext.setGasIp(deviceDetailDTO.getGasIp()); + ext.setGasPort(deviceDetailDTO.getGasPort()); + ext.setHatLiningCode(deviceDetailDTO.getHatLiningCode()); + return this.updateById(ext); + } + + @Override + public boolean removeByDeviceIds(List deviceIds) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("DEVICE_ID",deviceIds); + return this.remove(queryWrapper); + } + + @Override + public boolean setGasThreshold(String gasIp, String gasPort, String threshold) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.set("GAS_THRESHOLD",threshold); + updateWrapper.eq("GAS_IP",gasIp); + updateWrapper.eq("GAS_PORT",gasPort); + return this.update(updateWrapper); + } + + @Override + public String getGasThreshold(String gasIp, String gasPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("GAS_IP",gasIp); + queryWrapper.eq("GAS_PORT",gasPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getGasThreshold() : null; + } + + private DeviceExt selectByDeviceId(Long deviceId){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVICE_ID",deviceId); + return this.getOne(queryWrapper); + } + + @Override + public Long selectByGasIpPort(String gasIp, String gasPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("GAS_IP",gasIp); + queryWrapper.eq("GAS_PORT",gasPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getDeviceId() : null; + } + + @Override + public Long selectByCameraIpPort(String cameraIp, String cameraPort) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("CAMERA_IP",cameraIp); + queryWrapper.eq("CAMERA_PORT",cameraPort); + DeviceExt deviceExt = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(deviceExt) ? deviceExt.getDeviceId() : null; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java new file mode 100644 index 0000000..9df79ef --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -0,0 +1,125 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.dto.DeviceDetailDTO; +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.entity.Device; +import com.casic.missiles.modular.system.mapper.DeviceMapper; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.modular.system.consts.DeviceConst.*; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class DeviceServiceImpl extends ServiceImpl implements IDeviceService { + + private final AbstractDictService dictService; + private final IDeviceExtService deviceExtService; + + private final IProjectDeviceService projectDeviceService; + + @Transactional + @Override + public boolean saveDevice(DeviceDetailDTO deviceDetailDTO) { + deviceDetailDTO.setCreateTime(new Date()); + boolean deviceRes = this.save(deviceDetailDTO); + if(deviceRes && DEVICE_TYPE_TREE.equals(deviceDetailDTO.getDeviceType())){ + deviceRes = deviceExtService.saveDeviceExt(deviceDetailDTO); + } + return deviceRes; + } + + @Transactional + @Override + public boolean updateDevice(DeviceDetailDTO deviceDetailDTO) { + boolean deviceRes = this.updateById(deviceDetailDTO); + if(deviceRes && DEVICE_TYPE_TREE.equals(deviceDetailDTO.getDeviceType())){ + deviceRes = deviceExtService.updateDeviceExt(deviceDetailDTO); + } + return deviceRes; + } + + @Transactional + @Override + public boolean deleteDevices(List deviceIds) { + return this.removeByIds(deviceIds) & deviceExtService.removeByDeviceIds(deviceIds); + } + + @Override + public Page listPage(Page page, QueryWrapper queryWrapper,String status,Long projectId) { + String ID_COLUMN_NAME = "br_device.ID"; + List useDevices = this.selectProjectDevice(null); + List projectDevices; + if(ObjectUtil.isNotEmpty(projectId)){ + projectDevices = this.selectProjectDevice(projectId); + } else { + projectDevices = null; + } + + // 查询使用中的设备(如果传了 projectId,查询 使用中&&此现场) + if(DEVICE_STATUS_USE.equals(status)){ + if(CollUtil.isEmpty(useDevices)){ + return page; + } + if(ObjectUtil.isNotEmpty(projectId) && CollUtil.isEmpty(projectDevices)){ + return page; + } + queryWrapper.in(ID_COLUMN_NAME,useDevices); + if(CollUtil.isNotEmpty(projectDevices)){ + queryWrapper.in(ID_COLUMN_NAME,projectDevices); + } + + } + + // 查询未使用的设备(如果传了 projectId,查询 未使用||此现场) + if(DEVICE_STATUS_NORMAL.equals(status)) { + if (CollUtil.isNotEmpty(useDevices)) { + if (CollUtil.isEmpty(projectDevices)) { + queryWrapper.notIn(ID_COLUMN_NAME, useDevices); + } else { + queryWrapper.and(i -> i.notIn(ID_COLUMN_NAME, useDevices).or().in(ID_COLUMN_NAME, projectDevices)); + } + } + } + + page = this.baseMapper.listDetailPage(page, queryWrapper); + for (DeviceDetailDTO record : page.getRecords()) { + record.setDeviceTypeName(dictService.getDictNameByCode("deviceType",record.getDeviceType())); + record.setIsPowerSupplyName(dictService.getDictNameByCode("isPowerSupply",record.getIsPowerSupply())); + record.setRegisterTime(DateUtil.formatDate(record.getCreateTime())); + record.setStatus(useDevices.contains(record.getId()) ? DEVICE_STATUS_USE : DEVICE_STATUS_NORMAL); + record.setStatusName(dictService.getDictNameByCode("deviceStatus",record.getStatus())); + } + return page; + } + + @Override + public List selectProjectDevice(Long projectId) { + return this.baseMapper.selectProjectDevice(projectId); + } + + +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceSupportServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceSupportServiceImpl.java new file mode 100644 index 0000000..ffd01ff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceSupportServiceImpl.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.system.service.impl; + +import com.casic.missiles.modular.system.dto.HelmetInfoDTO; +import com.casic.missiles.modular.system.mapper.DeviceMapper; +import com.casic.missiles.modular.system.service.IDeviceExtService; +import com.casic.missiles.modular.system.service.IDeviceSupportService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; + +import static com.casic.missiles.modular.system.consts.DeviceConst.DEVICE_TYPE_HAT; + +@Service +@RequiredArgsConstructor +public class DeviceSupportServiceImpl implements IDeviceSupportService { + + private final IDeviceExtService deviceExtService; + + private final DeviceMapper deviceMapper; + + @Override + public Long selectByGasIpPort(String gasIp, String gasPort) { + return deviceExtService.selectByGasIpPort(gasIp, gasPort); + } + + @Override + public List selectHelmetList() { + return deviceMapper.selectHelmetList(DEVICE_TYPE_HAT); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectDeviceServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectDeviceServiceImpl.java new file mode 100644 index 0000000..965f55c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectDeviceServiceImpl.java @@ -0,0 +1,96 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.system.dto.DeviceLocationDTO; +import com.casic.missiles.modular.system.entity.DataGas; +import com.casic.missiles.modular.system.entity.DataTreeLocation; +import com.casic.missiles.modular.system.entity.ProjectDevice; +import com.casic.missiles.modular.system.mapper.ProjectDeviceMapper; +import com.casic.missiles.modular.system.service.IDataSupportService; +import com.casic.missiles.modular.system.service.IProjectDeviceService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.utils.LngLatUtil; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.stream.Collectors; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class ProjectDeviceServiceImpl extends ServiceImpl implements IProjectDeviceService { + + private final IDataSupportService dataSupportService; + + @Override + public boolean saveProjectDeviceList(Long projectId, List projectDeviceList) { + projectDeviceList.forEach(i->i.setProjectId(projectId)); + return this.saveBatch(projectDeviceList); + } + + @Transactional + @Override + public boolean updateProjectDeviceList(Long projectId, List projectDeviceList) { + return this.deleteByProjectId(projectId) && this.saveProjectDeviceList(projectId, projectDeviceList); + } + + @Override + public boolean deleteByProjectId(Long projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("PROJECT_ID",projectId); + return this.remove(queryWrapper); + } + + @Override + public boolean deleteByProjectIds(List projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("PROJECT_ID",projectId); + return this.remove(queryWrapper); + } + + @Override + public List selectDetailByProjectId(Long projectId) { + return this.baseMapper.selectDetailByProjectId(projectId); + } + + @Override + public Long selectProjectIdByDevice(Long deviceId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVICE_ID",deviceId); + queryWrapper.exists("(select Id FROM br_work_site_info p where p.ID = br_project_device.PROJECT_ID AND p.PROJECT_STATE != '3')"); + ProjectDevice projectDevice = this.getOne(queryWrapper); + return ObjectUtil.isNotEmpty(projectDevice) ? projectDevice.getProjectId() : null; + } + + @Override + public List selectDeviceLocationList(Long projectId) { + List list = this.baseMapper.selectDeviceLocationList(projectId); + for (DeviceLocationDTO locationDTO : list) { + DataGas dataGas = dataSupportService.getGasData(locationDTO.getDeviceId()); + DataTreeLocation location = dataSupportService.getTreeLocation(locationDTO.getDeviceId(),true); + if(ObjectUtil.isNotEmpty(dataGas)){ + locationDTO.setGasValue(dataGas.getGasValue()); + locationDTO.setTime(DateUtil.formatDateTime(dataGas.getTs())); + } + if(ObjectUtil.isNotEmpty(location)){ + locationDTO.setLng(location.getGdLng()); + locationDTO.setLat(location.getGdLat()); + locationDTO.setLocation(location.getLocation()); + } + } + list = list.stream().filter(i-> StrUtil.isAllNotEmpty(i.getLng(),i.getLat())).collect(Collectors.toList()); + return LngLatUtil.sort(list); + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectWorkerServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectWorkerServiceImpl.java new file mode 100644 index 0000000..c3ec86c --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectWorkerServiceImpl.java @@ -0,0 +1,101 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.modular.system.dto.WorkerLocationDTO; +import com.casic.missiles.modular.system.entity.DataHelmetHealth; +import com.casic.missiles.modular.system.entity.DataHelmetLocation; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.mapper.ProjectWorkerMapper; +import com.casic.missiles.modular.system.service.IHelmetSupportService; +import com.casic.missiles.modular.system.service.IProjectWorkerService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.system.consts.ProjectConst.WORKER_TYPE_NORMAL; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class ProjectWorkerServiceImpl extends ServiceImpl implements IProjectWorkerService { + + private final AbstractDeptService deptService; + private final IHelmetSupportService helmetSupportService; + + @Override + public boolean saveProjectWorkerList(Long projectId, List projectWorkerList) { + projectWorkerList.forEach(i->i.setProjectId(projectId)); + return this.saveBatch(projectWorkerList); + } + + @Transactional + @Override + public boolean updateProjectWorkerList(Long projectId, List projectWorkerList) { + return this.deleteByProjectId(projectId) && this.saveProjectWorkerList(projectId, projectWorkerList) ; + } + + @Override + public boolean deleteByProjectId(Long projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("PROJECT_ID",projectId); + return this.remove(queryWrapper); + } + + @Override + public boolean deleteByProjectIds(List projectIds) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("PROJECT_ID",projectIds); + return this.remove(queryWrapper); + } + + + @Override + public List selectDetailByProjectId(Long projectId,String workerType) { + List projectWorkerList = this.baseMapper.selectDetailByProjectId(projectId,workerType); + for (ProjectWorker projectWorker : projectWorkerList) { + if(ObjectUtil.isNotEmpty(projectWorker.getWorkerDeptId())){ + projectWorker.setWorkerDeptName(deptService.getDeptName(projectWorker.getWorkerDeptId())); + } + } + return projectWorkerList; + } + + @Override + public List selectWorkerLocationDTO(Long projectId) { + List projectWorkerList = this.baseMapper.selectWorkerLocationList(projectId,WORKER_TYPE_NORMAL); + for (WorkerLocationDTO workerLocationDTO : projectWorkerList) { + if(ObjectUtil.isNotEmpty(workerLocationDTO.getHatId())){ + DataHelmetLocation location = helmetSupportService.getHelmetLocation(workerLocationDTO.getHatId(),true); + if(ObjectUtil.isNotEmpty(location)){ + workerLocationDTO.setLng(location.getGdLng()); + workerLocationDTO.setLat(location.getGdLat()); + workerLocationDTO.setLocation(location.getLocation()); + } + + DataHelmetHealth health = helmetSupportService.getHelmetHealth(workerLocationDTO.getHatId()); + if(ObjectUtil.isNotEmpty(health)){ + workerLocationDTO.setBloodOxygen(health.getBloodOxygen()); + workerLocationDTO.setHeartRate(health.getHeartRate()); + workerLocationDTO.setTime(DateUtil.formatDateTime(health.getTs())); + } + } + } + projectWorkerList = projectWorkerList.stream().filter(i-> StrUtil.isAllNotEmpty(i.getLng(),i.getLat())).collect(Collectors.toList()); + return projectWorkerList; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkSiteInfoServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkSiteInfoServiceImpl.java new file mode 100644 index 0000000..5068da2 --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkSiteInfoServiceImpl.java @@ -0,0 +1,151 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.dto.WorkSiteDetailDTO; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.WorkSiteInfo; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.mapper.WorkSiteInfoMapper; +import com.casic.missiles.modular.system.service.*; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.system.consts.ProjectConst.*; + +/** + *

+ * 作业现场表 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class WorkSiteInfoServiceImpl extends ServiceImpl implements IWorkSiteInfoService { + + private final IProjectWorkerService projectWorkerService; + private final IProjectDeviceService projectDeviceService; + + private final IWorkerService workerService; + private final IBraceletService braceletService; + + private final AbstractDeptService deptService; + private final AbstractDictService dictService; + @Override + @Transactional + public boolean addWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO) { + workSiteDetailDTO.setCreateTime(new Date()); + workSiteDetailDTO.setUpdateTime(new Date()); + workSiteDetailDTO.setProjectState(PROJECT_STATE_PREPARE); + boolean res = this.save(workSiteDetailDTO); + if(res){ + res = projectDeviceService.saveProjectDeviceList(workSiteDetailDTO.getId(), workSiteDetailDTO.getDeviceList()); + res = res & projectWorkerService.saveProjectWorkerList(workSiteDetailDTO.getId(), workSiteDetailDTO.getWorkerList()); + } + return res; + } + + @Override + @Transactional + public boolean updateWorkSiteInfo(WorkSiteDetailDTO workSiteDetailDTO) { + workSiteDetailDTO.setUpdateTime(new Date()); + boolean res = this.updateById(workSiteDetailDTO); + if(res){ + res = projectDeviceService.updateProjectDeviceList(workSiteDetailDTO.getId(), workSiteDetailDTO.getDeviceList()); + res = res & projectWorkerService.updateProjectWorkerList(workSiteDetailDTO.getId(), workSiteDetailDTO.getWorkerList()); + } + return res; + } + + @Override + public boolean deleteProjects(List projectIds) { + if(CollUtil.isNotEmpty(projectIds)) { + projectDeviceService.deleteByProjectIds(projectIds); + projectWorkerService.deleteByProjectIds(projectIds); + return this.removeByIds(projectIds); + } + return true; + } + + @Override + public WorkSiteDetailDTO getWorkSiteDetail(Long projectId) { + WorkSiteInfo workSiteInfo = this.getById(projectId); + WorkSiteDetailDTO workSiteDetailDTO = new WorkSiteDetailDTO(); + BeanUtil.copyProperties(workSiteInfo,workSiteDetailDTO,true); + workSiteDetailDTO.setDeviceList(projectDeviceService.selectDetailByProjectId(projectId)); + workSiteDetailDTO.setWorkerList(projectWorkerService.selectDetailByProjectId(projectId,WORKER_TYPE_NORMAL)); + + Worker responseWorker = workerService.selectWorkerDetail(workSiteDetailDTO.getWorkPerson()); + if(ObjectUtil.isNotEmpty(responseWorker)){ + workSiteDetailDTO.setWorkPersonName(responseWorker.getWorkerName()); + workSiteDetailDTO.setWorkPersonPhoneNumber(responseWorker.getPhoneNumber()); + workSiteDetailDTO.setWorkPersonDeptId(responseWorker.getDeptId()); + workSiteDetailDTO.setWorkPersonDeptName(responseWorker.getDeptName()); + } + return workSiteDetailDTO; + } + + @Override + public Page selectListPage(Page page, QueryWrapper queryWrapper) { + page = this.baseMapper.selectListPage(page, queryWrapper); + for (WorkSiteInfo workSiteInfo : page.getRecords()) { + workSiteInfo.setProjectStateName(dictService.getDictNameByCode("projectState", workSiteInfo.getProjectState())); + if(ObjectUtil.isNotEmpty(workSiteInfo.getWorkPersonDeptId())){ + workSiteInfo.setWorkPersonDeptName(deptService.getDeptName(workSiteInfo.getWorkPersonDeptId())); + } + workSiteInfo.setRegisterTime(DateUtil.formatDate(workSiteInfo.getCreateTime())); + } + return page; + } + + @Override + public boolean start(Long projectId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",projectId); + updateWrapper.set("PROJECT_STATE",PROJECT_STATE_WORKING); + updateWrapper.set("START_TIME",new Date()); + boolean res = this.update(updateWrapper); + //braceletService.enableBracelet(selectProjectBracelets(projectId)); + return res; + } + + @Override + public boolean finish(Long projectId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ID",projectId); + updateWrapper.set("PROJECT_STATE",PROJECT_STATE_FINISH); + updateWrapper.set("FINISH_TIME",new Date()); + boolean res = this.update(updateWrapper); + //braceletService.disableBracelet(selectProjectBracelets(projectId)); + return res; + } + + private List selectProjectBracelets(Long projectId){ + List deviceCodes = new ArrayList<>(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("PROJECT_ID",projectId); + queryWrapper.isNotNull("BRACELET_CODE"); + queryWrapper.select("BRACELET_CODE"); + List res = projectWorkerService.listObjs(queryWrapper); + if(CollUtil.isNotEmpty(res)){ + deviceCodes = res.stream().map(Object::toString).distinct().collect(Collectors.toList()); + } + return deviceCodes; + } +} diff --git a/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkerServiceImpl.java b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkerServiceImpl.java new file mode 100644 index 0000000..6859cff --- /dev/null +++ b/casic_video_283_server/src/main/java/com/casic/missiles/modular/system/service/impl/WorkerServiceImpl.java @@ -0,0 +1,110 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.system.entity.ProjectWorker; +import com.casic.missiles.modular.system.entity.Worker; +import com.casic.missiles.modular.system.mapper.WorkerMapper; +import com.casic.missiles.modular.system.service.*; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import static com.casic.missiles.modular.system.consts.ProjectConst.WORKER_TYPE_TEMP; + +/** + *

+ * 服务实现类 + *

+ * + * @author zyj + * @since 2023-04-14 + */ +@Service +@RequiredArgsConstructor +public class WorkerServiceImpl extends ServiceImpl implements IWorkerService { + + private final IProjectWorkerService projectWorkerService; + + private final IProjectDeviceService projectDeviceService; + private final AbstractDictService dictService; + private final AbstractDeptService deptService; + private final IDeviceExtService deviceExtService; + + @Override + @Transactional + public boolean addWorker(Worker worker, Long projectId) { + worker.setCreateTime(new Date()); + boolean res = this.save(worker); + if(res && ObjectUtil.isNotEmpty(projectId)){ + res = projectWorkerService.save(new ProjectWorker(projectId, worker.getId())); + if(ObjectUtil.isNotEmpty(worker.getWorkerAvatar())){ + // todo 向一体机推送人脸图片 + } + } + return res; + } + + @Override + public Page selectListPage(Page page, QueryWrapper ew) { + page = this.baseMapper.selectListPage(page, ew); + for (Worker worker : page.getRecords()) { + wrapperWorker(worker); + } + return page; + } + + private void wrapperWorker(Worker worker) { + if(StrUtil.isNotEmpty(worker.getGender())){ + worker.setGenderName(dictService.getDictNameByCode("sysSex", worker.getGender())); + } + if(ObjectUtil.isNotEmpty(worker.getDeptId())){ + worker.setDeptName(deptService.getDeptName(worker.getDeptId())); + } + worker.setRegisterTime(DateUtil.formatDate(worker.getCreateTime())); + if(StrUtil.isNotEmpty(worker.getStatus())){ + worker.setStatusName(dictService.getDictNameByCode("workerStatus", worker.getStatus())); + } + } + + @Override + public Worker selectWorkerDetail(Long workerId) { + Worker worker = this.getById(workerId); + if(ObjectUtil.isNotEmpty(worker)){ + wrapperWorker(worker); + } + return worker; + } + + @Override + public List faceRegister(String cameraIp, String cameraPort) { + Long deviceId = deviceExtService.selectByCameraIpPort(cameraIp, cameraPort); + if(ObjectUtil.isNotEmpty(deviceId)){ + Long projectId = projectDeviceService.selectProjectIdByDevice(deviceId); + if(ObjectUtil.isNotEmpty(projectId)){ + return this.baseMapper.selectWorkerAvatars(projectId); + } + } + return null; + } + + @Override + public List projectTempWorker(Long projectId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("WORKER_TYPE",WORKER_TYPE_TEMP); + queryWrapper.exists("(select ID FROM br_project_worker WHERE PROJECT_ID = "+ projectId +")"); + List workers = this.list(queryWrapper); + workers.forEach(this::wrapperWorker); + return workers; + } +} diff --git a/casic_video_283_web/pom.xml b/casic_video_283_web/pom.xml new file mode 100644 index 0000000..feace49 --- /dev/null +++ b/casic_video_283_web/pom.xml @@ -0,0 +1,166 @@ + + + 4.0.0 + + com.casic + casic_video_283 + ../pom.xml + 1.0.0 + + casic_video_283_web + 1.0.0 + jar + casic_video_283_web + casic web启动入口 + + + + dev + + true + + + dev + + + + test + + test + + + + prod + + prod + + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-actuator + + + io.micrometer + micrometer-core + + + + + org.springframework.boot + spring-boot-starter-jdbc + + + + com.casic + casic-core + ${core.version} + + + com.casic + casic-admin-core + ${admin.version} + + + io.springfox + springfox-swagger-ui + + + + + com.casic + casic-admin-support + ${admin.version} + + + mysql + mysql-connector-java + ${mysql.driver.version} + + + com.casic + casic-area-starter + ${admin.version} + + + + com.casic + casic_video_283_server + ${pro.version} + + + + org.springframework.boot + spring-boot-starter-tomcat + + + + + casic_video_283_web-${pro.version} + + + org.apache.maven.plugins + maven-jar-plugin + ${maven.jar.plugin.version} + + + + /config/*-*.yml + **/MockController.class + + + + com.casic.missiles.CasicApplication + true + ./ + + + + + + org.apache.maven.plugins + maven-assembly-plugin + ${maven.assembly.plugin.version} + + + make-assembly + package + + single + + + + + + org.apache.maven.plugins + maven-war-plugin + ${maven.war.plugin.version} + + + + + src/main/resources + + + /config/*/* + /config/*-*.yml + + true + + + src/main/java + + **/*.xml + + true + + + + \ No newline at end of file diff --git a/casic_video_283_web/src/main/build/bin/start.bat b/casic_video_283_web/src/main/build/bin/start.bat new file mode 100644 index 0000000..1db4e88 --- /dev/null +++ b/casic_video_283_web/src/main/build/bin/start.bat @@ -0,0 +1,4 @@ +@echo off +title ${project.build.finalName} +java -jar ./lib/${project.build.finalName}.jar +@pause diff --git a/casic_video_283_web/src/main/build/bin/start.sh b/casic_video_283_web/src/main/build/bin/start.sh new file mode 100644 index 0000000..1cc33fc --- /dev/null +++ b/casic_video_283_web/src/main/build/bin/start.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +jar_name="${project.build.finalName}.jar" +echo "starting $jar_name ..." + +PID=$(ps -ef | grep ${jar_name} | grep -v grep | awk '{print $2}') + +OLD_IFS="$IFS" +IFS="," +PIDARR=($PID) +IFS="$OLD_IFS" + +if [ ! $PID ]; then + echo "process ${jar_name} not exit" +else + echo "process id: $PID" + + kill -9 ${PID} + + if [ $? -eq 0 ]; then + echo "kill ${jar_name} success" + else + echo "kill ${jar_name} fail" + exit + fi +fi + + + +nohup java -jar ./lib/${jar_name} >/dev/null 2>log & +echo "start ${jar_name} ..." \ No newline at end of file diff --git a/casic_video_283_web/src/main/build/package.xml b/casic_video_283_web/src/main/build/package.xml new file mode 100644 index 0000000..c9259ad --- /dev/null +++ b/casic_video_283_web/src/main/build/package.xml @@ -0,0 +1,43 @@ + + + package + + zip + tar.gz + + true + + + + true + true + lib + runtime + + + + + src/main/build/bin + + start.bat + start.sh + + true + 0744 + / + + + src/main/resources/config + true + + *.yml + /*/* + + /config + + + src/main/resources/i18n + / + + + \ No newline at end of file diff --git a/casic_video_283_web/src/main/java/com/casic/missiles/CasicApplication.java b/casic_video_283_web/src/main/java/com/casic/missiles/CasicApplication.java new file mode 100644 index 0000000..7b8791f --- /dev/null +++ b/casic_video_283_web/src/main/java/com/casic/missiles/CasicApplication.java @@ -0,0 +1,35 @@ +package com.casic.missiles; + +import lombok.extern.slf4j.Slf4j; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.web.servlet.ServletComponentScan; +import org.springframework.cache.annotation.EnableCaching; +import org.springframework.scheduling.annotation.EnableAsync; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +/** + * SpringBoot方式启动类 + * + * @author lwh + * @Date 2021/06/06 12:06 + */ +@SpringBootApplication +@EnableCaching +@EnableTransactionManagement(proxyTargetClass = true) +@EnableAsync +@Slf4j +@MapperScan(value = "com.casic.missiles.modular.system.mapper") +public class CasicApplication { + + static { + System.setProperty("druid.mysql.usePingMethod","false"); + } + + public static void main(String[] args) { + SpringApplication.run(CasicApplication.class, args); + log.info("CasicApplication is success!"); + } + +} diff --git a/casic_video_283_web/src/main/java/com/casic/missiles/CasicServletInitializer.java b/casic_video_283_web/src/main/java/com/casic/missiles/CasicServletInitializer.java new file mode 100644 index 0000000..e30585b --- /dev/null +++ b/casic_video_283_web/src/main/java/com/casic/missiles/CasicServletInitializer.java @@ -0,0 +1,18 @@ +package com.casic.missiles; + +import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; + +/** + * Guns Web程序启动类 + * + * @author fengshuonan + * @date 2017-05-21 9:43 + */ +public class CasicServletInitializer extends SpringBootServletInitializer { + + @Override + protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { + return application.sources(CasicApplication.class); + } +} diff --git a/casic_video_283_web/src/main/java/com/casic/missiles/config/SwaggerConfig.java b/casic_video_283_web/src/main/java/com/casic/missiles/config/SwaggerConfig.java new file mode 100644 index 0000000..fd233d8 --- /dev/null +++ b/casic_video_283_web/src/main/java/com/casic/missiles/config/SwaggerConfig.java @@ -0,0 +1,40 @@ +package com.casic.missiles.config; + + +import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j; +import io.swagger.annotations.ApiOperation; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import springfox.documentation.builders.ApiInfoBuilder; +import springfox.documentation.builders.PathSelectors; +import springfox.documentation.builders.RequestHandlerSelectors; +import springfox.documentation.service.ApiInfo; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spring.web.plugins.Docket; +import springfox.documentation.swagger2.annotations.EnableSwagger2; + +@Configuration //声明该类为配置类 +@EnableSwagger2 //声明启动Swagger2 +@EnableKnife4j +public class SwaggerConfig{ + private ApiInfo apiInfo() { + return new ApiInfoBuilder() + .title("北燃四分二期接口文档")//文档说明 + .version("1.0.0")//文档版本说明 + .build(); + } + + @Bean + public Docket productApi() { + return new Docket(DocumentationType.SWAGGER_2) + .apiInfo(apiInfo()) + .select() + .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) //添加ApiOperiation注解的被扫描 + .paths(PathSelectors.any()) + .build(); + + } + + +} + diff --git a/casic_video_283_web/src/main/java/com/casic/missiles/controller/MockController.java b/casic_video_283_web/src/main/java/com/casic/missiles/controller/MockController.java new file mode 100644 index 0000000..eae6c54 --- /dev/null +++ b/casic_video_283_web/src/main/java/com/casic/missiles/controller/MockController.java @@ -0,0 +1,82 @@ +package com.casic.missiles.controller; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.application.enums.LoginType; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.model.auth.CasicCustomToken; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.response.SuccessResponseData; +import com.casic.missiles.modular.domain.constants.PermissionConstants; +import com.casic.missiles.modular.interfaces.log.LogManager; +import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; +import com.casic.missiles.modular.system.dto.LoginSuccessDTO; +import lombok.extern.slf4j.Slf4j; +import org.apache.shiro.subject.Subject; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.security.NoSuchAlgorithmException; +import java.util.Map; + +import static com.casic.missiles.core.util.HttpContext.getIp; + + +/** + * 仅为mock登录使用 + * + * @author lenovo + */ +@Controller +@RequestMapping("/route") +@Slf4j +public class MockController extends BaseController { + + /** + * 获取mockToken + */ + @GetMapping("/mockToken") + @ResponseBody + public Object mockToken(String username, String password) { + super.getSession().setAttribute(PermissionConstants.IS_APP, false); + SuccessResponseData resultData = new SuccessResponseData(); + if (StrUtil.hasEmpty(username, password)) { + username = "admin"; + password = "111111"; + } + Subject currentUser = ShiroKit.getSubject(); + + try { + Map key = RSAUtils.genKeyPair(); + ShiroKit.getSession().setAttribute(PermissionConstants.PRIVATE_KEY, key.get(RSAUtils.RSAPrivateKey)); + + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } + + //token自定义 + CasicCustomToken token = new CasicCustomToken(username, password); + token.setType(LoginType.PASSWORD); + token.setRememberMe(false); + + try { + currentUser.login(token); + } catch (Exception e) { + e.printStackTrace(); + } + AuthUser shiroUser = ShiroKit.getUser(); + super.getSession().setAttribute("shiroUser", shiroUser); + super.getSession().setAttribute("username", shiroUser.getAccount()); + super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); + + LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), getIp())); + + ShiroKit.getSession().setAttribute("sessionFlag", true); + resultData.setData(new LoginSuccessDTO(ShiroKit.getSession().getId().toString(), null)); + resultData.setMessage("登录成功"); + return resultData; + } +} diff --git a/casic_video_283_web/src/main/resources/META-INF/spring-devtools.properties b/casic_video_283_web/src/main/resources/META-INF/spring-devtools.properties new file mode 100644 index 0000000..e3b0a7f --- /dev/null +++ b/casic_video_283_web/src/main/resources/META-INF/spring-devtools.properties @@ -0,0 +1 @@ +restart.include.beetl=/beetl-2.7.15.jar \ No newline at end of file diff --git a/casic_video_283_web/src/main/resources/config/application-dev.yml b/casic_video_283_web/src/main/resources/config/application-dev.yml new file mode 100644 index 0000000..fea6255 --- /dev/null +++ b/casic_video_283_web/src/main/resources/config/application-dev.yml @@ -0,0 +1,31 @@ +server: + port: 8083 +################### spring配置 ################### +spring: + datasource: + url: jdbc:mysql://111.198.10.15:11336/casic_283?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=Asia/Shanghai&&allowMultiQueries=true + username: root + password: Casic203 + jms: + pub-sub-domain: true +# session: +# store-type: redis + redis: + host: 111.198.10.15 + port: 11412 + password: ew5T4K3#203lwh +# serializer: org.springframework.data.redis.serializer.StringRedisSerializer +# redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer +casic: + #kaptcha-open: false #是否开启登录时验证码 (true/false) + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/webjars/**,/swagger-ui.html,/swagger-resources + #flowable数据源和多数据源配置 + db: + init: + enable: false + file: + uploadPath: /casic/casic-gas-operation-file/ +logging: + level.root: info + level.com.casic: debug + level.org.springframework.web: info \ No newline at end of file diff --git a/casic_video_283_web/src/main/resources/config/application-prod.yml b/casic_video_283_web/src/main/resources/config/application-prod.yml new file mode 100644 index 0000000..634fe1a --- /dev/null +++ b/casic_video_283_web/src/main/resources/config/application-prod.yml @@ -0,0 +1,29 @@ +server: + port: 8085 +# context-path: /callcenter/api +################### spring配置 ################### +spring: + datasource: + url: jdbc:mysql://111.198.10.15:11336/casic_283?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + username: root + password: Casic203 + initial-size: 2 + min-idle: 1 + jms: + pub-sub-domain: true + # session: + # store-type: redis + redis: + host: 127.0.0.1 + port: 6379 + password: + +#flowable数据源和多数据源配置 +casic: + kaptcha-open: false #是否开启登录时验证码 (true/false) + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/bracelet/receive/* +logging: + level.root: info + level.com.casic: debug + path: logs/ + file: missiles.log \ No newline at end of file diff --git a/casic_video_283_web/src/main/resources/config/application-test.yml b/casic_video_283_web/src/main/resources/config/application-test.yml new file mode 100644 index 0000000..06ebf54 --- /dev/null +++ b/casic_video_283_web/src/main/resources/config/application-test.yml @@ -0,0 +1,23 @@ +server: + port: 11307 +################### spring配置 ################### +spring: + datasource: + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://localhost:3307/casic_283?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + username: root + password: root + initial-size: 2 + min-idle: 1 + jms: + pub-sub-domain: true +# session: +# store-type: redis +casic: + # kaptcha-open: false #是否开启登录时验证码 (true/false) + nologin-urls: /user/login,/user/appLogin,/kaptcha/base64,/config/baseConfig,/route/mockToken,/workflow/** +logging: + level.root: info + level.com.casic: debug + path: logs/ + file: missiles.log \ No newline at end of file diff --git a/casic_video_283_web/src/main/resources/config/application.yml b/casic_video_283_web/src/main/resources/config/application.yml new file mode 100644 index 0000000..599fcce --- /dev/null +++ b/casic_video_283_web/src/main/resources/config/application.yml @@ -0,0 +1,25 @@ +########################################################## +################## 所有profile共有的配置 ################# +########################################################## +spring: + profiles: + active: @activatedProperties@ + servlet: + multipart: + max-file-size: 50MB + max-request-size: 80MB +#mybatis-plus: +# sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector +################### mybatis-plus配置 ################### +################### guns配置 ################### +casic: + swagger-open: true #是否开启swagger (true/false) + kaptcha-open: false #是否开启登录时验证码 (true/false) + muti-datasource-open: false #是否开启多数据源(true/false) + spring-session-open: false #是否开启spring session,如果是多机环境需要开启(true/false) + session-invalidate-time: 86400 #session失效时间(只在单机环境下生效,,多机环境在SpringSessionConfig类中配置) 单位:秒 + session-validation-interval: 900 #多久检测一次失效的session(只在单机环境下生效) 单位:秒 + no-login-urls: /user/login,/kaptcha,/config/baseConfig + config: + export-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\export\ + config-path: E:\Develop\IdeaProject\smartcity\casic-smartcity-dcms\casic-web\src\main\resources\config\ diff --git a/casic_video_283_web/src/main/resources/logback-spring.xml b/casic_video_283_web/src/main/resources/logback-spring.xml new file mode 100644 index 0000000..c0c7ac9 --- /dev/null +++ b/casic_video_283_web/src/main/resources/logback-spring.xml @@ -0,0 +1,113 @@ + + + + + + + + + + + + + ${CONSOLE_LOG_PATTERN} + utf-8 + + + + + + + + + + + + + + + + + + + + + + ${CONSOLE_LOG_PATTERN} + utf-8 + + + + + + + + ${LOG_PATH}/missiles_error.log + + + + + + ${LOG_PATH}/error/log-error-%d{yyyy-MM-dd}.%i.log + + + + 10MB + + + + + true + + + + ${FILE_LOG_PATTERN} + utf-8 + + + + + error + ACCEPT + DENY + + + + + + + + ${LOG_PATH}/missiles_total.log + + + + + + ${LOG_PATH}/total/log-total-%d{yyyy-MM-dd}.%i.log + + + + 10MB + + + + + true + + + + ${FILE_LOG_PATTERN} + utf-8 + + + + + + + + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..66078ca --- /dev/null +++ b/pom.xml @@ -0,0 +1,148 @@ + + 4.0.0 + com.casic + casic_video_283 + 1.0.0 + casic_video_283 + pom + + casic_video_283_web + casic_video_283_server + + + com.casic + casic-boot-starter-parent + 2.0.0.alpha + + + UTF-8 + UTF-8 + 1.8 + + ${project.version} + + 2.0.0.alpha + + 2.0.0.alpha + + + + 3.2.1 + 1.7 + 3.6 + 2.6.11 + 1.0.3 + 3.4.5 + 2.9.2 + 2.0.4 + + + + + + org.springframework.boot + spring-boot-starter-web + ${boot.version} + + + + com.casic + casic-core + ${core.version} + + + mysql + mysql-connector-java + ${mysql.driver.version} + + + com.baomidou + mybatis-plus-boot-starter + ${mybatis-plus-boot-starter} + + + + com.alibaba + druid + ${druid.version} + + + com.alibaba + fastjson + ${fastjson.version} + + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven.compiler.plugin.version} + + + + + + + + + + + cn.smallbun.screw + screw-maven-plugin + ${screw.version} + + + + com.zaxxer + HikariCP + ${hikari.version} + + + + mysql + mysql-connector-java + ${mysql.driver.version} + + + + + root + + casic203! + + + com.mysql.jdbc.Driver + + jdbc:mysql://localhost:3306/casic_template?useSSL=false + + WORD + + true + + freemarker + + + 基础权限库 + + ${pro.version} + + 基础库文档速查 + + + + compile + + run + + + + + + + + \ No newline at end of file