diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java new file mode 100644 index 0000000..77c14a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.device.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dictmap.DeviceGroupQueryDict; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.vo.BusDeviceGroupVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; + +/** + * 设备分组管理信息Controller + * + * @author lwh + * @date 2025-06-11 + */ +@Api(tags = "设备分组管理信息") +@RestController +@RequestMapping("/device/group") +public class BusDeviceGroupController extends BaseController { + + private final IBusDeviceGroupService busDeviceGroupService; + private final AbstractPermissionContext abstractPermissionContext; + + public BusDeviceGroupController(IBusDeviceGroupService busDeviceGroupService, AbstractPermissionContext abstractPermissionContext) { + this.busDeviceGroupService = busDeviceGroupService; + this.abstractPermissionContext = abstractPermissionContext; + } + + @ApiOperation(value = "列表查询") + @GetMapping(value = "/list") + public ResponseDataDTO> list(BusDeviceGroupVO busDeviceGroupVO) { + QueryWrapper query = busDeviceGroupVO.genQuery(); + return ResponseDataDTO.success(busDeviceGroupService.list(query)); + } + + @ApiOperation(value = "分组树结构查询") + @BussinessLog(value = "分组树结构查询") + @GetMapping(value = "/tree") + public ResponseDataDTO> groupTree() { + List groupDTOList = busDeviceGroupService.groupTree(); + return ResponseDataDTO.success(groupDTOList); + } + + @BussinessLog(value = "设备分组分页查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "分页查询") + @GetMapping(value = "/listPage") + public ResponseDataDTO> listPage(BusDeviceGroupVO busDeviceGroupVO) { + Page page = PageFactory.defaultPage(); + QueryWrapper query = busDeviceGroupVO.genQuery(); + List list = busDeviceGroupService.selectBusDeviceGroupPage(page, query); + page.setRecords(list); + return ResponseDataDTO.success(super.packForBT(page)); + } + + @BussinessLog(value = "设备分组新增", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "新增接口") + @PostMapping(value = "/add") + public ResponseDataDTO add(@RequestBody BusDeviceGroup busDeviceGroup) { + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + busDeviceGroup.setCreateId(user.getId()); + busDeviceGroup.setCreateTime(new Date()); + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.save(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组修改", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @PostMapping(value = "/update") + public ResponseDataDTO update(@RequestBody BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.updateById(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组删除", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "删除接口") + @GetMapping(value = "/delete") + public ResponseDataDTO delete(String id) { + busDeviceGroupService.removeById(id); + return ResponseDataDTO.success(); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { + busDeviceGroupService.removeByIds(ids.getIds()); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组详情查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "详情查询") + @GetMapping(value = "/detail") + public ResponseDataDTO detail(String id) { + return ResponseDataDTO.success(busDeviceGroupService.getById(id)); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java new file mode 100644 index 0000000..77c14a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.device.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dictmap.DeviceGroupQueryDict; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.vo.BusDeviceGroupVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; + +/** + * 设备分组管理信息Controller + * + * @author lwh + * @date 2025-06-11 + */ +@Api(tags = "设备分组管理信息") +@RestController +@RequestMapping("/device/group") +public class BusDeviceGroupController extends BaseController { + + private final IBusDeviceGroupService busDeviceGroupService; + private final AbstractPermissionContext abstractPermissionContext; + + public BusDeviceGroupController(IBusDeviceGroupService busDeviceGroupService, AbstractPermissionContext abstractPermissionContext) { + this.busDeviceGroupService = busDeviceGroupService; + this.abstractPermissionContext = abstractPermissionContext; + } + + @ApiOperation(value = "列表查询") + @GetMapping(value = "/list") + public ResponseDataDTO> list(BusDeviceGroupVO busDeviceGroupVO) { + QueryWrapper query = busDeviceGroupVO.genQuery(); + return ResponseDataDTO.success(busDeviceGroupService.list(query)); + } + + @ApiOperation(value = "分组树结构查询") + @BussinessLog(value = "分组树结构查询") + @GetMapping(value = "/tree") + public ResponseDataDTO> groupTree() { + List groupDTOList = busDeviceGroupService.groupTree(); + return ResponseDataDTO.success(groupDTOList); + } + + @BussinessLog(value = "设备分组分页查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "分页查询") + @GetMapping(value = "/listPage") + public ResponseDataDTO> listPage(BusDeviceGroupVO busDeviceGroupVO) { + Page page = PageFactory.defaultPage(); + QueryWrapper query = busDeviceGroupVO.genQuery(); + List list = busDeviceGroupService.selectBusDeviceGroupPage(page, query); + page.setRecords(list); + return ResponseDataDTO.success(super.packForBT(page)); + } + + @BussinessLog(value = "设备分组新增", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "新增接口") + @PostMapping(value = "/add") + public ResponseDataDTO add(@RequestBody BusDeviceGroup busDeviceGroup) { + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + busDeviceGroup.setCreateId(user.getId()); + busDeviceGroup.setCreateTime(new Date()); + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.save(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组修改", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @PostMapping(value = "/update") + public ResponseDataDTO update(@RequestBody BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.updateById(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组删除", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "删除接口") + @GetMapping(value = "/delete") + public ResponseDataDTO delete(String id) { + busDeviceGroupService.removeById(id); + return ResponseDataDTO.success(); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { + busDeviceGroupService.removeByIds(ids.getIds()); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组详情查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "详情查询") + @GetMapping(value = "/detail") + public ResponseDataDTO detail(String id) { + return ResponseDataDTO.success(busDeviceGroupService.getById(id)); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java new file mode 100644 index 0000000..9d3726f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.device.dao; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import java.util.List; +/** + *

+ * 设备分组管理信息 Mapper 接口 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface BusDeviceGroupMapper extends BaseMapper { +/** +* 设备分组管理信息 分页检索 +*/ +List selectBusDeviceGroupPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java new file mode 100644 index 0000000..77c14a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.device.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dictmap.DeviceGroupQueryDict; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.vo.BusDeviceGroupVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; + +/** + * 设备分组管理信息Controller + * + * @author lwh + * @date 2025-06-11 + */ +@Api(tags = "设备分组管理信息") +@RestController +@RequestMapping("/device/group") +public class BusDeviceGroupController extends BaseController { + + private final IBusDeviceGroupService busDeviceGroupService; + private final AbstractPermissionContext abstractPermissionContext; + + public BusDeviceGroupController(IBusDeviceGroupService busDeviceGroupService, AbstractPermissionContext abstractPermissionContext) { + this.busDeviceGroupService = busDeviceGroupService; + this.abstractPermissionContext = abstractPermissionContext; + } + + @ApiOperation(value = "列表查询") + @GetMapping(value = "/list") + public ResponseDataDTO> list(BusDeviceGroupVO busDeviceGroupVO) { + QueryWrapper query = busDeviceGroupVO.genQuery(); + return ResponseDataDTO.success(busDeviceGroupService.list(query)); + } + + @ApiOperation(value = "分组树结构查询") + @BussinessLog(value = "分组树结构查询") + @GetMapping(value = "/tree") + public ResponseDataDTO> groupTree() { + List groupDTOList = busDeviceGroupService.groupTree(); + return ResponseDataDTO.success(groupDTOList); + } + + @BussinessLog(value = "设备分组分页查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "分页查询") + @GetMapping(value = "/listPage") + public ResponseDataDTO> listPage(BusDeviceGroupVO busDeviceGroupVO) { + Page page = PageFactory.defaultPage(); + QueryWrapper query = busDeviceGroupVO.genQuery(); + List list = busDeviceGroupService.selectBusDeviceGroupPage(page, query); + page.setRecords(list); + return ResponseDataDTO.success(super.packForBT(page)); + } + + @BussinessLog(value = "设备分组新增", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "新增接口") + @PostMapping(value = "/add") + public ResponseDataDTO add(@RequestBody BusDeviceGroup busDeviceGroup) { + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + busDeviceGroup.setCreateId(user.getId()); + busDeviceGroup.setCreateTime(new Date()); + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.save(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组修改", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @PostMapping(value = "/update") + public ResponseDataDTO update(@RequestBody BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.updateById(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组删除", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "删除接口") + @GetMapping(value = "/delete") + public ResponseDataDTO delete(String id) { + busDeviceGroupService.removeById(id); + return ResponseDataDTO.success(); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { + busDeviceGroupService.removeByIds(ids.getIds()); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组详情查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "详情查询") + @GetMapping(value = "/detail") + public ResponseDataDTO detail(String id) { + return ResponseDataDTO.success(busDeviceGroupService.getById(id)); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java new file mode 100644 index 0000000..9d3726f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.device.dao; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import java.util.List; +/** + *

+ * 设备分组管理信息 Mapper 接口 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface BusDeviceGroupMapper extends BaseMapper { +/** +* 设备分组管理信息 分页检索 +*/ +List selectBusDeviceGroupPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml new file mode 100644 index 0000000..a6dd84f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + id + , + create_time as createTime , + update_time as updateTime , + group_name as groupName , + create_id as createId , + dept_id as deptId + + + a + . + id + , + a.create_time + as createTime , + a.update_time + as updateTime , + a.group_name + as groupName , + a.create_id + as createId , + a.dept_id + as deptId + + + + + + and group_name like concat('%',#{request.groupName},'%') + + + and dept_id = #{request.deptId} + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java new file mode 100644 index 0000000..77c14a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.device.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dictmap.DeviceGroupQueryDict; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.vo.BusDeviceGroupVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; + +/** + * 设备分组管理信息Controller + * + * @author lwh + * @date 2025-06-11 + */ +@Api(tags = "设备分组管理信息") +@RestController +@RequestMapping("/device/group") +public class BusDeviceGroupController extends BaseController { + + private final IBusDeviceGroupService busDeviceGroupService; + private final AbstractPermissionContext abstractPermissionContext; + + public BusDeviceGroupController(IBusDeviceGroupService busDeviceGroupService, AbstractPermissionContext abstractPermissionContext) { + this.busDeviceGroupService = busDeviceGroupService; + this.abstractPermissionContext = abstractPermissionContext; + } + + @ApiOperation(value = "列表查询") + @GetMapping(value = "/list") + public ResponseDataDTO> list(BusDeviceGroupVO busDeviceGroupVO) { + QueryWrapper query = busDeviceGroupVO.genQuery(); + return ResponseDataDTO.success(busDeviceGroupService.list(query)); + } + + @ApiOperation(value = "分组树结构查询") + @BussinessLog(value = "分组树结构查询") + @GetMapping(value = "/tree") + public ResponseDataDTO> groupTree() { + List groupDTOList = busDeviceGroupService.groupTree(); + return ResponseDataDTO.success(groupDTOList); + } + + @BussinessLog(value = "设备分组分页查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "分页查询") + @GetMapping(value = "/listPage") + public ResponseDataDTO> listPage(BusDeviceGroupVO busDeviceGroupVO) { + Page page = PageFactory.defaultPage(); + QueryWrapper query = busDeviceGroupVO.genQuery(); + List list = busDeviceGroupService.selectBusDeviceGroupPage(page, query); + page.setRecords(list); + return ResponseDataDTO.success(super.packForBT(page)); + } + + @BussinessLog(value = "设备分组新增", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "新增接口") + @PostMapping(value = "/add") + public ResponseDataDTO add(@RequestBody BusDeviceGroup busDeviceGroup) { + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + busDeviceGroup.setCreateId(user.getId()); + busDeviceGroup.setCreateTime(new Date()); + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.save(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组修改", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @PostMapping(value = "/update") + public ResponseDataDTO update(@RequestBody BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.updateById(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组删除", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "删除接口") + @GetMapping(value = "/delete") + public ResponseDataDTO delete(String id) { + busDeviceGroupService.removeById(id); + return ResponseDataDTO.success(); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { + busDeviceGroupService.removeByIds(ids.getIds()); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组详情查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "详情查询") + @GetMapping(value = "/detail") + public ResponseDataDTO detail(String id) { + return ResponseDataDTO.success(busDeviceGroupService.getById(id)); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java new file mode 100644 index 0000000..9d3726f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.device.dao; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import java.util.List; +/** + *

+ * 设备分组管理信息 Mapper 接口 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface BusDeviceGroupMapper extends BaseMapper { +/** +* 设备分组管理信息 分页检索 +*/ +List selectBusDeviceGroupPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml new file mode 100644 index 0000000..a6dd84f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + id + , + create_time as createTime , + update_time as updateTime , + group_name as groupName , + create_id as createId , + dept_id as deptId + + + a + . + id + , + a.create_time + as createTime , + a.update_time + as updateTime , + a.group_name + as groupName , + a.create_id + as createId , + a.dept_id + as deptId + + + + + + and group_name like concat('%',#{request.groupName},'%') + + + and dept_id = #{request.deptId} + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java new file mode 100644 index 0000000..a821e92 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dictmap; + +import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap; + +public class DeviceGroupQueryDict extends AbstractDictMap { + + @Override + public void init() { + put("id", "主键"); + put("deptId", "所属组织"); + put("groupName", "分组名称"); + + put("deptName", "所属单位"); + } + + @Override + protected void initBeWrapped() { + + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java new file mode 100644 index 0000000..77c14a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.device.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dictmap.DeviceGroupQueryDict; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.vo.BusDeviceGroupVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; + +/** + * 设备分组管理信息Controller + * + * @author lwh + * @date 2025-06-11 + */ +@Api(tags = "设备分组管理信息") +@RestController +@RequestMapping("/device/group") +public class BusDeviceGroupController extends BaseController { + + private final IBusDeviceGroupService busDeviceGroupService; + private final AbstractPermissionContext abstractPermissionContext; + + public BusDeviceGroupController(IBusDeviceGroupService busDeviceGroupService, AbstractPermissionContext abstractPermissionContext) { + this.busDeviceGroupService = busDeviceGroupService; + this.abstractPermissionContext = abstractPermissionContext; + } + + @ApiOperation(value = "列表查询") + @GetMapping(value = "/list") + public ResponseDataDTO> list(BusDeviceGroupVO busDeviceGroupVO) { + QueryWrapper query = busDeviceGroupVO.genQuery(); + return ResponseDataDTO.success(busDeviceGroupService.list(query)); + } + + @ApiOperation(value = "分组树结构查询") + @BussinessLog(value = "分组树结构查询") + @GetMapping(value = "/tree") + public ResponseDataDTO> groupTree() { + List groupDTOList = busDeviceGroupService.groupTree(); + return ResponseDataDTO.success(groupDTOList); + } + + @BussinessLog(value = "设备分组分页查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "分页查询") + @GetMapping(value = "/listPage") + public ResponseDataDTO> listPage(BusDeviceGroupVO busDeviceGroupVO) { + Page page = PageFactory.defaultPage(); + QueryWrapper query = busDeviceGroupVO.genQuery(); + List list = busDeviceGroupService.selectBusDeviceGroupPage(page, query); + page.setRecords(list); + return ResponseDataDTO.success(super.packForBT(page)); + } + + @BussinessLog(value = "设备分组新增", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "新增接口") + @PostMapping(value = "/add") + public ResponseDataDTO add(@RequestBody BusDeviceGroup busDeviceGroup) { + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + busDeviceGroup.setCreateId(user.getId()); + busDeviceGroup.setCreateTime(new Date()); + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.save(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组修改", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @PostMapping(value = "/update") + public ResponseDataDTO update(@RequestBody BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.updateById(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组删除", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "删除接口") + @GetMapping(value = "/delete") + public ResponseDataDTO delete(String id) { + busDeviceGroupService.removeById(id); + return ResponseDataDTO.success(); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { + busDeviceGroupService.removeByIds(ids.getIds()); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组详情查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "详情查询") + @GetMapping(value = "/detail") + public ResponseDataDTO detail(String id) { + return ResponseDataDTO.success(busDeviceGroupService.getById(id)); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java new file mode 100644 index 0000000..9d3726f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.device.dao; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import java.util.List; +/** + *

+ * 设备分组管理信息 Mapper 接口 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface BusDeviceGroupMapper extends BaseMapper { +/** +* 设备分组管理信息 分页检索 +*/ +List selectBusDeviceGroupPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml new file mode 100644 index 0000000..a6dd84f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + id + , + create_time as createTime , + update_time as updateTime , + group_name as groupName , + create_id as createId , + dept_id as deptId + + + a + . + id + , + a.create_time + as createTime , + a.update_time + as updateTime , + a.group_name + as groupName , + a.create_id + as createId , + a.dept_id + as deptId + + + + + + and group_name like concat('%',#{request.groupName},'%') + + + and dept_id = #{request.deptId} + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java new file mode 100644 index 0000000..a821e92 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dictmap; + +import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap; + +public class DeviceGroupQueryDict extends AbstractDictMap { + + @Override + public void init() { + put("id", "主键"); + put("deptId", "所属组织"); + put("groupName", "分组名称"); + + put("deptName", "所属单位"); + } + + @Override + protected void initBeWrapped() { + + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java new file mode 100644 index 0000000..d8d1712 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.device.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + + +/** + * 设备分组管理信息对象 bus_device_group + * + * @author lwh + * @date 2025-06-11 + */ +@Data +@TableName("bus_device_group") +public class BusDeviceGroup extends Model { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键", dataType = "Long") + @TableField("id") + private Long id; + + @ApiModelProperty(value = "创建时间", dataType = "Date") + @TableField("create_time") + private Date createTime; + + @ApiModelProperty(value = "修改时间", dataType = "Date") + @TableField("update_time") + private Date updateTime; + + @ApiModelProperty(value = "分组名称", dataType = "String") + @TableField("group_name") + private String groupName; + + @ApiModelProperty(value = "创建人", dataType = "Long") + @TableField("create_id") + private Long createId; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; + @TableField(exist = false) + private String deptName; + + @Override + public String toString() { + return "BusDeviceGroup{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "groupName=" + groupName + + "createId=" + createId + + "deptId=" + deptId + + "}"; + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java new file mode 100644 index 0000000..77c14a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.device.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dictmap.DeviceGroupQueryDict; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.vo.BusDeviceGroupVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; + +/** + * 设备分组管理信息Controller + * + * @author lwh + * @date 2025-06-11 + */ +@Api(tags = "设备分组管理信息") +@RestController +@RequestMapping("/device/group") +public class BusDeviceGroupController extends BaseController { + + private final IBusDeviceGroupService busDeviceGroupService; + private final AbstractPermissionContext abstractPermissionContext; + + public BusDeviceGroupController(IBusDeviceGroupService busDeviceGroupService, AbstractPermissionContext abstractPermissionContext) { + this.busDeviceGroupService = busDeviceGroupService; + this.abstractPermissionContext = abstractPermissionContext; + } + + @ApiOperation(value = "列表查询") + @GetMapping(value = "/list") + public ResponseDataDTO> list(BusDeviceGroupVO busDeviceGroupVO) { + QueryWrapper query = busDeviceGroupVO.genQuery(); + return ResponseDataDTO.success(busDeviceGroupService.list(query)); + } + + @ApiOperation(value = "分组树结构查询") + @BussinessLog(value = "分组树结构查询") + @GetMapping(value = "/tree") + public ResponseDataDTO> groupTree() { + List groupDTOList = busDeviceGroupService.groupTree(); + return ResponseDataDTO.success(groupDTOList); + } + + @BussinessLog(value = "设备分组分页查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "分页查询") + @GetMapping(value = "/listPage") + public ResponseDataDTO> listPage(BusDeviceGroupVO busDeviceGroupVO) { + Page page = PageFactory.defaultPage(); + QueryWrapper query = busDeviceGroupVO.genQuery(); + List list = busDeviceGroupService.selectBusDeviceGroupPage(page, query); + page.setRecords(list); + return ResponseDataDTO.success(super.packForBT(page)); + } + + @BussinessLog(value = "设备分组新增", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "新增接口") + @PostMapping(value = "/add") + public ResponseDataDTO add(@RequestBody BusDeviceGroup busDeviceGroup) { + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + busDeviceGroup.setCreateId(user.getId()); + busDeviceGroup.setCreateTime(new Date()); + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.save(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组修改", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @PostMapping(value = "/update") + public ResponseDataDTO update(@RequestBody BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.updateById(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组删除", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "删除接口") + @GetMapping(value = "/delete") + public ResponseDataDTO delete(String id) { + busDeviceGroupService.removeById(id); + return ResponseDataDTO.success(); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { + busDeviceGroupService.removeByIds(ids.getIds()); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组详情查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "详情查询") + @GetMapping(value = "/detail") + public ResponseDataDTO detail(String id) { + return ResponseDataDTO.success(busDeviceGroupService.getById(id)); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java new file mode 100644 index 0000000..9d3726f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.device.dao; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import java.util.List; +/** + *

+ * 设备分组管理信息 Mapper 接口 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface BusDeviceGroupMapper extends BaseMapper { +/** +* 设备分组管理信息 分页检索 +*/ +List selectBusDeviceGroupPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml new file mode 100644 index 0000000..a6dd84f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + id + , + create_time as createTime , + update_time as updateTime , + group_name as groupName , + create_id as createId , + dept_id as deptId + + + a + . + id + , + a.create_time + as createTime , + a.update_time + as updateTime , + a.group_name + as groupName , + a.create_id + as createId , + a.dept_id + as deptId + + + + + + and group_name like concat('%',#{request.groupName},'%') + + + and dept_id = #{request.deptId} + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java new file mode 100644 index 0000000..a821e92 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dictmap; + +import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap; + +public class DeviceGroupQueryDict extends AbstractDictMap { + + @Override + public void init() { + put("id", "主键"); + put("deptId", "所属组织"); + put("groupName", "分组名称"); + + put("deptName", "所属单位"); + } + + @Override + protected void initBeWrapped() { + + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java new file mode 100644 index 0000000..d8d1712 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.device.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + + +/** + * 设备分组管理信息对象 bus_device_group + * + * @author lwh + * @date 2025-06-11 + */ +@Data +@TableName("bus_device_group") +public class BusDeviceGroup extends Model { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键", dataType = "Long") + @TableField("id") + private Long id; + + @ApiModelProperty(value = "创建时间", dataType = "Date") + @TableField("create_time") + private Date createTime; + + @ApiModelProperty(value = "修改时间", dataType = "Date") + @TableField("update_time") + private Date updateTime; + + @ApiModelProperty(value = "分组名称", dataType = "String") + @TableField("group_name") + private String groupName; + + @ApiModelProperty(value = "创建人", dataType = "Long") + @TableField("create_id") + private Long createId; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; + @TableField(exist = false) + private String deptName; + + @Override + public String toString() { + return "BusDeviceGroup{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "groupName=" + groupName + + "createId=" + createId + + "deptId=" + deptId + + "}"; + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java new file mode 100644 index 0000000..d2cee5c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; + +import java.util.List; + + +/** + *

+ * 设备分组管理信息 服务类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface IBusDeviceGroupService extends IService { + /** + * 设备分组管理信息 分页检索 + */ + List selectBusDeviceGroupPage(Page page, QueryWrapper query); + + /** + * 树结构查询 + * + * @return + */ + List groupTree(); + + DeptDTO convertDeptDTO(BusDeviceGroup group); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java new file mode 100644 index 0000000..77c14a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.device.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dictmap.DeviceGroupQueryDict; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.vo.BusDeviceGroupVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; + +/** + * 设备分组管理信息Controller + * + * @author lwh + * @date 2025-06-11 + */ +@Api(tags = "设备分组管理信息") +@RestController +@RequestMapping("/device/group") +public class BusDeviceGroupController extends BaseController { + + private final IBusDeviceGroupService busDeviceGroupService; + private final AbstractPermissionContext abstractPermissionContext; + + public BusDeviceGroupController(IBusDeviceGroupService busDeviceGroupService, AbstractPermissionContext abstractPermissionContext) { + this.busDeviceGroupService = busDeviceGroupService; + this.abstractPermissionContext = abstractPermissionContext; + } + + @ApiOperation(value = "列表查询") + @GetMapping(value = "/list") + public ResponseDataDTO> list(BusDeviceGroupVO busDeviceGroupVO) { + QueryWrapper query = busDeviceGroupVO.genQuery(); + return ResponseDataDTO.success(busDeviceGroupService.list(query)); + } + + @ApiOperation(value = "分组树结构查询") + @BussinessLog(value = "分组树结构查询") + @GetMapping(value = "/tree") + public ResponseDataDTO> groupTree() { + List groupDTOList = busDeviceGroupService.groupTree(); + return ResponseDataDTO.success(groupDTOList); + } + + @BussinessLog(value = "设备分组分页查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "分页查询") + @GetMapping(value = "/listPage") + public ResponseDataDTO> listPage(BusDeviceGroupVO busDeviceGroupVO) { + Page page = PageFactory.defaultPage(); + QueryWrapper query = busDeviceGroupVO.genQuery(); + List list = busDeviceGroupService.selectBusDeviceGroupPage(page, query); + page.setRecords(list); + return ResponseDataDTO.success(super.packForBT(page)); + } + + @BussinessLog(value = "设备分组新增", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "新增接口") + @PostMapping(value = "/add") + public ResponseDataDTO add(@RequestBody BusDeviceGroup busDeviceGroup) { + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + busDeviceGroup.setCreateId(user.getId()); + busDeviceGroup.setCreateTime(new Date()); + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.save(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组修改", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @PostMapping(value = "/update") + public ResponseDataDTO update(@RequestBody BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.updateById(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组删除", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "删除接口") + @GetMapping(value = "/delete") + public ResponseDataDTO delete(String id) { + busDeviceGroupService.removeById(id); + return ResponseDataDTO.success(); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { + busDeviceGroupService.removeByIds(ids.getIds()); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组详情查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "详情查询") + @GetMapping(value = "/detail") + public ResponseDataDTO detail(String id) { + return ResponseDataDTO.success(busDeviceGroupService.getById(id)); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java new file mode 100644 index 0000000..9d3726f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.device.dao; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import java.util.List; +/** + *

+ * 设备分组管理信息 Mapper 接口 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface BusDeviceGroupMapper extends BaseMapper { +/** +* 设备分组管理信息 分页检索 +*/ +List selectBusDeviceGroupPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml new file mode 100644 index 0000000..a6dd84f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + id + , + create_time as createTime , + update_time as updateTime , + group_name as groupName , + create_id as createId , + dept_id as deptId + + + a + . + id + , + a.create_time + as createTime , + a.update_time + as updateTime , + a.group_name + as groupName , + a.create_id + as createId , + a.dept_id + as deptId + + + + + + and group_name like concat('%',#{request.groupName},'%') + + + and dept_id = #{request.deptId} + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java new file mode 100644 index 0000000..a821e92 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dictmap; + +import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap; + +public class DeviceGroupQueryDict extends AbstractDictMap { + + @Override + public void init() { + put("id", "主键"); + put("deptId", "所属组织"); + put("groupName", "分组名称"); + + put("deptName", "所属单位"); + } + + @Override + protected void initBeWrapped() { + + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java new file mode 100644 index 0000000..d8d1712 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.device.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + + +/** + * 设备分组管理信息对象 bus_device_group + * + * @author lwh + * @date 2025-06-11 + */ +@Data +@TableName("bus_device_group") +public class BusDeviceGroup extends Model { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键", dataType = "Long") + @TableField("id") + private Long id; + + @ApiModelProperty(value = "创建时间", dataType = "Date") + @TableField("create_time") + private Date createTime; + + @ApiModelProperty(value = "修改时间", dataType = "Date") + @TableField("update_time") + private Date updateTime; + + @ApiModelProperty(value = "分组名称", dataType = "String") + @TableField("group_name") + private String groupName; + + @ApiModelProperty(value = "创建人", dataType = "Long") + @TableField("create_id") + private Long createId; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; + @TableField(exist = false) + private String deptName; + + @Override + public String toString() { + return "BusDeviceGroup{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "groupName=" + groupName + + "createId=" + createId + + "deptId=" + deptId + + "}"; + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java new file mode 100644 index 0000000..d2cee5c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; + +import java.util.List; + + +/** + *

+ * 设备分组管理信息 服务类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface IBusDeviceGroupService extends IService { + /** + * 设备分组管理信息 分页检索 + */ + List selectBusDeviceGroupPage(Page page, QueryWrapper query); + + /** + * 树结构查询 + * + * @return + */ + List groupTree(); + + DeptDTO convertDeptDTO(BusDeviceGroup group); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java new file mode 100644 index 0000000..a6f08b7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java @@ -0,0 +1,139 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractAuthService; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.modular.data.constants.DataConstants; +import com.casic.missiles.modular.device.dao.BusDeviceGroupMapper; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; +import com.casic.missiles.modular.system.model.Dept; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.data.constants.DataConstants.NODE_TYPE_DEPT; + + +/** + *

+ * 设备分组管理信息 服务实现类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +@Service +public class BusDeviceGroupServiceImpl extends ServiceImpl implements IBusDeviceGroupService { + @Resource + private AbstractDeptService deptService; + + @Override + public List selectBusDeviceGroupPage(Page page, QueryWrapper query) { + List list = this.baseMapper.selectBusDeviceGroupPage(page, query); + list.forEach(this::wrapperInfo); + return list; + } + + @Override + public List groupTree() { + List deptList = deviceDept(); + + List deptDTOS = new ArrayList<>(); + //树节点根 + List rootIds = new ArrayList<>(); + Set normalIds = new HashSet<>(); + + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setId(dept.getId()); + deptDTO.setPid(dept.getPid()); + deptDTO.setFullName(dept.getFullName()); + deptDTO.setName(dept.getSimpleName()); + deptDTO.setType(NODE_TYPE_DEPT); + + normalIds.add(dept.getId()); + deptDTOS.add(deptDTO); + + + //查询该组织下分组信息 + LambdaQueryWrapper deviceQuery = new LambdaQueryWrapper<>(); + deviceQuery.eq(BusDeviceGroup::getDeptId, deptDTO.getId()); + + deviceQuery.orderByAsc(BusDeviceGroup::getGroupName); + List deviceInfos = this.list(deviceQuery); + List deptDTOList = new ArrayList<>(); + for (BusDeviceGroup group : deviceInfos) { + DeptDTO deptDto = this.convertDeptDTO(group); + deptDTOList.add(deptDto); + } + deptDTO.setChildrenNodes(deptDTOList); + } + + for (DeptDTO deptDTO : deptDTOS) { + if (!normalIds.contains(deptDTO.getPid())) { + rootIds.add(deptDTO.getPid()); + } + } + + //过滤根节点 + DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); + List newTree = new ArrayList<>(); + rootIds = rootIds.stream().distinct().collect(Collectors.toList()); + for (Long rootId : rootIds) { + abstractTreeBuildFactory.setRootId(rootId + ""); + newTree.addAll(abstractTreeBuildFactory.doTreeBuild(deptDTOS)); + } + return newTree; + } + + public DeptDTO convertDeptDTO(BusDeviceGroup group) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setType(DataConstants.NODE_TYPE_GROUP); + deptDTO.setId(group.getId()); + deptDTO.setPid(group.getDeptId()); + deptDTO.setName(group.getGroupName()); + deptDTO.setGroup(group); + return deptDTO; + } + + @Resource + private AbstractAuthService authService; + + private List deviceDept() { + //查询可见组织 + DataScope scope = authService.getLoginUserDataScope(); + AuthUser user = authService.getLoginUser(); + + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); + deptQuery.inSql(Dept::getId, "select dept_id from bus_device_info "); + if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums().getCode())) { + deptQuery.in(Dept::getId, scope.getDeptIds()); + } + deptQuery.orderByAsc(Dept::getNum); + + List deptList = deptService.list(deptQuery); + return deptList; + } + + @Override + public List list() { + List list = super.list(); + list.forEach(this::wrapperInfo); + return list; + } + + private void wrapperInfo(BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setDeptName(deptService.getDeptName(busDeviceGroup.getDeptId())); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java new file mode 100644 index 0000000..77c14a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.device.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dictmap.DeviceGroupQueryDict; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.vo.BusDeviceGroupVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; + +/** + * 设备分组管理信息Controller + * + * @author lwh + * @date 2025-06-11 + */ +@Api(tags = "设备分组管理信息") +@RestController +@RequestMapping("/device/group") +public class BusDeviceGroupController extends BaseController { + + private final IBusDeviceGroupService busDeviceGroupService; + private final AbstractPermissionContext abstractPermissionContext; + + public BusDeviceGroupController(IBusDeviceGroupService busDeviceGroupService, AbstractPermissionContext abstractPermissionContext) { + this.busDeviceGroupService = busDeviceGroupService; + this.abstractPermissionContext = abstractPermissionContext; + } + + @ApiOperation(value = "列表查询") + @GetMapping(value = "/list") + public ResponseDataDTO> list(BusDeviceGroupVO busDeviceGroupVO) { + QueryWrapper query = busDeviceGroupVO.genQuery(); + return ResponseDataDTO.success(busDeviceGroupService.list(query)); + } + + @ApiOperation(value = "分组树结构查询") + @BussinessLog(value = "分组树结构查询") + @GetMapping(value = "/tree") + public ResponseDataDTO> groupTree() { + List groupDTOList = busDeviceGroupService.groupTree(); + return ResponseDataDTO.success(groupDTOList); + } + + @BussinessLog(value = "设备分组分页查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "分页查询") + @GetMapping(value = "/listPage") + public ResponseDataDTO> listPage(BusDeviceGroupVO busDeviceGroupVO) { + Page page = PageFactory.defaultPage(); + QueryWrapper query = busDeviceGroupVO.genQuery(); + List list = busDeviceGroupService.selectBusDeviceGroupPage(page, query); + page.setRecords(list); + return ResponseDataDTO.success(super.packForBT(page)); + } + + @BussinessLog(value = "设备分组新增", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "新增接口") + @PostMapping(value = "/add") + public ResponseDataDTO add(@RequestBody BusDeviceGroup busDeviceGroup) { + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + busDeviceGroup.setCreateId(user.getId()); + busDeviceGroup.setCreateTime(new Date()); + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.save(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组修改", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @PostMapping(value = "/update") + public ResponseDataDTO update(@RequestBody BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.updateById(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组删除", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "删除接口") + @GetMapping(value = "/delete") + public ResponseDataDTO delete(String id) { + busDeviceGroupService.removeById(id); + return ResponseDataDTO.success(); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { + busDeviceGroupService.removeByIds(ids.getIds()); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组详情查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "详情查询") + @GetMapping(value = "/detail") + public ResponseDataDTO detail(String id) { + return ResponseDataDTO.success(busDeviceGroupService.getById(id)); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java new file mode 100644 index 0000000..9d3726f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.device.dao; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import java.util.List; +/** + *

+ * 设备分组管理信息 Mapper 接口 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface BusDeviceGroupMapper extends BaseMapper { +/** +* 设备分组管理信息 分页检索 +*/ +List selectBusDeviceGroupPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml new file mode 100644 index 0000000..a6dd84f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + id + , + create_time as createTime , + update_time as updateTime , + group_name as groupName , + create_id as createId , + dept_id as deptId + + + a + . + id + , + a.create_time + as createTime , + a.update_time + as updateTime , + a.group_name + as groupName , + a.create_id + as createId , + a.dept_id + as deptId + + + + + + and group_name like concat('%',#{request.groupName},'%') + + + and dept_id = #{request.deptId} + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java new file mode 100644 index 0000000..a821e92 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dictmap; + +import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap; + +public class DeviceGroupQueryDict extends AbstractDictMap { + + @Override + public void init() { + put("id", "主键"); + put("deptId", "所属组织"); + put("groupName", "分组名称"); + + put("deptName", "所属单位"); + } + + @Override + protected void initBeWrapped() { + + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java new file mode 100644 index 0000000..d8d1712 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.device.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + + +/** + * 设备分组管理信息对象 bus_device_group + * + * @author lwh + * @date 2025-06-11 + */ +@Data +@TableName("bus_device_group") +public class BusDeviceGroup extends Model { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键", dataType = "Long") + @TableField("id") + private Long id; + + @ApiModelProperty(value = "创建时间", dataType = "Date") + @TableField("create_time") + private Date createTime; + + @ApiModelProperty(value = "修改时间", dataType = "Date") + @TableField("update_time") + private Date updateTime; + + @ApiModelProperty(value = "分组名称", dataType = "String") + @TableField("group_name") + private String groupName; + + @ApiModelProperty(value = "创建人", dataType = "Long") + @TableField("create_id") + private Long createId; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; + @TableField(exist = false) + private String deptName; + + @Override + public String toString() { + return "BusDeviceGroup{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "groupName=" + groupName + + "createId=" + createId + + "deptId=" + deptId + + "}"; + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java new file mode 100644 index 0000000..d2cee5c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; + +import java.util.List; + + +/** + *

+ * 设备分组管理信息 服务类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface IBusDeviceGroupService extends IService { + /** + * 设备分组管理信息 分页检索 + */ + List selectBusDeviceGroupPage(Page page, QueryWrapper query); + + /** + * 树结构查询 + * + * @return + */ + List groupTree(); + + DeptDTO convertDeptDTO(BusDeviceGroup group); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java new file mode 100644 index 0000000..a6f08b7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java @@ -0,0 +1,139 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractAuthService; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.modular.data.constants.DataConstants; +import com.casic.missiles.modular.device.dao.BusDeviceGroupMapper; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; +import com.casic.missiles.modular.system.model.Dept; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.data.constants.DataConstants.NODE_TYPE_DEPT; + + +/** + *

+ * 设备分组管理信息 服务实现类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +@Service +public class BusDeviceGroupServiceImpl extends ServiceImpl implements IBusDeviceGroupService { + @Resource + private AbstractDeptService deptService; + + @Override + public List selectBusDeviceGroupPage(Page page, QueryWrapper query) { + List list = this.baseMapper.selectBusDeviceGroupPage(page, query); + list.forEach(this::wrapperInfo); + return list; + } + + @Override + public List groupTree() { + List deptList = deviceDept(); + + List deptDTOS = new ArrayList<>(); + //树节点根 + List rootIds = new ArrayList<>(); + Set normalIds = new HashSet<>(); + + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setId(dept.getId()); + deptDTO.setPid(dept.getPid()); + deptDTO.setFullName(dept.getFullName()); + deptDTO.setName(dept.getSimpleName()); + deptDTO.setType(NODE_TYPE_DEPT); + + normalIds.add(dept.getId()); + deptDTOS.add(deptDTO); + + + //查询该组织下分组信息 + LambdaQueryWrapper deviceQuery = new LambdaQueryWrapper<>(); + deviceQuery.eq(BusDeviceGroup::getDeptId, deptDTO.getId()); + + deviceQuery.orderByAsc(BusDeviceGroup::getGroupName); + List deviceInfos = this.list(deviceQuery); + List deptDTOList = new ArrayList<>(); + for (BusDeviceGroup group : deviceInfos) { + DeptDTO deptDto = this.convertDeptDTO(group); + deptDTOList.add(deptDto); + } + deptDTO.setChildrenNodes(deptDTOList); + } + + for (DeptDTO deptDTO : deptDTOS) { + if (!normalIds.contains(deptDTO.getPid())) { + rootIds.add(deptDTO.getPid()); + } + } + + //过滤根节点 + DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); + List newTree = new ArrayList<>(); + rootIds = rootIds.stream().distinct().collect(Collectors.toList()); + for (Long rootId : rootIds) { + abstractTreeBuildFactory.setRootId(rootId + ""); + newTree.addAll(abstractTreeBuildFactory.doTreeBuild(deptDTOS)); + } + return newTree; + } + + public DeptDTO convertDeptDTO(BusDeviceGroup group) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setType(DataConstants.NODE_TYPE_GROUP); + deptDTO.setId(group.getId()); + deptDTO.setPid(group.getDeptId()); + deptDTO.setName(group.getGroupName()); + deptDTO.setGroup(group); + return deptDTO; + } + + @Resource + private AbstractAuthService authService; + + private List deviceDept() { + //查询可见组织 + DataScope scope = authService.getLoginUserDataScope(); + AuthUser user = authService.getLoginUser(); + + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); + deptQuery.inSql(Dept::getId, "select dept_id from bus_device_info "); + if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums().getCode())) { + deptQuery.in(Dept::getId, scope.getDeptIds()); + } + deptQuery.orderByAsc(Dept::getNum); + + List deptList = deptService.list(deptQuery); + return deptList; + } + + @Override + public List list() { + List list = super.list(); + list.forEach(this::wrapperInfo); + return list; + } + + private void wrapperInfo(BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setDeptName(deptService.getDeptName(busDeviceGroup.getDeptId())); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java new file mode 100644 index 0000000..413d7ac --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.device.vo; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 设备分组管理信息对象VO + * + * @author lwh + * @date 2025-06-11 + */ +@Data +public class BusDeviceGroupVO { + private static final long serialVersionUID = 1L; + + + @ApiModelProperty(value = "分组名称", dataType = "String") + private String groupName; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + private Long deptId; + + public QueryWrapper genQuery() { + QueryWrapper query = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(groupName)) { + query.like("group_name", groupName); + } + if (deptId != null) { + query.eq("dept_id", deptId); + } + return query; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java new file mode 100644 index 0000000..77c14a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.device.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dictmap.DeviceGroupQueryDict; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.vo.BusDeviceGroupVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; + +/** + * 设备分组管理信息Controller + * + * @author lwh + * @date 2025-06-11 + */ +@Api(tags = "设备分组管理信息") +@RestController +@RequestMapping("/device/group") +public class BusDeviceGroupController extends BaseController { + + private final IBusDeviceGroupService busDeviceGroupService; + private final AbstractPermissionContext abstractPermissionContext; + + public BusDeviceGroupController(IBusDeviceGroupService busDeviceGroupService, AbstractPermissionContext abstractPermissionContext) { + this.busDeviceGroupService = busDeviceGroupService; + this.abstractPermissionContext = abstractPermissionContext; + } + + @ApiOperation(value = "列表查询") + @GetMapping(value = "/list") + public ResponseDataDTO> list(BusDeviceGroupVO busDeviceGroupVO) { + QueryWrapper query = busDeviceGroupVO.genQuery(); + return ResponseDataDTO.success(busDeviceGroupService.list(query)); + } + + @ApiOperation(value = "分组树结构查询") + @BussinessLog(value = "分组树结构查询") + @GetMapping(value = "/tree") + public ResponseDataDTO> groupTree() { + List groupDTOList = busDeviceGroupService.groupTree(); + return ResponseDataDTO.success(groupDTOList); + } + + @BussinessLog(value = "设备分组分页查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "分页查询") + @GetMapping(value = "/listPage") + public ResponseDataDTO> listPage(BusDeviceGroupVO busDeviceGroupVO) { + Page page = PageFactory.defaultPage(); + QueryWrapper query = busDeviceGroupVO.genQuery(); + List list = busDeviceGroupService.selectBusDeviceGroupPage(page, query); + page.setRecords(list); + return ResponseDataDTO.success(super.packForBT(page)); + } + + @BussinessLog(value = "设备分组新增", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "新增接口") + @PostMapping(value = "/add") + public ResponseDataDTO add(@RequestBody BusDeviceGroup busDeviceGroup) { + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + busDeviceGroup.setCreateId(user.getId()); + busDeviceGroup.setCreateTime(new Date()); + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.save(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组修改", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @PostMapping(value = "/update") + public ResponseDataDTO update(@RequestBody BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.updateById(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组删除", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "删除接口") + @GetMapping(value = "/delete") + public ResponseDataDTO delete(String id) { + busDeviceGroupService.removeById(id); + return ResponseDataDTO.success(); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { + busDeviceGroupService.removeByIds(ids.getIds()); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组详情查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "详情查询") + @GetMapping(value = "/detail") + public ResponseDataDTO detail(String id) { + return ResponseDataDTO.success(busDeviceGroupService.getById(id)); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java new file mode 100644 index 0000000..9d3726f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.device.dao; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import java.util.List; +/** + *

+ * 设备分组管理信息 Mapper 接口 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface BusDeviceGroupMapper extends BaseMapper { +/** +* 设备分组管理信息 分页检索 +*/ +List selectBusDeviceGroupPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml new file mode 100644 index 0000000..a6dd84f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + id + , + create_time as createTime , + update_time as updateTime , + group_name as groupName , + create_id as createId , + dept_id as deptId + + + a + . + id + , + a.create_time + as createTime , + a.update_time + as updateTime , + a.group_name + as groupName , + a.create_id + as createId , + a.dept_id + as deptId + + + + + + and group_name like concat('%',#{request.groupName},'%') + + + and dept_id = #{request.deptId} + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java new file mode 100644 index 0000000..a821e92 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dictmap; + +import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap; + +public class DeviceGroupQueryDict extends AbstractDictMap { + + @Override + public void init() { + put("id", "主键"); + put("deptId", "所属组织"); + put("groupName", "分组名称"); + + put("deptName", "所属单位"); + } + + @Override + protected void initBeWrapped() { + + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java new file mode 100644 index 0000000..d8d1712 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.device.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + + +/** + * 设备分组管理信息对象 bus_device_group + * + * @author lwh + * @date 2025-06-11 + */ +@Data +@TableName("bus_device_group") +public class BusDeviceGroup extends Model { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键", dataType = "Long") + @TableField("id") + private Long id; + + @ApiModelProperty(value = "创建时间", dataType = "Date") + @TableField("create_time") + private Date createTime; + + @ApiModelProperty(value = "修改时间", dataType = "Date") + @TableField("update_time") + private Date updateTime; + + @ApiModelProperty(value = "分组名称", dataType = "String") + @TableField("group_name") + private String groupName; + + @ApiModelProperty(value = "创建人", dataType = "Long") + @TableField("create_id") + private Long createId; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; + @TableField(exist = false) + private String deptName; + + @Override + public String toString() { + return "BusDeviceGroup{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "groupName=" + groupName + + "createId=" + createId + + "deptId=" + deptId + + "}"; + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java new file mode 100644 index 0000000..d2cee5c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; + +import java.util.List; + + +/** + *

+ * 设备分组管理信息 服务类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface IBusDeviceGroupService extends IService { + /** + * 设备分组管理信息 分页检索 + */ + List selectBusDeviceGroupPage(Page page, QueryWrapper query); + + /** + * 树结构查询 + * + * @return + */ + List groupTree(); + + DeptDTO convertDeptDTO(BusDeviceGroup group); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java new file mode 100644 index 0000000..a6f08b7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java @@ -0,0 +1,139 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractAuthService; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.modular.data.constants.DataConstants; +import com.casic.missiles.modular.device.dao.BusDeviceGroupMapper; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; +import com.casic.missiles.modular.system.model.Dept; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.data.constants.DataConstants.NODE_TYPE_DEPT; + + +/** + *

+ * 设备分组管理信息 服务实现类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +@Service +public class BusDeviceGroupServiceImpl extends ServiceImpl implements IBusDeviceGroupService { + @Resource + private AbstractDeptService deptService; + + @Override + public List selectBusDeviceGroupPage(Page page, QueryWrapper query) { + List list = this.baseMapper.selectBusDeviceGroupPage(page, query); + list.forEach(this::wrapperInfo); + return list; + } + + @Override + public List groupTree() { + List deptList = deviceDept(); + + List deptDTOS = new ArrayList<>(); + //树节点根 + List rootIds = new ArrayList<>(); + Set normalIds = new HashSet<>(); + + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setId(dept.getId()); + deptDTO.setPid(dept.getPid()); + deptDTO.setFullName(dept.getFullName()); + deptDTO.setName(dept.getSimpleName()); + deptDTO.setType(NODE_TYPE_DEPT); + + normalIds.add(dept.getId()); + deptDTOS.add(deptDTO); + + + //查询该组织下分组信息 + LambdaQueryWrapper deviceQuery = new LambdaQueryWrapper<>(); + deviceQuery.eq(BusDeviceGroup::getDeptId, deptDTO.getId()); + + deviceQuery.orderByAsc(BusDeviceGroup::getGroupName); + List deviceInfos = this.list(deviceQuery); + List deptDTOList = new ArrayList<>(); + for (BusDeviceGroup group : deviceInfos) { + DeptDTO deptDto = this.convertDeptDTO(group); + deptDTOList.add(deptDto); + } + deptDTO.setChildrenNodes(deptDTOList); + } + + for (DeptDTO deptDTO : deptDTOS) { + if (!normalIds.contains(deptDTO.getPid())) { + rootIds.add(deptDTO.getPid()); + } + } + + //过滤根节点 + DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); + List newTree = new ArrayList<>(); + rootIds = rootIds.stream().distinct().collect(Collectors.toList()); + for (Long rootId : rootIds) { + abstractTreeBuildFactory.setRootId(rootId + ""); + newTree.addAll(abstractTreeBuildFactory.doTreeBuild(deptDTOS)); + } + return newTree; + } + + public DeptDTO convertDeptDTO(BusDeviceGroup group) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setType(DataConstants.NODE_TYPE_GROUP); + deptDTO.setId(group.getId()); + deptDTO.setPid(group.getDeptId()); + deptDTO.setName(group.getGroupName()); + deptDTO.setGroup(group); + return deptDTO; + } + + @Resource + private AbstractAuthService authService; + + private List deviceDept() { + //查询可见组织 + DataScope scope = authService.getLoginUserDataScope(); + AuthUser user = authService.getLoginUser(); + + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); + deptQuery.inSql(Dept::getId, "select dept_id from bus_device_info "); + if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums().getCode())) { + deptQuery.in(Dept::getId, scope.getDeptIds()); + } + deptQuery.orderByAsc(Dept::getNum); + + List deptList = deptService.list(deptQuery); + return deptList; + } + + @Override + public List list() { + List list = super.list(); + list.forEach(this::wrapperInfo); + return list; + } + + private void wrapperInfo(BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setDeptName(deptService.getDeptName(busDeviceGroup.getDeptId())); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java new file mode 100644 index 0000000..413d7ac --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.device.vo; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 设备分组管理信息对象VO + * + * @author lwh + * @date 2025-06-11 + */ +@Data +public class BusDeviceGroupVO { + private static final long serialVersionUID = 1L; + + + @ApiModelProperty(value = "分组名称", dataType = "String") + private String groupName; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + private Long deptId; + + public QueryWrapper genQuery() { + QueryWrapper query = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(groupName)) { + query.like("group_name", groupName); + } + if (deptId != null) { + query.eq("dept_id", deptId); + } + return query; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java new file mode 100644 index 0000000..477435e --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java @@ -0,0 +1,163 @@ +package com.casic.missiles.modular.device.dto.risk; + +import cn.hutool.core.convert.Convert; +import com.casic.missiles.modular.device.model.RiskPointInfo; +import lombok.Data; + +@Data +public class SyncRiskDTO { + /** + * 主键 + */ + private String id; + private String name; + /** + * 重大风险 + * 风险等级 + */ + private String hazardLevel; + /** + * 危险因素 + */ + private String riskFactors; + /** + * 所属单位 + */ + private String affiliatedUnit; + /** + * 所属部门 + */ + private String department; + + /** + * 定员 + */ + private String staffing; + + /** + * 定量 + */ + private String ration; + + /** + * 地理位置 + */ + private String geographicalPosition; + + /** + * 责任人 + */ + private String personLiable; + + /** + * 现场负责人 + */ + private String siteLeader; + + /** + * 主要设备、设施设计制造单位 + */ + private String zysbZzdw; + + /** + * 所在单位 + */ + private String szdw; + + /** + * 作业人数 + */ + private String numberOperators; + + /** + * 主要性能参数 + */ + private String mainPerformanceParameters; + + /** + * 工作环境参数 + */ + private String workingEnvironmentParameters; + + /** + * 安装单位 + */ + private String installationUnit; + + /** + * 投产日期 + */ + private String productionDate; + + /** + * 设备总数 + */ + private String totalEquipment; + + /** + * 备注 + */ + private String note; + + /** + * 创建用户 + */ + private String createUser; + private String createTime; + private String updateUser; + private String updateTime; + /** + * 是否删除0:否;1:是(接口已过滤掉1的数据) + */ + private Integer isDel; + + /** + * 行政区域 + */ + private String xzqy; + /** + * 街道 + */ + private String jdxx; + + /** + * 楼房 + */ + private String loufang; + + /** + * 楼层 + */ + private String louceng; + + /** + * 房间 + */ + private String roomName; + /** + * 所属单位编码 + */ + private String affiliatedUnitsCode; + + /** + * 危险性质 + */ + private String hazardousNature; + + public RiskPointInfo convertToRisk(RiskPointInfo pointInfo) { + //风险点缺少密级 + pointInfo.setSecretLevel("1"); + // hazardLevel 是否有字典值? + + if (department != null) { + pointInfo.setDeptId(Convert.toLong(department)); + } + pointInfo.setNature(hazardousNature); + pointInfo.setRiskName(name); + pointInfo.setAddress(geographicalPosition); + pointInfo.setTargetId(id); + //默认类型为1 + pointInfo.setRiskType(1); + return pointInfo; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java new file mode 100644 index 0000000..77c14a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.device.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dictmap.DeviceGroupQueryDict; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.vo.BusDeviceGroupVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; + +/** + * 设备分组管理信息Controller + * + * @author lwh + * @date 2025-06-11 + */ +@Api(tags = "设备分组管理信息") +@RestController +@RequestMapping("/device/group") +public class BusDeviceGroupController extends BaseController { + + private final IBusDeviceGroupService busDeviceGroupService; + private final AbstractPermissionContext abstractPermissionContext; + + public BusDeviceGroupController(IBusDeviceGroupService busDeviceGroupService, AbstractPermissionContext abstractPermissionContext) { + this.busDeviceGroupService = busDeviceGroupService; + this.abstractPermissionContext = abstractPermissionContext; + } + + @ApiOperation(value = "列表查询") + @GetMapping(value = "/list") + public ResponseDataDTO> list(BusDeviceGroupVO busDeviceGroupVO) { + QueryWrapper query = busDeviceGroupVO.genQuery(); + return ResponseDataDTO.success(busDeviceGroupService.list(query)); + } + + @ApiOperation(value = "分组树结构查询") + @BussinessLog(value = "分组树结构查询") + @GetMapping(value = "/tree") + public ResponseDataDTO> groupTree() { + List groupDTOList = busDeviceGroupService.groupTree(); + return ResponseDataDTO.success(groupDTOList); + } + + @BussinessLog(value = "设备分组分页查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "分页查询") + @GetMapping(value = "/listPage") + public ResponseDataDTO> listPage(BusDeviceGroupVO busDeviceGroupVO) { + Page page = PageFactory.defaultPage(); + QueryWrapper query = busDeviceGroupVO.genQuery(); + List list = busDeviceGroupService.selectBusDeviceGroupPage(page, query); + page.setRecords(list); + return ResponseDataDTO.success(super.packForBT(page)); + } + + @BussinessLog(value = "设备分组新增", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "新增接口") + @PostMapping(value = "/add") + public ResponseDataDTO add(@RequestBody BusDeviceGroup busDeviceGroup) { + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + busDeviceGroup.setCreateId(user.getId()); + busDeviceGroup.setCreateTime(new Date()); + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.save(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组修改", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @PostMapping(value = "/update") + public ResponseDataDTO update(@RequestBody BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.updateById(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组删除", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "删除接口") + @GetMapping(value = "/delete") + public ResponseDataDTO delete(String id) { + busDeviceGroupService.removeById(id); + return ResponseDataDTO.success(); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { + busDeviceGroupService.removeByIds(ids.getIds()); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组详情查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "详情查询") + @GetMapping(value = "/detail") + public ResponseDataDTO detail(String id) { + return ResponseDataDTO.success(busDeviceGroupService.getById(id)); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java new file mode 100644 index 0000000..9d3726f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.device.dao; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import java.util.List; +/** + *

+ * 设备分组管理信息 Mapper 接口 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface BusDeviceGroupMapper extends BaseMapper { +/** +* 设备分组管理信息 分页检索 +*/ +List selectBusDeviceGroupPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml new file mode 100644 index 0000000..a6dd84f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + id + , + create_time as createTime , + update_time as updateTime , + group_name as groupName , + create_id as createId , + dept_id as deptId + + + a + . + id + , + a.create_time + as createTime , + a.update_time + as updateTime , + a.group_name + as groupName , + a.create_id + as createId , + a.dept_id + as deptId + + + + + + and group_name like concat('%',#{request.groupName},'%') + + + and dept_id = #{request.deptId} + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java new file mode 100644 index 0000000..a821e92 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dictmap; + +import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap; + +public class DeviceGroupQueryDict extends AbstractDictMap { + + @Override + public void init() { + put("id", "主键"); + put("deptId", "所属组织"); + put("groupName", "分组名称"); + + put("deptName", "所属单位"); + } + + @Override + protected void initBeWrapped() { + + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java new file mode 100644 index 0000000..d8d1712 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.device.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + + +/** + * 设备分组管理信息对象 bus_device_group + * + * @author lwh + * @date 2025-06-11 + */ +@Data +@TableName("bus_device_group") +public class BusDeviceGroup extends Model { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键", dataType = "Long") + @TableField("id") + private Long id; + + @ApiModelProperty(value = "创建时间", dataType = "Date") + @TableField("create_time") + private Date createTime; + + @ApiModelProperty(value = "修改时间", dataType = "Date") + @TableField("update_time") + private Date updateTime; + + @ApiModelProperty(value = "分组名称", dataType = "String") + @TableField("group_name") + private String groupName; + + @ApiModelProperty(value = "创建人", dataType = "Long") + @TableField("create_id") + private Long createId; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; + @TableField(exist = false) + private String deptName; + + @Override + public String toString() { + return "BusDeviceGroup{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "groupName=" + groupName + + "createId=" + createId + + "deptId=" + deptId + + "}"; + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java new file mode 100644 index 0000000..d2cee5c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; + +import java.util.List; + + +/** + *

+ * 设备分组管理信息 服务类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface IBusDeviceGroupService extends IService { + /** + * 设备分组管理信息 分页检索 + */ + List selectBusDeviceGroupPage(Page page, QueryWrapper query); + + /** + * 树结构查询 + * + * @return + */ + List groupTree(); + + DeptDTO convertDeptDTO(BusDeviceGroup group); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java new file mode 100644 index 0000000..a6f08b7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java @@ -0,0 +1,139 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractAuthService; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.modular.data.constants.DataConstants; +import com.casic.missiles.modular.device.dao.BusDeviceGroupMapper; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; +import com.casic.missiles.modular.system.model.Dept; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.data.constants.DataConstants.NODE_TYPE_DEPT; + + +/** + *

+ * 设备分组管理信息 服务实现类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +@Service +public class BusDeviceGroupServiceImpl extends ServiceImpl implements IBusDeviceGroupService { + @Resource + private AbstractDeptService deptService; + + @Override + public List selectBusDeviceGroupPage(Page page, QueryWrapper query) { + List list = this.baseMapper.selectBusDeviceGroupPage(page, query); + list.forEach(this::wrapperInfo); + return list; + } + + @Override + public List groupTree() { + List deptList = deviceDept(); + + List deptDTOS = new ArrayList<>(); + //树节点根 + List rootIds = new ArrayList<>(); + Set normalIds = new HashSet<>(); + + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setId(dept.getId()); + deptDTO.setPid(dept.getPid()); + deptDTO.setFullName(dept.getFullName()); + deptDTO.setName(dept.getSimpleName()); + deptDTO.setType(NODE_TYPE_DEPT); + + normalIds.add(dept.getId()); + deptDTOS.add(deptDTO); + + + //查询该组织下分组信息 + LambdaQueryWrapper deviceQuery = new LambdaQueryWrapper<>(); + deviceQuery.eq(BusDeviceGroup::getDeptId, deptDTO.getId()); + + deviceQuery.orderByAsc(BusDeviceGroup::getGroupName); + List deviceInfos = this.list(deviceQuery); + List deptDTOList = new ArrayList<>(); + for (BusDeviceGroup group : deviceInfos) { + DeptDTO deptDto = this.convertDeptDTO(group); + deptDTOList.add(deptDto); + } + deptDTO.setChildrenNodes(deptDTOList); + } + + for (DeptDTO deptDTO : deptDTOS) { + if (!normalIds.contains(deptDTO.getPid())) { + rootIds.add(deptDTO.getPid()); + } + } + + //过滤根节点 + DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); + List newTree = new ArrayList<>(); + rootIds = rootIds.stream().distinct().collect(Collectors.toList()); + for (Long rootId : rootIds) { + abstractTreeBuildFactory.setRootId(rootId + ""); + newTree.addAll(abstractTreeBuildFactory.doTreeBuild(deptDTOS)); + } + return newTree; + } + + public DeptDTO convertDeptDTO(BusDeviceGroup group) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setType(DataConstants.NODE_TYPE_GROUP); + deptDTO.setId(group.getId()); + deptDTO.setPid(group.getDeptId()); + deptDTO.setName(group.getGroupName()); + deptDTO.setGroup(group); + return deptDTO; + } + + @Resource + private AbstractAuthService authService; + + private List deviceDept() { + //查询可见组织 + DataScope scope = authService.getLoginUserDataScope(); + AuthUser user = authService.getLoginUser(); + + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); + deptQuery.inSql(Dept::getId, "select dept_id from bus_device_info "); + if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums().getCode())) { + deptQuery.in(Dept::getId, scope.getDeptIds()); + } + deptQuery.orderByAsc(Dept::getNum); + + List deptList = deptService.list(deptQuery); + return deptList; + } + + @Override + public List list() { + List list = super.list(); + list.forEach(this::wrapperInfo); + return list; + } + + private void wrapperInfo(BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setDeptName(deptService.getDeptName(busDeviceGroup.getDeptId())); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java new file mode 100644 index 0000000..413d7ac --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.device.vo; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 设备分组管理信息对象VO + * + * @author lwh + * @date 2025-06-11 + */ +@Data +public class BusDeviceGroupVO { + private static final long serialVersionUID = 1L; + + + @ApiModelProperty(value = "分组名称", dataType = "String") + private String groupName; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + private Long deptId; + + public QueryWrapper genQuery() { + QueryWrapper query = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(groupName)) { + query.like("group_name", groupName); + } + if (deptId != null) { + query.eq("dept_id", deptId); + } + return query; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java new file mode 100644 index 0000000..477435e --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java @@ -0,0 +1,163 @@ +package com.casic.missiles.modular.device.dto.risk; + +import cn.hutool.core.convert.Convert; +import com.casic.missiles.modular.device.model.RiskPointInfo; +import lombok.Data; + +@Data +public class SyncRiskDTO { + /** + * 主键 + */ + private String id; + private String name; + /** + * 重大风险 + * 风险等级 + */ + private String hazardLevel; + /** + * 危险因素 + */ + private String riskFactors; + /** + * 所属单位 + */ + private String affiliatedUnit; + /** + * 所属部门 + */ + private String department; + + /** + * 定员 + */ + private String staffing; + + /** + * 定量 + */ + private String ration; + + /** + * 地理位置 + */ + private String geographicalPosition; + + /** + * 责任人 + */ + private String personLiable; + + /** + * 现场负责人 + */ + private String siteLeader; + + /** + * 主要设备、设施设计制造单位 + */ + private String zysbZzdw; + + /** + * 所在单位 + */ + private String szdw; + + /** + * 作业人数 + */ + private String numberOperators; + + /** + * 主要性能参数 + */ + private String mainPerformanceParameters; + + /** + * 工作环境参数 + */ + private String workingEnvironmentParameters; + + /** + * 安装单位 + */ + private String installationUnit; + + /** + * 投产日期 + */ + private String productionDate; + + /** + * 设备总数 + */ + private String totalEquipment; + + /** + * 备注 + */ + private String note; + + /** + * 创建用户 + */ + private String createUser; + private String createTime; + private String updateUser; + private String updateTime; + /** + * 是否删除0:否;1:是(接口已过滤掉1的数据) + */ + private Integer isDel; + + /** + * 行政区域 + */ + private String xzqy; + /** + * 街道 + */ + private String jdxx; + + /** + * 楼房 + */ + private String loufang; + + /** + * 楼层 + */ + private String louceng; + + /** + * 房间 + */ + private String roomName; + /** + * 所属单位编码 + */ + private String affiliatedUnitsCode; + + /** + * 危险性质 + */ + private String hazardousNature; + + public RiskPointInfo convertToRisk(RiskPointInfo pointInfo) { + //风险点缺少密级 + pointInfo.setSecretLevel("1"); + // hazardLevel 是否有字典值? + + if (department != null) { + pointInfo.setDeptId(Convert.toLong(department)); + } + pointInfo.setNature(hazardousNature); + pointInfo.setRiskName(name); + pointInfo.setAddress(geographicalPosition); + pointInfo.setTargetId(id); + //默认类型为1 + pointInfo.setRiskType(1); + return pointInfo; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java new file mode 100644 index 0000000..08e89a0 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.device.handler; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class BoxDefaultHttpHeaderHandler extends DefaultHttpHeaderHandler { + /** + * 代理服务IP + */ + private String xTargetHost; + + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Access-Token", token); + } + if (StrUtil.isNotEmpty(xTargetHost)){ + base.addHeader("X-TARGET-HOST", xTargetHost); + } + } + + public String getXTargetHost() { + return xTargetHost; + } + + public void setXTargetHost(String XTargetHost) { + this.xTargetHost = XTargetHost; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java new file mode 100644 index 0000000..77c14a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.device.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dictmap.DeviceGroupQueryDict; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.vo.BusDeviceGroupVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; + +/** + * 设备分组管理信息Controller + * + * @author lwh + * @date 2025-06-11 + */ +@Api(tags = "设备分组管理信息") +@RestController +@RequestMapping("/device/group") +public class BusDeviceGroupController extends BaseController { + + private final IBusDeviceGroupService busDeviceGroupService; + private final AbstractPermissionContext abstractPermissionContext; + + public BusDeviceGroupController(IBusDeviceGroupService busDeviceGroupService, AbstractPermissionContext abstractPermissionContext) { + this.busDeviceGroupService = busDeviceGroupService; + this.abstractPermissionContext = abstractPermissionContext; + } + + @ApiOperation(value = "列表查询") + @GetMapping(value = "/list") + public ResponseDataDTO> list(BusDeviceGroupVO busDeviceGroupVO) { + QueryWrapper query = busDeviceGroupVO.genQuery(); + return ResponseDataDTO.success(busDeviceGroupService.list(query)); + } + + @ApiOperation(value = "分组树结构查询") + @BussinessLog(value = "分组树结构查询") + @GetMapping(value = "/tree") + public ResponseDataDTO> groupTree() { + List groupDTOList = busDeviceGroupService.groupTree(); + return ResponseDataDTO.success(groupDTOList); + } + + @BussinessLog(value = "设备分组分页查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "分页查询") + @GetMapping(value = "/listPage") + public ResponseDataDTO> listPage(BusDeviceGroupVO busDeviceGroupVO) { + Page page = PageFactory.defaultPage(); + QueryWrapper query = busDeviceGroupVO.genQuery(); + List list = busDeviceGroupService.selectBusDeviceGroupPage(page, query); + page.setRecords(list); + return ResponseDataDTO.success(super.packForBT(page)); + } + + @BussinessLog(value = "设备分组新增", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "新增接口") + @PostMapping(value = "/add") + public ResponseDataDTO add(@RequestBody BusDeviceGroup busDeviceGroup) { + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + busDeviceGroup.setCreateId(user.getId()); + busDeviceGroup.setCreateTime(new Date()); + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.save(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组修改", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @PostMapping(value = "/update") + public ResponseDataDTO update(@RequestBody BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.updateById(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组删除", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "删除接口") + @GetMapping(value = "/delete") + public ResponseDataDTO delete(String id) { + busDeviceGroupService.removeById(id); + return ResponseDataDTO.success(); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { + busDeviceGroupService.removeByIds(ids.getIds()); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组详情查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "详情查询") + @GetMapping(value = "/detail") + public ResponseDataDTO detail(String id) { + return ResponseDataDTO.success(busDeviceGroupService.getById(id)); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java new file mode 100644 index 0000000..9d3726f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.device.dao; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import java.util.List; +/** + *

+ * 设备分组管理信息 Mapper 接口 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface BusDeviceGroupMapper extends BaseMapper { +/** +* 设备分组管理信息 分页检索 +*/ +List selectBusDeviceGroupPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml new file mode 100644 index 0000000..a6dd84f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + id + , + create_time as createTime , + update_time as updateTime , + group_name as groupName , + create_id as createId , + dept_id as deptId + + + a + . + id + , + a.create_time + as createTime , + a.update_time + as updateTime , + a.group_name + as groupName , + a.create_id + as createId , + a.dept_id + as deptId + + + + + + and group_name like concat('%',#{request.groupName},'%') + + + and dept_id = #{request.deptId} + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java new file mode 100644 index 0000000..a821e92 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dictmap; + +import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap; + +public class DeviceGroupQueryDict extends AbstractDictMap { + + @Override + public void init() { + put("id", "主键"); + put("deptId", "所属组织"); + put("groupName", "分组名称"); + + put("deptName", "所属单位"); + } + + @Override + protected void initBeWrapped() { + + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java new file mode 100644 index 0000000..d8d1712 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.device.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + + +/** + * 设备分组管理信息对象 bus_device_group + * + * @author lwh + * @date 2025-06-11 + */ +@Data +@TableName("bus_device_group") +public class BusDeviceGroup extends Model { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键", dataType = "Long") + @TableField("id") + private Long id; + + @ApiModelProperty(value = "创建时间", dataType = "Date") + @TableField("create_time") + private Date createTime; + + @ApiModelProperty(value = "修改时间", dataType = "Date") + @TableField("update_time") + private Date updateTime; + + @ApiModelProperty(value = "分组名称", dataType = "String") + @TableField("group_name") + private String groupName; + + @ApiModelProperty(value = "创建人", dataType = "Long") + @TableField("create_id") + private Long createId; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; + @TableField(exist = false) + private String deptName; + + @Override + public String toString() { + return "BusDeviceGroup{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "groupName=" + groupName + + "createId=" + createId + + "deptId=" + deptId + + "}"; + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java new file mode 100644 index 0000000..d2cee5c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; + +import java.util.List; + + +/** + *

+ * 设备分组管理信息 服务类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface IBusDeviceGroupService extends IService { + /** + * 设备分组管理信息 分页检索 + */ + List selectBusDeviceGroupPage(Page page, QueryWrapper query); + + /** + * 树结构查询 + * + * @return + */ + List groupTree(); + + DeptDTO convertDeptDTO(BusDeviceGroup group); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java new file mode 100644 index 0000000..a6f08b7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java @@ -0,0 +1,139 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractAuthService; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.modular.data.constants.DataConstants; +import com.casic.missiles.modular.device.dao.BusDeviceGroupMapper; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; +import com.casic.missiles.modular.system.model.Dept; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.data.constants.DataConstants.NODE_TYPE_DEPT; + + +/** + *

+ * 设备分组管理信息 服务实现类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +@Service +public class BusDeviceGroupServiceImpl extends ServiceImpl implements IBusDeviceGroupService { + @Resource + private AbstractDeptService deptService; + + @Override + public List selectBusDeviceGroupPage(Page page, QueryWrapper query) { + List list = this.baseMapper.selectBusDeviceGroupPage(page, query); + list.forEach(this::wrapperInfo); + return list; + } + + @Override + public List groupTree() { + List deptList = deviceDept(); + + List deptDTOS = new ArrayList<>(); + //树节点根 + List rootIds = new ArrayList<>(); + Set normalIds = new HashSet<>(); + + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setId(dept.getId()); + deptDTO.setPid(dept.getPid()); + deptDTO.setFullName(dept.getFullName()); + deptDTO.setName(dept.getSimpleName()); + deptDTO.setType(NODE_TYPE_DEPT); + + normalIds.add(dept.getId()); + deptDTOS.add(deptDTO); + + + //查询该组织下分组信息 + LambdaQueryWrapper deviceQuery = new LambdaQueryWrapper<>(); + deviceQuery.eq(BusDeviceGroup::getDeptId, deptDTO.getId()); + + deviceQuery.orderByAsc(BusDeviceGroup::getGroupName); + List deviceInfos = this.list(deviceQuery); + List deptDTOList = new ArrayList<>(); + for (BusDeviceGroup group : deviceInfos) { + DeptDTO deptDto = this.convertDeptDTO(group); + deptDTOList.add(deptDto); + } + deptDTO.setChildrenNodes(deptDTOList); + } + + for (DeptDTO deptDTO : deptDTOS) { + if (!normalIds.contains(deptDTO.getPid())) { + rootIds.add(deptDTO.getPid()); + } + } + + //过滤根节点 + DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); + List newTree = new ArrayList<>(); + rootIds = rootIds.stream().distinct().collect(Collectors.toList()); + for (Long rootId : rootIds) { + abstractTreeBuildFactory.setRootId(rootId + ""); + newTree.addAll(abstractTreeBuildFactory.doTreeBuild(deptDTOS)); + } + return newTree; + } + + public DeptDTO convertDeptDTO(BusDeviceGroup group) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setType(DataConstants.NODE_TYPE_GROUP); + deptDTO.setId(group.getId()); + deptDTO.setPid(group.getDeptId()); + deptDTO.setName(group.getGroupName()); + deptDTO.setGroup(group); + return deptDTO; + } + + @Resource + private AbstractAuthService authService; + + private List deviceDept() { + //查询可见组织 + DataScope scope = authService.getLoginUserDataScope(); + AuthUser user = authService.getLoginUser(); + + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); + deptQuery.inSql(Dept::getId, "select dept_id from bus_device_info "); + if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums().getCode())) { + deptQuery.in(Dept::getId, scope.getDeptIds()); + } + deptQuery.orderByAsc(Dept::getNum); + + List deptList = deptService.list(deptQuery); + return deptList; + } + + @Override + public List list() { + List list = super.list(); + list.forEach(this::wrapperInfo); + return list; + } + + private void wrapperInfo(BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setDeptName(deptService.getDeptName(busDeviceGroup.getDeptId())); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java new file mode 100644 index 0000000..413d7ac --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.device.vo; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 设备分组管理信息对象VO + * + * @author lwh + * @date 2025-06-11 + */ +@Data +public class BusDeviceGroupVO { + private static final long serialVersionUID = 1L; + + + @ApiModelProperty(value = "分组名称", dataType = "String") + private String groupName; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + private Long deptId; + + public QueryWrapper genQuery() { + QueryWrapper query = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(groupName)) { + query.like("group_name", groupName); + } + if (deptId != null) { + query.eq("dept_id", deptId); + } + return query; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java new file mode 100644 index 0000000..477435e --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java @@ -0,0 +1,163 @@ +package com.casic.missiles.modular.device.dto.risk; + +import cn.hutool.core.convert.Convert; +import com.casic.missiles.modular.device.model.RiskPointInfo; +import lombok.Data; + +@Data +public class SyncRiskDTO { + /** + * 主键 + */ + private String id; + private String name; + /** + * 重大风险 + * 风险等级 + */ + private String hazardLevel; + /** + * 危险因素 + */ + private String riskFactors; + /** + * 所属单位 + */ + private String affiliatedUnit; + /** + * 所属部门 + */ + private String department; + + /** + * 定员 + */ + private String staffing; + + /** + * 定量 + */ + private String ration; + + /** + * 地理位置 + */ + private String geographicalPosition; + + /** + * 责任人 + */ + private String personLiable; + + /** + * 现场负责人 + */ + private String siteLeader; + + /** + * 主要设备、设施设计制造单位 + */ + private String zysbZzdw; + + /** + * 所在单位 + */ + private String szdw; + + /** + * 作业人数 + */ + private String numberOperators; + + /** + * 主要性能参数 + */ + private String mainPerformanceParameters; + + /** + * 工作环境参数 + */ + private String workingEnvironmentParameters; + + /** + * 安装单位 + */ + private String installationUnit; + + /** + * 投产日期 + */ + private String productionDate; + + /** + * 设备总数 + */ + private String totalEquipment; + + /** + * 备注 + */ + private String note; + + /** + * 创建用户 + */ + private String createUser; + private String createTime; + private String updateUser; + private String updateTime; + /** + * 是否删除0:否;1:是(接口已过滤掉1的数据) + */ + private Integer isDel; + + /** + * 行政区域 + */ + private String xzqy; + /** + * 街道 + */ + private String jdxx; + + /** + * 楼房 + */ + private String loufang; + + /** + * 楼层 + */ + private String louceng; + + /** + * 房间 + */ + private String roomName; + /** + * 所属单位编码 + */ + private String affiliatedUnitsCode; + + /** + * 危险性质 + */ + private String hazardousNature; + + public RiskPointInfo convertToRisk(RiskPointInfo pointInfo) { + //风险点缺少密级 + pointInfo.setSecretLevel("1"); + // hazardLevel 是否有字典值? + + if (department != null) { + pointInfo.setDeptId(Convert.toLong(department)); + } + pointInfo.setNature(hazardousNature); + pointInfo.setRiskName(name); + pointInfo.setAddress(geographicalPosition); + pointInfo.setTargetId(id); + //默认类型为1 + pointInfo.setRiskType(1); + return pointInfo; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java new file mode 100644 index 0000000..08e89a0 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.device.handler; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class BoxDefaultHttpHeaderHandler extends DefaultHttpHeaderHandler { + /** + * 代理服务IP + */ + private String xTargetHost; + + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Access-Token", token); + } + if (StrUtil.isNotEmpty(xTargetHost)){ + base.addHeader("X-TARGET-HOST", xTargetHost); + } + } + + public String getXTargetHost() { + return xTargetHost; + } + + public void setXTargetHost(String XTargetHost) { + this.xTargetHost = XTargetHost; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java new file mode 100644 index 0000000..903e567 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.http; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class RiskHttpHandler extends DefaultHttpHeaderHandler { + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Authorization", token); + } + + } +} + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java new file mode 100644 index 0000000..77c14a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.device.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dictmap.DeviceGroupQueryDict; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.vo.BusDeviceGroupVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; + +/** + * 设备分组管理信息Controller + * + * @author lwh + * @date 2025-06-11 + */ +@Api(tags = "设备分组管理信息") +@RestController +@RequestMapping("/device/group") +public class BusDeviceGroupController extends BaseController { + + private final IBusDeviceGroupService busDeviceGroupService; + private final AbstractPermissionContext abstractPermissionContext; + + public BusDeviceGroupController(IBusDeviceGroupService busDeviceGroupService, AbstractPermissionContext abstractPermissionContext) { + this.busDeviceGroupService = busDeviceGroupService; + this.abstractPermissionContext = abstractPermissionContext; + } + + @ApiOperation(value = "列表查询") + @GetMapping(value = "/list") + public ResponseDataDTO> list(BusDeviceGroupVO busDeviceGroupVO) { + QueryWrapper query = busDeviceGroupVO.genQuery(); + return ResponseDataDTO.success(busDeviceGroupService.list(query)); + } + + @ApiOperation(value = "分组树结构查询") + @BussinessLog(value = "分组树结构查询") + @GetMapping(value = "/tree") + public ResponseDataDTO> groupTree() { + List groupDTOList = busDeviceGroupService.groupTree(); + return ResponseDataDTO.success(groupDTOList); + } + + @BussinessLog(value = "设备分组分页查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "分页查询") + @GetMapping(value = "/listPage") + public ResponseDataDTO> listPage(BusDeviceGroupVO busDeviceGroupVO) { + Page page = PageFactory.defaultPage(); + QueryWrapper query = busDeviceGroupVO.genQuery(); + List list = busDeviceGroupService.selectBusDeviceGroupPage(page, query); + page.setRecords(list); + return ResponseDataDTO.success(super.packForBT(page)); + } + + @BussinessLog(value = "设备分组新增", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "新增接口") + @PostMapping(value = "/add") + public ResponseDataDTO add(@RequestBody BusDeviceGroup busDeviceGroup) { + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + busDeviceGroup.setCreateId(user.getId()); + busDeviceGroup.setCreateTime(new Date()); + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.save(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组修改", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @PostMapping(value = "/update") + public ResponseDataDTO update(@RequestBody BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.updateById(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组删除", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "删除接口") + @GetMapping(value = "/delete") + public ResponseDataDTO delete(String id) { + busDeviceGroupService.removeById(id); + return ResponseDataDTO.success(); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { + busDeviceGroupService.removeByIds(ids.getIds()); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组详情查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "详情查询") + @GetMapping(value = "/detail") + public ResponseDataDTO detail(String id) { + return ResponseDataDTO.success(busDeviceGroupService.getById(id)); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java new file mode 100644 index 0000000..9d3726f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.device.dao; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import java.util.List; +/** + *

+ * 设备分组管理信息 Mapper 接口 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface BusDeviceGroupMapper extends BaseMapper { +/** +* 设备分组管理信息 分页检索 +*/ +List selectBusDeviceGroupPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml new file mode 100644 index 0000000..a6dd84f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + id + , + create_time as createTime , + update_time as updateTime , + group_name as groupName , + create_id as createId , + dept_id as deptId + + + a + . + id + , + a.create_time + as createTime , + a.update_time + as updateTime , + a.group_name + as groupName , + a.create_id + as createId , + a.dept_id + as deptId + + + + + + and group_name like concat('%',#{request.groupName},'%') + + + and dept_id = #{request.deptId} + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java new file mode 100644 index 0000000..a821e92 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dictmap; + +import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap; + +public class DeviceGroupQueryDict extends AbstractDictMap { + + @Override + public void init() { + put("id", "主键"); + put("deptId", "所属组织"); + put("groupName", "分组名称"); + + put("deptName", "所属单位"); + } + + @Override + protected void initBeWrapped() { + + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java new file mode 100644 index 0000000..d8d1712 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.device.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + + +/** + * 设备分组管理信息对象 bus_device_group + * + * @author lwh + * @date 2025-06-11 + */ +@Data +@TableName("bus_device_group") +public class BusDeviceGroup extends Model { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键", dataType = "Long") + @TableField("id") + private Long id; + + @ApiModelProperty(value = "创建时间", dataType = "Date") + @TableField("create_time") + private Date createTime; + + @ApiModelProperty(value = "修改时间", dataType = "Date") + @TableField("update_time") + private Date updateTime; + + @ApiModelProperty(value = "分组名称", dataType = "String") + @TableField("group_name") + private String groupName; + + @ApiModelProperty(value = "创建人", dataType = "Long") + @TableField("create_id") + private Long createId; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; + @TableField(exist = false) + private String deptName; + + @Override + public String toString() { + return "BusDeviceGroup{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "groupName=" + groupName + + "createId=" + createId + + "deptId=" + deptId + + "}"; + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java new file mode 100644 index 0000000..d2cee5c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; + +import java.util.List; + + +/** + *

+ * 设备分组管理信息 服务类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface IBusDeviceGroupService extends IService { + /** + * 设备分组管理信息 分页检索 + */ + List selectBusDeviceGroupPage(Page page, QueryWrapper query); + + /** + * 树结构查询 + * + * @return + */ + List groupTree(); + + DeptDTO convertDeptDTO(BusDeviceGroup group); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java new file mode 100644 index 0000000..a6f08b7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java @@ -0,0 +1,139 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractAuthService; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.modular.data.constants.DataConstants; +import com.casic.missiles.modular.device.dao.BusDeviceGroupMapper; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; +import com.casic.missiles.modular.system.model.Dept; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.data.constants.DataConstants.NODE_TYPE_DEPT; + + +/** + *

+ * 设备分组管理信息 服务实现类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +@Service +public class BusDeviceGroupServiceImpl extends ServiceImpl implements IBusDeviceGroupService { + @Resource + private AbstractDeptService deptService; + + @Override + public List selectBusDeviceGroupPage(Page page, QueryWrapper query) { + List list = this.baseMapper.selectBusDeviceGroupPage(page, query); + list.forEach(this::wrapperInfo); + return list; + } + + @Override + public List groupTree() { + List deptList = deviceDept(); + + List deptDTOS = new ArrayList<>(); + //树节点根 + List rootIds = new ArrayList<>(); + Set normalIds = new HashSet<>(); + + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setId(dept.getId()); + deptDTO.setPid(dept.getPid()); + deptDTO.setFullName(dept.getFullName()); + deptDTO.setName(dept.getSimpleName()); + deptDTO.setType(NODE_TYPE_DEPT); + + normalIds.add(dept.getId()); + deptDTOS.add(deptDTO); + + + //查询该组织下分组信息 + LambdaQueryWrapper deviceQuery = new LambdaQueryWrapper<>(); + deviceQuery.eq(BusDeviceGroup::getDeptId, deptDTO.getId()); + + deviceQuery.orderByAsc(BusDeviceGroup::getGroupName); + List deviceInfos = this.list(deviceQuery); + List deptDTOList = new ArrayList<>(); + for (BusDeviceGroup group : deviceInfos) { + DeptDTO deptDto = this.convertDeptDTO(group); + deptDTOList.add(deptDto); + } + deptDTO.setChildrenNodes(deptDTOList); + } + + for (DeptDTO deptDTO : deptDTOS) { + if (!normalIds.contains(deptDTO.getPid())) { + rootIds.add(deptDTO.getPid()); + } + } + + //过滤根节点 + DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); + List newTree = new ArrayList<>(); + rootIds = rootIds.stream().distinct().collect(Collectors.toList()); + for (Long rootId : rootIds) { + abstractTreeBuildFactory.setRootId(rootId + ""); + newTree.addAll(abstractTreeBuildFactory.doTreeBuild(deptDTOS)); + } + return newTree; + } + + public DeptDTO convertDeptDTO(BusDeviceGroup group) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setType(DataConstants.NODE_TYPE_GROUP); + deptDTO.setId(group.getId()); + deptDTO.setPid(group.getDeptId()); + deptDTO.setName(group.getGroupName()); + deptDTO.setGroup(group); + return deptDTO; + } + + @Resource + private AbstractAuthService authService; + + private List deviceDept() { + //查询可见组织 + DataScope scope = authService.getLoginUserDataScope(); + AuthUser user = authService.getLoginUser(); + + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); + deptQuery.inSql(Dept::getId, "select dept_id from bus_device_info "); + if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums().getCode())) { + deptQuery.in(Dept::getId, scope.getDeptIds()); + } + deptQuery.orderByAsc(Dept::getNum); + + List deptList = deptService.list(deptQuery); + return deptList; + } + + @Override + public List list() { + List list = super.list(); + list.forEach(this::wrapperInfo); + return list; + } + + private void wrapperInfo(BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setDeptName(deptService.getDeptName(busDeviceGroup.getDeptId())); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java new file mode 100644 index 0000000..413d7ac --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.device.vo; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 设备分组管理信息对象VO + * + * @author lwh + * @date 2025-06-11 + */ +@Data +public class BusDeviceGroupVO { + private static final long serialVersionUID = 1L; + + + @ApiModelProperty(value = "分组名称", dataType = "String") + private String groupName; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + private Long deptId; + + public QueryWrapper genQuery() { + QueryWrapper query = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(groupName)) { + query.like("group_name", groupName); + } + if (deptId != null) { + query.eq("dept_id", deptId); + } + return query; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java new file mode 100644 index 0000000..477435e --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java @@ -0,0 +1,163 @@ +package com.casic.missiles.modular.device.dto.risk; + +import cn.hutool.core.convert.Convert; +import com.casic.missiles.modular.device.model.RiskPointInfo; +import lombok.Data; + +@Data +public class SyncRiskDTO { + /** + * 主键 + */ + private String id; + private String name; + /** + * 重大风险 + * 风险等级 + */ + private String hazardLevel; + /** + * 危险因素 + */ + private String riskFactors; + /** + * 所属单位 + */ + private String affiliatedUnit; + /** + * 所属部门 + */ + private String department; + + /** + * 定员 + */ + private String staffing; + + /** + * 定量 + */ + private String ration; + + /** + * 地理位置 + */ + private String geographicalPosition; + + /** + * 责任人 + */ + private String personLiable; + + /** + * 现场负责人 + */ + private String siteLeader; + + /** + * 主要设备、设施设计制造单位 + */ + private String zysbZzdw; + + /** + * 所在单位 + */ + private String szdw; + + /** + * 作业人数 + */ + private String numberOperators; + + /** + * 主要性能参数 + */ + private String mainPerformanceParameters; + + /** + * 工作环境参数 + */ + private String workingEnvironmentParameters; + + /** + * 安装单位 + */ + private String installationUnit; + + /** + * 投产日期 + */ + private String productionDate; + + /** + * 设备总数 + */ + private String totalEquipment; + + /** + * 备注 + */ + private String note; + + /** + * 创建用户 + */ + private String createUser; + private String createTime; + private String updateUser; + private String updateTime; + /** + * 是否删除0:否;1:是(接口已过滤掉1的数据) + */ + private Integer isDel; + + /** + * 行政区域 + */ + private String xzqy; + /** + * 街道 + */ + private String jdxx; + + /** + * 楼房 + */ + private String loufang; + + /** + * 楼层 + */ + private String louceng; + + /** + * 房间 + */ + private String roomName; + /** + * 所属单位编码 + */ + private String affiliatedUnitsCode; + + /** + * 危险性质 + */ + private String hazardousNature; + + public RiskPointInfo convertToRisk(RiskPointInfo pointInfo) { + //风险点缺少密级 + pointInfo.setSecretLevel("1"); + // hazardLevel 是否有字典值? + + if (department != null) { + pointInfo.setDeptId(Convert.toLong(department)); + } + pointInfo.setNature(hazardousNature); + pointInfo.setRiskName(name); + pointInfo.setAddress(geographicalPosition); + pointInfo.setTargetId(id); + //默认类型为1 + pointInfo.setRiskType(1); + return pointInfo; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java new file mode 100644 index 0000000..08e89a0 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.device.handler; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class BoxDefaultHttpHeaderHandler extends DefaultHttpHeaderHandler { + /** + * 代理服务IP + */ + private String xTargetHost; + + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Access-Token", token); + } + if (StrUtil.isNotEmpty(xTargetHost)){ + base.addHeader("X-TARGET-HOST", xTargetHost); + } + } + + public String getXTargetHost() { + return xTargetHost; + } + + public void setXTargetHost(String XTargetHost) { + this.xTargetHost = XTargetHost; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java new file mode 100644 index 0000000..903e567 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.http; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class RiskHttpHandler extends DefaultHttpHeaderHandler { + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Authorization", token); + } + + } +} + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java new file mode 100644 index 0000000..9f75f42 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java @@ -0,0 +1,35 @@ +package com.casic.missiles.modular.task; + +import com.casic.missiles.modular.device.service.IRiskPointInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +@Slf4j +@Component +public class RiskTask { + + @Value("${casic.risk.open:false}") + private Boolean open; + + @Resource + private IRiskPointInfoService riskPointInfoService; + + /** + * 设备信息同步0 + * 每30分钟采集一次 + */ + @Scheduled(cron = "${casic.risk.corn:0 */1 * * * *}") + public void device() { + //风险点数据同步 + if (open) { + log.info("risk sync start...."); + riskPointInfoService.loadRiskInfo(); + log.info("risk sync end...."); + } + } + +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java new file mode 100644 index 0000000..77c14a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.device.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dictmap.DeviceGroupQueryDict; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.vo.BusDeviceGroupVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; + +/** + * 设备分组管理信息Controller + * + * @author lwh + * @date 2025-06-11 + */ +@Api(tags = "设备分组管理信息") +@RestController +@RequestMapping("/device/group") +public class BusDeviceGroupController extends BaseController { + + private final IBusDeviceGroupService busDeviceGroupService; + private final AbstractPermissionContext abstractPermissionContext; + + public BusDeviceGroupController(IBusDeviceGroupService busDeviceGroupService, AbstractPermissionContext abstractPermissionContext) { + this.busDeviceGroupService = busDeviceGroupService; + this.abstractPermissionContext = abstractPermissionContext; + } + + @ApiOperation(value = "列表查询") + @GetMapping(value = "/list") + public ResponseDataDTO> list(BusDeviceGroupVO busDeviceGroupVO) { + QueryWrapper query = busDeviceGroupVO.genQuery(); + return ResponseDataDTO.success(busDeviceGroupService.list(query)); + } + + @ApiOperation(value = "分组树结构查询") + @BussinessLog(value = "分组树结构查询") + @GetMapping(value = "/tree") + public ResponseDataDTO> groupTree() { + List groupDTOList = busDeviceGroupService.groupTree(); + return ResponseDataDTO.success(groupDTOList); + } + + @BussinessLog(value = "设备分组分页查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "分页查询") + @GetMapping(value = "/listPage") + public ResponseDataDTO> listPage(BusDeviceGroupVO busDeviceGroupVO) { + Page page = PageFactory.defaultPage(); + QueryWrapper query = busDeviceGroupVO.genQuery(); + List list = busDeviceGroupService.selectBusDeviceGroupPage(page, query); + page.setRecords(list); + return ResponseDataDTO.success(super.packForBT(page)); + } + + @BussinessLog(value = "设备分组新增", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "新增接口") + @PostMapping(value = "/add") + public ResponseDataDTO add(@RequestBody BusDeviceGroup busDeviceGroup) { + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + busDeviceGroup.setCreateId(user.getId()); + busDeviceGroup.setCreateTime(new Date()); + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.save(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组修改", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @PostMapping(value = "/update") + public ResponseDataDTO update(@RequestBody BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.updateById(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组删除", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "删除接口") + @GetMapping(value = "/delete") + public ResponseDataDTO delete(String id) { + busDeviceGroupService.removeById(id); + return ResponseDataDTO.success(); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { + busDeviceGroupService.removeByIds(ids.getIds()); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组详情查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "详情查询") + @GetMapping(value = "/detail") + public ResponseDataDTO detail(String id) { + return ResponseDataDTO.success(busDeviceGroupService.getById(id)); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java new file mode 100644 index 0000000..9d3726f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.device.dao; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import java.util.List; +/** + *

+ * 设备分组管理信息 Mapper 接口 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface BusDeviceGroupMapper extends BaseMapper { +/** +* 设备分组管理信息 分页检索 +*/ +List selectBusDeviceGroupPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml new file mode 100644 index 0000000..a6dd84f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + id + , + create_time as createTime , + update_time as updateTime , + group_name as groupName , + create_id as createId , + dept_id as deptId + + + a + . + id + , + a.create_time + as createTime , + a.update_time + as updateTime , + a.group_name + as groupName , + a.create_id + as createId , + a.dept_id + as deptId + + + + + + and group_name like concat('%',#{request.groupName},'%') + + + and dept_id = #{request.deptId} + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java new file mode 100644 index 0000000..a821e92 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dictmap; + +import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap; + +public class DeviceGroupQueryDict extends AbstractDictMap { + + @Override + public void init() { + put("id", "主键"); + put("deptId", "所属组织"); + put("groupName", "分组名称"); + + put("deptName", "所属单位"); + } + + @Override + protected void initBeWrapped() { + + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java new file mode 100644 index 0000000..d8d1712 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.device.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + + +/** + * 设备分组管理信息对象 bus_device_group + * + * @author lwh + * @date 2025-06-11 + */ +@Data +@TableName("bus_device_group") +public class BusDeviceGroup extends Model { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键", dataType = "Long") + @TableField("id") + private Long id; + + @ApiModelProperty(value = "创建时间", dataType = "Date") + @TableField("create_time") + private Date createTime; + + @ApiModelProperty(value = "修改时间", dataType = "Date") + @TableField("update_time") + private Date updateTime; + + @ApiModelProperty(value = "分组名称", dataType = "String") + @TableField("group_name") + private String groupName; + + @ApiModelProperty(value = "创建人", dataType = "Long") + @TableField("create_id") + private Long createId; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; + @TableField(exist = false) + private String deptName; + + @Override + public String toString() { + return "BusDeviceGroup{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "groupName=" + groupName + + "createId=" + createId + + "deptId=" + deptId + + "}"; + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java new file mode 100644 index 0000000..d2cee5c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; + +import java.util.List; + + +/** + *

+ * 设备分组管理信息 服务类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface IBusDeviceGroupService extends IService { + /** + * 设备分组管理信息 分页检索 + */ + List selectBusDeviceGroupPage(Page page, QueryWrapper query); + + /** + * 树结构查询 + * + * @return + */ + List groupTree(); + + DeptDTO convertDeptDTO(BusDeviceGroup group); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java new file mode 100644 index 0000000..a6f08b7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java @@ -0,0 +1,139 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractAuthService; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.modular.data.constants.DataConstants; +import com.casic.missiles.modular.device.dao.BusDeviceGroupMapper; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; +import com.casic.missiles.modular.system.model.Dept; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.data.constants.DataConstants.NODE_TYPE_DEPT; + + +/** + *

+ * 设备分组管理信息 服务实现类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +@Service +public class BusDeviceGroupServiceImpl extends ServiceImpl implements IBusDeviceGroupService { + @Resource + private AbstractDeptService deptService; + + @Override + public List selectBusDeviceGroupPage(Page page, QueryWrapper query) { + List list = this.baseMapper.selectBusDeviceGroupPage(page, query); + list.forEach(this::wrapperInfo); + return list; + } + + @Override + public List groupTree() { + List deptList = deviceDept(); + + List deptDTOS = new ArrayList<>(); + //树节点根 + List rootIds = new ArrayList<>(); + Set normalIds = new HashSet<>(); + + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setId(dept.getId()); + deptDTO.setPid(dept.getPid()); + deptDTO.setFullName(dept.getFullName()); + deptDTO.setName(dept.getSimpleName()); + deptDTO.setType(NODE_TYPE_DEPT); + + normalIds.add(dept.getId()); + deptDTOS.add(deptDTO); + + + //查询该组织下分组信息 + LambdaQueryWrapper deviceQuery = new LambdaQueryWrapper<>(); + deviceQuery.eq(BusDeviceGroup::getDeptId, deptDTO.getId()); + + deviceQuery.orderByAsc(BusDeviceGroup::getGroupName); + List deviceInfos = this.list(deviceQuery); + List deptDTOList = new ArrayList<>(); + for (BusDeviceGroup group : deviceInfos) { + DeptDTO deptDto = this.convertDeptDTO(group); + deptDTOList.add(deptDto); + } + deptDTO.setChildrenNodes(deptDTOList); + } + + for (DeptDTO deptDTO : deptDTOS) { + if (!normalIds.contains(deptDTO.getPid())) { + rootIds.add(deptDTO.getPid()); + } + } + + //过滤根节点 + DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); + List newTree = new ArrayList<>(); + rootIds = rootIds.stream().distinct().collect(Collectors.toList()); + for (Long rootId : rootIds) { + abstractTreeBuildFactory.setRootId(rootId + ""); + newTree.addAll(abstractTreeBuildFactory.doTreeBuild(deptDTOS)); + } + return newTree; + } + + public DeptDTO convertDeptDTO(BusDeviceGroup group) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setType(DataConstants.NODE_TYPE_GROUP); + deptDTO.setId(group.getId()); + deptDTO.setPid(group.getDeptId()); + deptDTO.setName(group.getGroupName()); + deptDTO.setGroup(group); + return deptDTO; + } + + @Resource + private AbstractAuthService authService; + + private List deviceDept() { + //查询可见组织 + DataScope scope = authService.getLoginUserDataScope(); + AuthUser user = authService.getLoginUser(); + + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); + deptQuery.inSql(Dept::getId, "select dept_id from bus_device_info "); + if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums().getCode())) { + deptQuery.in(Dept::getId, scope.getDeptIds()); + } + deptQuery.orderByAsc(Dept::getNum); + + List deptList = deptService.list(deptQuery); + return deptList; + } + + @Override + public List list() { + List list = super.list(); + list.forEach(this::wrapperInfo); + return list; + } + + private void wrapperInfo(BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setDeptName(deptService.getDeptName(busDeviceGroup.getDeptId())); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java new file mode 100644 index 0000000..413d7ac --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.device.vo; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 设备分组管理信息对象VO + * + * @author lwh + * @date 2025-06-11 + */ +@Data +public class BusDeviceGroupVO { + private static final long serialVersionUID = 1L; + + + @ApiModelProperty(value = "分组名称", dataType = "String") + private String groupName; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + private Long deptId; + + public QueryWrapper genQuery() { + QueryWrapper query = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(groupName)) { + query.like("group_name", groupName); + } + if (deptId != null) { + query.eq("dept_id", deptId); + } + return query; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java new file mode 100644 index 0000000..477435e --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java @@ -0,0 +1,163 @@ +package com.casic.missiles.modular.device.dto.risk; + +import cn.hutool.core.convert.Convert; +import com.casic.missiles.modular.device.model.RiskPointInfo; +import lombok.Data; + +@Data +public class SyncRiskDTO { + /** + * 主键 + */ + private String id; + private String name; + /** + * 重大风险 + * 风险等级 + */ + private String hazardLevel; + /** + * 危险因素 + */ + private String riskFactors; + /** + * 所属单位 + */ + private String affiliatedUnit; + /** + * 所属部门 + */ + private String department; + + /** + * 定员 + */ + private String staffing; + + /** + * 定量 + */ + private String ration; + + /** + * 地理位置 + */ + private String geographicalPosition; + + /** + * 责任人 + */ + private String personLiable; + + /** + * 现场负责人 + */ + private String siteLeader; + + /** + * 主要设备、设施设计制造单位 + */ + private String zysbZzdw; + + /** + * 所在单位 + */ + private String szdw; + + /** + * 作业人数 + */ + private String numberOperators; + + /** + * 主要性能参数 + */ + private String mainPerformanceParameters; + + /** + * 工作环境参数 + */ + private String workingEnvironmentParameters; + + /** + * 安装单位 + */ + private String installationUnit; + + /** + * 投产日期 + */ + private String productionDate; + + /** + * 设备总数 + */ + private String totalEquipment; + + /** + * 备注 + */ + private String note; + + /** + * 创建用户 + */ + private String createUser; + private String createTime; + private String updateUser; + private String updateTime; + /** + * 是否删除0:否;1:是(接口已过滤掉1的数据) + */ + private Integer isDel; + + /** + * 行政区域 + */ + private String xzqy; + /** + * 街道 + */ + private String jdxx; + + /** + * 楼房 + */ + private String loufang; + + /** + * 楼层 + */ + private String louceng; + + /** + * 房间 + */ + private String roomName; + /** + * 所属单位编码 + */ + private String affiliatedUnitsCode; + + /** + * 危险性质 + */ + private String hazardousNature; + + public RiskPointInfo convertToRisk(RiskPointInfo pointInfo) { + //风险点缺少密级 + pointInfo.setSecretLevel("1"); + // hazardLevel 是否有字典值? + + if (department != null) { + pointInfo.setDeptId(Convert.toLong(department)); + } + pointInfo.setNature(hazardousNature); + pointInfo.setRiskName(name); + pointInfo.setAddress(geographicalPosition); + pointInfo.setTargetId(id); + //默认类型为1 + pointInfo.setRiskType(1); + return pointInfo; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java new file mode 100644 index 0000000..08e89a0 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.device.handler; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class BoxDefaultHttpHeaderHandler extends DefaultHttpHeaderHandler { + /** + * 代理服务IP + */ + private String xTargetHost; + + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Access-Token", token); + } + if (StrUtil.isNotEmpty(xTargetHost)){ + base.addHeader("X-TARGET-HOST", xTargetHost); + } + } + + public String getXTargetHost() { + return xTargetHost; + } + + public void setXTargetHost(String XTargetHost) { + this.xTargetHost = XTargetHost; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java new file mode 100644 index 0000000..903e567 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.http; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class RiskHttpHandler extends DefaultHttpHeaderHandler { + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Authorization", token); + } + + } +} + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java new file mode 100644 index 0000000..9f75f42 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java @@ -0,0 +1,35 @@ +package com.casic.missiles.modular.task; + +import com.casic.missiles.modular.device.service.IRiskPointInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +@Slf4j +@Component +public class RiskTask { + + @Value("${casic.risk.open:false}") + private Boolean open; + + @Resource + private IRiskPointInfoService riskPointInfoService; + + /** + * 设备信息同步0 + * 每30分钟采集一次 + */ + @Scheduled(cron = "${casic.risk.corn:0 */1 * * * *}") + public void device() { + //风险点数据同步 + if (open) { + log.info("risk sync start...."); + riskPointInfoService.loadRiskInfo(); + log.info("risk sync end...."); + } + } + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java new file mode 100644 index 0000000..e4ca4f1 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.util; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.modular.http.RiskHttpHandler; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import com.casic.missiles.modular.system.utils.HttpUtils; + +import java.util.HashMap; +import java.util.Map; + +public class RiskHttpUtil { + public static final String loginUrl = "/rest/platform/systemLogin"; + public static final String pointDataUrl = "/rest/platform/dangerPointData"; + + public static String login(String baseUrl, String secret) { + Map param = new HashMap<>(); + param.put("secret", secret); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + defaultHeaderHandler.setJson(true); + String res = HttpUtils.sendPost(baseUrl + loginUrl, param, "", defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + public static String pointData(String baseUrl, String token) { + Map param = new HashMap<>(); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + + String res = HttpUtils.sendGet(baseUrl + pointDataUrl, param, token, defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + /** + * 登录数据加密 + * @param appId 加密id + * @param publicKey 公钥 + * @return + * @throws Exception + */ + public static String encrypt(String appId,String publicKey) throws Exception { + long ts = System.currentTimeMillis(); + return RSAUtils.encrypt(appId+"_"+ts,publicKey); + } + + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java new file mode 100644 index 0000000..77c14a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.device.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dictmap.DeviceGroupQueryDict; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.vo.BusDeviceGroupVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; + +/** + * 设备分组管理信息Controller + * + * @author lwh + * @date 2025-06-11 + */ +@Api(tags = "设备分组管理信息") +@RestController +@RequestMapping("/device/group") +public class BusDeviceGroupController extends BaseController { + + private final IBusDeviceGroupService busDeviceGroupService; + private final AbstractPermissionContext abstractPermissionContext; + + public BusDeviceGroupController(IBusDeviceGroupService busDeviceGroupService, AbstractPermissionContext abstractPermissionContext) { + this.busDeviceGroupService = busDeviceGroupService; + this.abstractPermissionContext = abstractPermissionContext; + } + + @ApiOperation(value = "列表查询") + @GetMapping(value = "/list") + public ResponseDataDTO> list(BusDeviceGroupVO busDeviceGroupVO) { + QueryWrapper query = busDeviceGroupVO.genQuery(); + return ResponseDataDTO.success(busDeviceGroupService.list(query)); + } + + @ApiOperation(value = "分组树结构查询") + @BussinessLog(value = "分组树结构查询") + @GetMapping(value = "/tree") + public ResponseDataDTO> groupTree() { + List groupDTOList = busDeviceGroupService.groupTree(); + return ResponseDataDTO.success(groupDTOList); + } + + @BussinessLog(value = "设备分组分页查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "分页查询") + @GetMapping(value = "/listPage") + public ResponseDataDTO> listPage(BusDeviceGroupVO busDeviceGroupVO) { + Page page = PageFactory.defaultPage(); + QueryWrapper query = busDeviceGroupVO.genQuery(); + List list = busDeviceGroupService.selectBusDeviceGroupPage(page, query); + page.setRecords(list); + return ResponseDataDTO.success(super.packForBT(page)); + } + + @BussinessLog(value = "设备分组新增", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "新增接口") + @PostMapping(value = "/add") + public ResponseDataDTO add(@RequestBody BusDeviceGroup busDeviceGroup) { + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + busDeviceGroup.setCreateId(user.getId()); + busDeviceGroup.setCreateTime(new Date()); + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.save(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组修改", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @PostMapping(value = "/update") + public ResponseDataDTO update(@RequestBody BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.updateById(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组删除", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "删除接口") + @GetMapping(value = "/delete") + public ResponseDataDTO delete(String id) { + busDeviceGroupService.removeById(id); + return ResponseDataDTO.success(); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { + busDeviceGroupService.removeByIds(ids.getIds()); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组详情查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "详情查询") + @GetMapping(value = "/detail") + public ResponseDataDTO detail(String id) { + return ResponseDataDTO.success(busDeviceGroupService.getById(id)); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java new file mode 100644 index 0000000..9d3726f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.device.dao; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import java.util.List; +/** + *

+ * 设备分组管理信息 Mapper 接口 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface BusDeviceGroupMapper extends BaseMapper { +/** +* 设备分组管理信息 分页检索 +*/ +List selectBusDeviceGroupPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml new file mode 100644 index 0000000..a6dd84f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + id + , + create_time as createTime , + update_time as updateTime , + group_name as groupName , + create_id as createId , + dept_id as deptId + + + a + . + id + , + a.create_time + as createTime , + a.update_time + as updateTime , + a.group_name + as groupName , + a.create_id + as createId , + a.dept_id + as deptId + + + + + + and group_name like concat('%',#{request.groupName},'%') + + + and dept_id = #{request.deptId} + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java new file mode 100644 index 0000000..a821e92 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dictmap; + +import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap; + +public class DeviceGroupQueryDict extends AbstractDictMap { + + @Override + public void init() { + put("id", "主键"); + put("deptId", "所属组织"); + put("groupName", "分组名称"); + + put("deptName", "所属单位"); + } + + @Override + protected void initBeWrapped() { + + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java new file mode 100644 index 0000000..d8d1712 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.device.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + + +/** + * 设备分组管理信息对象 bus_device_group + * + * @author lwh + * @date 2025-06-11 + */ +@Data +@TableName("bus_device_group") +public class BusDeviceGroup extends Model { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键", dataType = "Long") + @TableField("id") + private Long id; + + @ApiModelProperty(value = "创建时间", dataType = "Date") + @TableField("create_time") + private Date createTime; + + @ApiModelProperty(value = "修改时间", dataType = "Date") + @TableField("update_time") + private Date updateTime; + + @ApiModelProperty(value = "分组名称", dataType = "String") + @TableField("group_name") + private String groupName; + + @ApiModelProperty(value = "创建人", dataType = "Long") + @TableField("create_id") + private Long createId; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; + @TableField(exist = false) + private String deptName; + + @Override + public String toString() { + return "BusDeviceGroup{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "groupName=" + groupName + + "createId=" + createId + + "deptId=" + deptId + + "}"; + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java new file mode 100644 index 0000000..d2cee5c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; + +import java.util.List; + + +/** + *

+ * 设备分组管理信息 服务类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface IBusDeviceGroupService extends IService { + /** + * 设备分组管理信息 分页检索 + */ + List selectBusDeviceGroupPage(Page page, QueryWrapper query); + + /** + * 树结构查询 + * + * @return + */ + List groupTree(); + + DeptDTO convertDeptDTO(BusDeviceGroup group); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java new file mode 100644 index 0000000..a6f08b7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java @@ -0,0 +1,139 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractAuthService; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.modular.data.constants.DataConstants; +import com.casic.missiles.modular.device.dao.BusDeviceGroupMapper; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; +import com.casic.missiles.modular.system.model.Dept; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.data.constants.DataConstants.NODE_TYPE_DEPT; + + +/** + *

+ * 设备分组管理信息 服务实现类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +@Service +public class BusDeviceGroupServiceImpl extends ServiceImpl implements IBusDeviceGroupService { + @Resource + private AbstractDeptService deptService; + + @Override + public List selectBusDeviceGroupPage(Page page, QueryWrapper query) { + List list = this.baseMapper.selectBusDeviceGroupPage(page, query); + list.forEach(this::wrapperInfo); + return list; + } + + @Override + public List groupTree() { + List deptList = deviceDept(); + + List deptDTOS = new ArrayList<>(); + //树节点根 + List rootIds = new ArrayList<>(); + Set normalIds = new HashSet<>(); + + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setId(dept.getId()); + deptDTO.setPid(dept.getPid()); + deptDTO.setFullName(dept.getFullName()); + deptDTO.setName(dept.getSimpleName()); + deptDTO.setType(NODE_TYPE_DEPT); + + normalIds.add(dept.getId()); + deptDTOS.add(deptDTO); + + + //查询该组织下分组信息 + LambdaQueryWrapper deviceQuery = new LambdaQueryWrapper<>(); + deviceQuery.eq(BusDeviceGroup::getDeptId, deptDTO.getId()); + + deviceQuery.orderByAsc(BusDeviceGroup::getGroupName); + List deviceInfos = this.list(deviceQuery); + List deptDTOList = new ArrayList<>(); + for (BusDeviceGroup group : deviceInfos) { + DeptDTO deptDto = this.convertDeptDTO(group); + deptDTOList.add(deptDto); + } + deptDTO.setChildrenNodes(deptDTOList); + } + + for (DeptDTO deptDTO : deptDTOS) { + if (!normalIds.contains(deptDTO.getPid())) { + rootIds.add(deptDTO.getPid()); + } + } + + //过滤根节点 + DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); + List newTree = new ArrayList<>(); + rootIds = rootIds.stream().distinct().collect(Collectors.toList()); + for (Long rootId : rootIds) { + abstractTreeBuildFactory.setRootId(rootId + ""); + newTree.addAll(abstractTreeBuildFactory.doTreeBuild(deptDTOS)); + } + return newTree; + } + + public DeptDTO convertDeptDTO(BusDeviceGroup group) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setType(DataConstants.NODE_TYPE_GROUP); + deptDTO.setId(group.getId()); + deptDTO.setPid(group.getDeptId()); + deptDTO.setName(group.getGroupName()); + deptDTO.setGroup(group); + return deptDTO; + } + + @Resource + private AbstractAuthService authService; + + private List deviceDept() { + //查询可见组织 + DataScope scope = authService.getLoginUserDataScope(); + AuthUser user = authService.getLoginUser(); + + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); + deptQuery.inSql(Dept::getId, "select dept_id from bus_device_info "); + if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums().getCode())) { + deptQuery.in(Dept::getId, scope.getDeptIds()); + } + deptQuery.orderByAsc(Dept::getNum); + + List deptList = deptService.list(deptQuery); + return deptList; + } + + @Override + public List list() { + List list = super.list(); + list.forEach(this::wrapperInfo); + return list; + } + + private void wrapperInfo(BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setDeptName(deptService.getDeptName(busDeviceGroup.getDeptId())); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java new file mode 100644 index 0000000..413d7ac --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.device.vo; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 设备分组管理信息对象VO + * + * @author lwh + * @date 2025-06-11 + */ +@Data +public class BusDeviceGroupVO { + private static final long serialVersionUID = 1L; + + + @ApiModelProperty(value = "分组名称", dataType = "String") + private String groupName; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + private Long deptId; + + public QueryWrapper genQuery() { + QueryWrapper query = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(groupName)) { + query.like("group_name", groupName); + } + if (deptId != null) { + query.eq("dept_id", deptId); + } + return query; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java new file mode 100644 index 0000000..477435e --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java @@ -0,0 +1,163 @@ +package com.casic.missiles.modular.device.dto.risk; + +import cn.hutool.core.convert.Convert; +import com.casic.missiles.modular.device.model.RiskPointInfo; +import lombok.Data; + +@Data +public class SyncRiskDTO { + /** + * 主键 + */ + private String id; + private String name; + /** + * 重大风险 + * 风险等级 + */ + private String hazardLevel; + /** + * 危险因素 + */ + private String riskFactors; + /** + * 所属单位 + */ + private String affiliatedUnit; + /** + * 所属部门 + */ + private String department; + + /** + * 定员 + */ + private String staffing; + + /** + * 定量 + */ + private String ration; + + /** + * 地理位置 + */ + private String geographicalPosition; + + /** + * 责任人 + */ + private String personLiable; + + /** + * 现场负责人 + */ + private String siteLeader; + + /** + * 主要设备、设施设计制造单位 + */ + private String zysbZzdw; + + /** + * 所在单位 + */ + private String szdw; + + /** + * 作业人数 + */ + private String numberOperators; + + /** + * 主要性能参数 + */ + private String mainPerformanceParameters; + + /** + * 工作环境参数 + */ + private String workingEnvironmentParameters; + + /** + * 安装单位 + */ + private String installationUnit; + + /** + * 投产日期 + */ + private String productionDate; + + /** + * 设备总数 + */ + private String totalEquipment; + + /** + * 备注 + */ + private String note; + + /** + * 创建用户 + */ + private String createUser; + private String createTime; + private String updateUser; + private String updateTime; + /** + * 是否删除0:否;1:是(接口已过滤掉1的数据) + */ + private Integer isDel; + + /** + * 行政区域 + */ + private String xzqy; + /** + * 街道 + */ + private String jdxx; + + /** + * 楼房 + */ + private String loufang; + + /** + * 楼层 + */ + private String louceng; + + /** + * 房间 + */ + private String roomName; + /** + * 所属单位编码 + */ + private String affiliatedUnitsCode; + + /** + * 危险性质 + */ + private String hazardousNature; + + public RiskPointInfo convertToRisk(RiskPointInfo pointInfo) { + //风险点缺少密级 + pointInfo.setSecretLevel("1"); + // hazardLevel 是否有字典值? + + if (department != null) { + pointInfo.setDeptId(Convert.toLong(department)); + } + pointInfo.setNature(hazardousNature); + pointInfo.setRiskName(name); + pointInfo.setAddress(geographicalPosition); + pointInfo.setTargetId(id); + //默认类型为1 + pointInfo.setRiskType(1); + return pointInfo; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java new file mode 100644 index 0000000..08e89a0 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.device.handler; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class BoxDefaultHttpHeaderHandler extends DefaultHttpHeaderHandler { + /** + * 代理服务IP + */ + private String xTargetHost; + + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Access-Token", token); + } + if (StrUtil.isNotEmpty(xTargetHost)){ + base.addHeader("X-TARGET-HOST", xTargetHost); + } + } + + public String getXTargetHost() { + return xTargetHost; + } + + public void setXTargetHost(String XTargetHost) { + this.xTargetHost = XTargetHost; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java new file mode 100644 index 0000000..903e567 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.http; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class RiskHttpHandler extends DefaultHttpHeaderHandler { + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Authorization", token); + } + + } +} + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java new file mode 100644 index 0000000..9f75f42 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java @@ -0,0 +1,35 @@ +package com.casic.missiles.modular.task; + +import com.casic.missiles.modular.device.service.IRiskPointInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +@Slf4j +@Component +public class RiskTask { + + @Value("${casic.risk.open:false}") + private Boolean open; + + @Resource + private IRiskPointInfoService riskPointInfoService; + + /** + * 设备信息同步0 + * 每30分钟采集一次 + */ + @Scheduled(cron = "${casic.risk.corn:0 */1 * * * *}") + public void device() { + //风险点数据同步 + if (open) { + log.info("risk sync start...."); + riskPointInfoService.loadRiskInfo(); + log.info("risk sync end...."); + } + } + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java new file mode 100644 index 0000000..e4ca4f1 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.util; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.modular.http.RiskHttpHandler; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import com.casic.missiles.modular.system.utils.HttpUtils; + +import java.util.HashMap; +import java.util.Map; + +public class RiskHttpUtil { + public static final String loginUrl = "/rest/platform/systemLogin"; + public static final String pointDataUrl = "/rest/platform/dangerPointData"; + + public static String login(String baseUrl, String secret) { + Map param = new HashMap<>(); + param.put("secret", secret); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + defaultHeaderHandler.setJson(true); + String res = HttpUtils.sendPost(baseUrl + loginUrl, param, "", defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + public static String pointData(String baseUrl, String token) { + Map param = new HashMap<>(); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + + String res = HttpUtils.sendGet(baseUrl + pointDataUrl, param, token, defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + /** + * 登录数据加密 + * @param appId 加密id + * @param publicKey 公钥 + * @return + * @throws Exception + */ + public static String encrypt(String appId,String publicKey) throws Exception { + long ts = System.currentTimeMillis(); + return RSAUtils.encrypt(appId+"_"+ts,publicKey); + } + + +} diff --git a/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java new file mode 100644 index 0000000..9ba1e2a --- /dev/null +++ b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java @@ -0,0 +1,62 @@ +package com.casic.missiles.test; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.TypeReference; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.risk.SyncRiskDTO; +import com.casic.missiles.modular.device.util.AesUtil; +import com.casic.missiles.modular.util.RiskHttpUtil; +import com.casic.missiles.modular.util.WvpUtil; +import com.casic.missiles.modular.wvp.dto.MvpResponseDTO; + +import java.io.FileInputStream; +import java.security.MessageDigest; +import java.util.Date; +import java.util.HashMap; +import java.util.List; + +public class RiskTest { + public static void main(String[] args) throws Exception { +// File file = new File("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// String task = ZipFileUtil.getZipHandleTask("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(task); +// String md5 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(md5); +// String md52 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241122.zip"); +// System.out.println(md52); + + testDeviceLogin(); + System.out.println( DateUtil.offsetMinute(new Date(),-5)); + } + public static void testDeviceLogin() throws Exception { + Long time = System.currentTimeMillis(); + String str = "FXDDT_" + time; + String pubKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCynMBxzoNBemZKuxjlZzp04Lx/b0j1xRUznBKjlQSATwc+1DaxBpKdT4WfqAuFlSQLA7qLdntXw2cvUEvRxfdjJp2KfZLkEYRmYx3LT51WdCmouQREtMrR6j3mri8jV8TjktGCmBFMKX7eGeQM8O249yVjby6502bzZXehQ707JQIDAQAB"; + String sec = RSAUtils.encrypt(str, pubKey); + System.out.println(sec); + String priKey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALKcwHHOg0F6Zkq7GOVnOnTgvH9vSPXFFTOcEqOVBIBPBz7UNrEGkp1PhZ+oC4WVJAsDuot2e1fDZy9QS9HF92MmnYp9kuQRhGZjHctPnVZ0Kai5BES0ytHqPeauLyNXxOOS0YKYEUwpft4Z5Azw7bj3JWNvLrnTZvNld6FDvTslAgMBAAECgYAqN/kZLYpC+O6i7XSmDO95XwHPUXu6dDpdt5+EQR4OQh/hTwIaeAZB3uEj6vHGQomBfQEkI/5lsU97lIxHanbd+Hro7JyIhsGD5LR5XnZHVKzFiZW62OIU6FI9dlQNN8miiblnmyDwiMA3okaHl0O7qQjZ+IvY2csgmJc7AXpPpQJBAOhrhcfWFcgffj2O6HYNlBLFfbboc/ZzrEADDXKnxRSHlo5o8W+6gylG/L2NGtbag5S68B9VYzdkSQ1++5C+Ws8CQQDEu7h311PLEiKgqzGHpjzadQETmt/jMadaKQmT0TZwNVi6X8lR17U5hF8dAqZzUzr9kUC0HRIZhg4Uv1v3W3fLAkB4YPhxgJjXhjhEefg87Nt8vX1Xdx5Yz6CvpuUYNX0GHRQFvqUOUXQNtQ7CvorgLV1pc0lbcUZqMi8EJnj1hyJRAkEAjHXWm8GiMt+M15fCsi3vTq2xChVOekBuUsHv85iwvGZqJg7ThtpyqlEnM2g7/STUfkvhnXcQACclEI0blTy6BwJAPmFyhU+d0ejVpbc53TdrL2HqYYUHi/tTy/dtUa7lbypzdwwJ2M1Tv5PE8sQxr9tgMbebfxVb/RFKdiCCtzC4ng=="; + String s = RSAUtils.decrypt(sec,priKey); + System.out.println(s); + + + String appId = "5d7d4d81a64f4b8f"; + String publicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB"; + String secret = RiskHttpUtil.encrypt(appId,publicKey); + System.out.println(secret); + String res = RiskHttpUtil.login("http://101.201.36.107:12388",secret); + System.out.println(res); + JSONObject jsonObject = JSON.parseObject(res); + String token = jsonObject.getString("data"); + String resPoint = RiskHttpUtil.pointData("http://101.201.36.107:12388",token); + System.out.println(resPoint); + + + ResponseDataDTO> riskPointRes = JSON.parseObject(resPoint, new TypeReference>>() { + }); + + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java new file mode 100644 index 0000000..77c14a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.device.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dictmap.DeviceGroupQueryDict; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.vo.BusDeviceGroupVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; + +/** + * 设备分组管理信息Controller + * + * @author lwh + * @date 2025-06-11 + */ +@Api(tags = "设备分组管理信息") +@RestController +@RequestMapping("/device/group") +public class BusDeviceGroupController extends BaseController { + + private final IBusDeviceGroupService busDeviceGroupService; + private final AbstractPermissionContext abstractPermissionContext; + + public BusDeviceGroupController(IBusDeviceGroupService busDeviceGroupService, AbstractPermissionContext abstractPermissionContext) { + this.busDeviceGroupService = busDeviceGroupService; + this.abstractPermissionContext = abstractPermissionContext; + } + + @ApiOperation(value = "列表查询") + @GetMapping(value = "/list") + public ResponseDataDTO> list(BusDeviceGroupVO busDeviceGroupVO) { + QueryWrapper query = busDeviceGroupVO.genQuery(); + return ResponseDataDTO.success(busDeviceGroupService.list(query)); + } + + @ApiOperation(value = "分组树结构查询") + @BussinessLog(value = "分组树结构查询") + @GetMapping(value = "/tree") + public ResponseDataDTO> groupTree() { + List groupDTOList = busDeviceGroupService.groupTree(); + return ResponseDataDTO.success(groupDTOList); + } + + @BussinessLog(value = "设备分组分页查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "分页查询") + @GetMapping(value = "/listPage") + public ResponseDataDTO> listPage(BusDeviceGroupVO busDeviceGroupVO) { + Page page = PageFactory.defaultPage(); + QueryWrapper query = busDeviceGroupVO.genQuery(); + List list = busDeviceGroupService.selectBusDeviceGroupPage(page, query); + page.setRecords(list); + return ResponseDataDTO.success(super.packForBT(page)); + } + + @BussinessLog(value = "设备分组新增", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "新增接口") + @PostMapping(value = "/add") + public ResponseDataDTO add(@RequestBody BusDeviceGroup busDeviceGroup) { + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + busDeviceGroup.setCreateId(user.getId()); + busDeviceGroup.setCreateTime(new Date()); + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.save(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组修改", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @PostMapping(value = "/update") + public ResponseDataDTO update(@RequestBody BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.updateById(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组删除", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "删除接口") + @GetMapping(value = "/delete") + public ResponseDataDTO delete(String id) { + busDeviceGroupService.removeById(id); + return ResponseDataDTO.success(); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { + busDeviceGroupService.removeByIds(ids.getIds()); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组详情查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "详情查询") + @GetMapping(value = "/detail") + public ResponseDataDTO detail(String id) { + return ResponseDataDTO.success(busDeviceGroupService.getById(id)); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java new file mode 100644 index 0000000..9d3726f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.device.dao; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import java.util.List; +/** + *

+ * 设备分组管理信息 Mapper 接口 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface BusDeviceGroupMapper extends BaseMapper { +/** +* 设备分组管理信息 分页检索 +*/ +List selectBusDeviceGroupPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml new file mode 100644 index 0000000..a6dd84f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + id + , + create_time as createTime , + update_time as updateTime , + group_name as groupName , + create_id as createId , + dept_id as deptId + + + a + . + id + , + a.create_time + as createTime , + a.update_time + as updateTime , + a.group_name + as groupName , + a.create_id + as createId , + a.dept_id + as deptId + + + + + + and group_name like concat('%',#{request.groupName},'%') + + + and dept_id = #{request.deptId} + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java new file mode 100644 index 0000000..a821e92 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dictmap; + +import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap; + +public class DeviceGroupQueryDict extends AbstractDictMap { + + @Override + public void init() { + put("id", "主键"); + put("deptId", "所属组织"); + put("groupName", "分组名称"); + + put("deptName", "所属单位"); + } + + @Override + protected void initBeWrapped() { + + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java new file mode 100644 index 0000000..d8d1712 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.device.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + + +/** + * 设备分组管理信息对象 bus_device_group + * + * @author lwh + * @date 2025-06-11 + */ +@Data +@TableName("bus_device_group") +public class BusDeviceGroup extends Model { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键", dataType = "Long") + @TableField("id") + private Long id; + + @ApiModelProperty(value = "创建时间", dataType = "Date") + @TableField("create_time") + private Date createTime; + + @ApiModelProperty(value = "修改时间", dataType = "Date") + @TableField("update_time") + private Date updateTime; + + @ApiModelProperty(value = "分组名称", dataType = "String") + @TableField("group_name") + private String groupName; + + @ApiModelProperty(value = "创建人", dataType = "Long") + @TableField("create_id") + private Long createId; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; + @TableField(exist = false) + private String deptName; + + @Override + public String toString() { + return "BusDeviceGroup{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "groupName=" + groupName + + "createId=" + createId + + "deptId=" + deptId + + "}"; + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java new file mode 100644 index 0000000..d2cee5c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; + +import java.util.List; + + +/** + *

+ * 设备分组管理信息 服务类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface IBusDeviceGroupService extends IService { + /** + * 设备分组管理信息 分页检索 + */ + List selectBusDeviceGroupPage(Page page, QueryWrapper query); + + /** + * 树结构查询 + * + * @return + */ + List groupTree(); + + DeptDTO convertDeptDTO(BusDeviceGroup group); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java new file mode 100644 index 0000000..a6f08b7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java @@ -0,0 +1,139 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractAuthService; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.modular.data.constants.DataConstants; +import com.casic.missiles.modular.device.dao.BusDeviceGroupMapper; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; +import com.casic.missiles.modular.system.model.Dept; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.data.constants.DataConstants.NODE_TYPE_DEPT; + + +/** + *

+ * 设备分组管理信息 服务实现类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +@Service +public class BusDeviceGroupServiceImpl extends ServiceImpl implements IBusDeviceGroupService { + @Resource + private AbstractDeptService deptService; + + @Override + public List selectBusDeviceGroupPage(Page page, QueryWrapper query) { + List list = this.baseMapper.selectBusDeviceGroupPage(page, query); + list.forEach(this::wrapperInfo); + return list; + } + + @Override + public List groupTree() { + List deptList = deviceDept(); + + List deptDTOS = new ArrayList<>(); + //树节点根 + List rootIds = new ArrayList<>(); + Set normalIds = new HashSet<>(); + + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setId(dept.getId()); + deptDTO.setPid(dept.getPid()); + deptDTO.setFullName(dept.getFullName()); + deptDTO.setName(dept.getSimpleName()); + deptDTO.setType(NODE_TYPE_DEPT); + + normalIds.add(dept.getId()); + deptDTOS.add(deptDTO); + + + //查询该组织下分组信息 + LambdaQueryWrapper deviceQuery = new LambdaQueryWrapper<>(); + deviceQuery.eq(BusDeviceGroup::getDeptId, deptDTO.getId()); + + deviceQuery.orderByAsc(BusDeviceGroup::getGroupName); + List deviceInfos = this.list(deviceQuery); + List deptDTOList = new ArrayList<>(); + for (BusDeviceGroup group : deviceInfos) { + DeptDTO deptDto = this.convertDeptDTO(group); + deptDTOList.add(deptDto); + } + deptDTO.setChildrenNodes(deptDTOList); + } + + for (DeptDTO deptDTO : deptDTOS) { + if (!normalIds.contains(deptDTO.getPid())) { + rootIds.add(deptDTO.getPid()); + } + } + + //过滤根节点 + DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); + List newTree = new ArrayList<>(); + rootIds = rootIds.stream().distinct().collect(Collectors.toList()); + for (Long rootId : rootIds) { + abstractTreeBuildFactory.setRootId(rootId + ""); + newTree.addAll(abstractTreeBuildFactory.doTreeBuild(deptDTOS)); + } + return newTree; + } + + public DeptDTO convertDeptDTO(BusDeviceGroup group) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setType(DataConstants.NODE_TYPE_GROUP); + deptDTO.setId(group.getId()); + deptDTO.setPid(group.getDeptId()); + deptDTO.setName(group.getGroupName()); + deptDTO.setGroup(group); + return deptDTO; + } + + @Resource + private AbstractAuthService authService; + + private List deviceDept() { + //查询可见组织 + DataScope scope = authService.getLoginUserDataScope(); + AuthUser user = authService.getLoginUser(); + + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); + deptQuery.inSql(Dept::getId, "select dept_id from bus_device_info "); + if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums().getCode())) { + deptQuery.in(Dept::getId, scope.getDeptIds()); + } + deptQuery.orderByAsc(Dept::getNum); + + List deptList = deptService.list(deptQuery); + return deptList; + } + + @Override + public List list() { + List list = super.list(); + list.forEach(this::wrapperInfo); + return list; + } + + private void wrapperInfo(BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setDeptName(deptService.getDeptName(busDeviceGroup.getDeptId())); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java new file mode 100644 index 0000000..413d7ac --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.device.vo; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 设备分组管理信息对象VO + * + * @author lwh + * @date 2025-06-11 + */ +@Data +public class BusDeviceGroupVO { + private static final long serialVersionUID = 1L; + + + @ApiModelProperty(value = "分组名称", dataType = "String") + private String groupName; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + private Long deptId; + + public QueryWrapper genQuery() { + QueryWrapper query = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(groupName)) { + query.like("group_name", groupName); + } + if (deptId != null) { + query.eq("dept_id", deptId); + } + return query; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java new file mode 100644 index 0000000..477435e --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java @@ -0,0 +1,163 @@ +package com.casic.missiles.modular.device.dto.risk; + +import cn.hutool.core.convert.Convert; +import com.casic.missiles.modular.device.model.RiskPointInfo; +import lombok.Data; + +@Data +public class SyncRiskDTO { + /** + * 主键 + */ + private String id; + private String name; + /** + * 重大风险 + * 风险等级 + */ + private String hazardLevel; + /** + * 危险因素 + */ + private String riskFactors; + /** + * 所属单位 + */ + private String affiliatedUnit; + /** + * 所属部门 + */ + private String department; + + /** + * 定员 + */ + private String staffing; + + /** + * 定量 + */ + private String ration; + + /** + * 地理位置 + */ + private String geographicalPosition; + + /** + * 责任人 + */ + private String personLiable; + + /** + * 现场负责人 + */ + private String siteLeader; + + /** + * 主要设备、设施设计制造单位 + */ + private String zysbZzdw; + + /** + * 所在单位 + */ + private String szdw; + + /** + * 作业人数 + */ + private String numberOperators; + + /** + * 主要性能参数 + */ + private String mainPerformanceParameters; + + /** + * 工作环境参数 + */ + private String workingEnvironmentParameters; + + /** + * 安装单位 + */ + private String installationUnit; + + /** + * 投产日期 + */ + private String productionDate; + + /** + * 设备总数 + */ + private String totalEquipment; + + /** + * 备注 + */ + private String note; + + /** + * 创建用户 + */ + private String createUser; + private String createTime; + private String updateUser; + private String updateTime; + /** + * 是否删除0:否;1:是(接口已过滤掉1的数据) + */ + private Integer isDel; + + /** + * 行政区域 + */ + private String xzqy; + /** + * 街道 + */ + private String jdxx; + + /** + * 楼房 + */ + private String loufang; + + /** + * 楼层 + */ + private String louceng; + + /** + * 房间 + */ + private String roomName; + /** + * 所属单位编码 + */ + private String affiliatedUnitsCode; + + /** + * 危险性质 + */ + private String hazardousNature; + + public RiskPointInfo convertToRisk(RiskPointInfo pointInfo) { + //风险点缺少密级 + pointInfo.setSecretLevel("1"); + // hazardLevel 是否有字典值? + + if (department != null) { + pointInfo.setDeptId(Convert.toLong(department)); + } + pointInfo.setNature(hazardousNature); + pointInfo.setRiskName(name); + pointInfo.setAddress(geographicalPosition); + pointInfo.setTargetId(id); + //默认类型为1 + pointInfo.setRiskType(1); + return pointInfo; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java new file mode 100644 index 0000000..08e89a0 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.device.handler; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class BoxDefaultHttpHeaderHandler extends DefaultHttpHeaderHandler { + /** + * 代理服务IP + */ + private String xTargetHost; + + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Access-Token", token); + } + if (StrUtil.isNotEmpty(xTargetHost)){ + base.addHeader("X-TARGET-HOST", xTargetHost); + } + } + + public String getXTargetHost() { + return xTargetHost; + } + + public void setXTargetHost(String XTargetHost) { + this.xTargetHost = XTargetHost; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java new file mode 100644 index 0000000..903e567 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.http; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class RiskHttpHandler extends DefaultHttpHeaderHandler { + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Authorization", token); + } + + } +} + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java new file mode 100644 index 0000000..9f75f42 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java @@ -0,0 +1,35 @@ +package com.casic.missiles.modular.task; + +import com.casic.missiles.modular.device.service.IRiskPointInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +@Slf4j +@Component +public class RiskTask { + + @Value("${casic.risk.open:false}") + private Boolean open; + + @Resource + private IRiskPointInfoService riskPointInfoService; + + /** + * 设备信息同步0 + * 每30分钟采集一次 + */ + @Scheduled(cron = "${casic.risk.corn:0 */1 * * * *}") + public void device() { + //风险点数据同步 + if (open) { + log.info("risk sync start...."); + riskPointInfoService.loadRiskInfo(); + log.info("risk sync end...."); + } + } + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java new file mode 100644 index 0000000..e4ca4f1 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.util; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.modular.http.RiskHttpHandler; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import com.casic.missiles.modular.system.utils.HttpUtils; + +import java.util.HashMap; +import java.util.Map; + +public class RiskHttpUtil { + public static final String loginUrl = "/rest/platform/systemLogin"; + public static final String pointDataUrl = "/rest/platform/dangerPointData"; + + public static String login(String baseUrl, String secret) { + Map param = new HashMap<>(); + param.put("secret", secret); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + defaultHeaderHandler.setJson(true); + String res = HttpUtils.sendPost(baseUrl + loginUrl, param, "", defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + public static String pointData(String baseUrl, String token) { + Map param = new HashMap<>(); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + + String res = HttpUtils.sendGet(baseUrl + pointDataUrl, param, token, defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + /** + * 登录数据加密 + * @param appId 加密id + * @param publicKey 公钥 + * @return + * @throws Exception + */ + public static String encrypt(String appId,String publicKey) throws Exception { + long ts = System.currentTimeMillis(); + return RSAUtils.encrypt(appId+"_"+ts,publicKey); + } + + +} diff --git a/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java new file mode 100644 index 0000000..9ba1e2a --- /dev/null +++ b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java @@ -0,0 +1,62 @@ +package com.casic.missiles.test; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.TypeReference; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.risk.SyncRiskDTO; +import com.casic.missiles.modular.device.util.AesUtil; +import com.casic.missiles.modular.util.RiskHttpUtil; +import com.casic.missiles.modular.util.WvpUtil; +import com.casic.missiles.modular.wvp.dto.MvpResponseDTO; + +import java.io.FileInputStream; +import java.security.MessageDigest; +import java.util.Date; +import java.util.HashMap; +import java.util.List; + +public class RiskTest { + public static void main(String[] args) throws Exception { +// File file = new File("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// String task = ZipFileUtil.getZipHandleTask("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(task); +// String md5 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(md5); +// String md52 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241122.zip"); +// System.out.println(md52); + + testDeviceLogin(); + System.out.println( DateUtil.offsetMinute(new Date(),-5)); + } + public static void testDeviceLogin() throws Exception { + Long time = System.currentTimeMillis(); + String str = "FXDDT_" + time; + String pubKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCynMBxzoNBemZKuxjlZzp04Lx/b0j1xRUznBKjlQSATwc+1DaxBpKdT4WfqAuFlSQLA7qLdntXw2cvUEvRxfdjJp2KfZLkEYRmYx3LT51WdCmouQREtMrR6j3mri8jV8TjktGCmBFMKX7eGeQM8O249yVjby6502bzZXehQ707JQIDAQAB"; + String sec = RSAUtils.encrypt(str, pubKey); + System.out.println(sec); + String priKey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALKcwHHOg0F6Zkq7GOVnOnTgvH9vSPXFFTOcEqOVBIBPBz7UNrEGkp1PhZ+oC4WVJAsDuot2e1fDZy9QS9HF92MmnYp9kuQRhGZjHctPnVZ0Kai5BES0ytHqPeauLyNXxOOS0YKYEUwpft4Z5Azw7bj3JWNvLrnTZvNld6FDvTslAgMBAAECgYAqN/kZLYpC+O6i7XSmDO95XwHPUXu6dDpdt5+EQR4OQh/hTwIaeAZB3uEj6vHGQomBfQEkI/5lsU97lIxHanbd+Hro7JyIhsGD5LR5XnZHVKzFiZW62OIU6FI9dlQNN8miiblnmyDwiMA3okaHl0O7qQjZ+IvY2csgmJc7AXpPpQJBAOhrhcfWFcgffj2O6HYNlBLFfbboc/ZzrEADDXKnxRSHlo5o8W+6gylG/L2NGtbag5S68B9VYzdkSQ1++5C+Ws8CQQDEu7h311PLEiKgqzGHpjzadQETmt/jMadaKQmT0TZwNVi6X8lR17U5hF8dAqZzUzr9kUC0HRIZhg4Uv1v3W3fLAkB4YPhxgJjXhjhEefg87Nt8vX1Xdx5Yz6CvpuUYNX0GHRQFvqUOUXQNtQ7CvorgLV1pc0lbcUZqMi8EJnj1hyJRAkEAjHXWm8GiMt+M15fCsi3vTq2xChVOekBuUsHv85iwvGZqJg7ThtpyqlEnM2g7/STUfkvhnXcQACclEI0blTy6BwJAPmFyhU+d0ejVpbc53TdrL2HqYYUHi/tTy/dtUa7lbypzdwwJ2M1Tv5PE8sQxr9tgMbebfxVb/RFKdiCCtzC4ng=="; + String s = RSAUtils.decrypt(sec,priKey); + System.out.println(s); + + + String appId = "5d7d4d81a64f4b8f"; + String publicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB"; + String secret = RiskHttpUtil.encrypt(appId,publicKey); + System.out.println(secret); + String res = RiskHttpUtil.login("http://101.201.36.107:12388",secret); + System.out.println(res); + JSONObject jsonObject = JSON.parseObject(res); + String token = jsonObject.getString("data"); + String resPoint = RiskHttpUtil.pointData("http://101.201.36.107:12388",token); + System.out.println(resPoint); + + + ResponseDataDTO> riskPointRes = JSON.parseObject(resPoint, new TypeReference>>() { + }); + + } + +} diff --git a/casic-web/src/main/resources/doc/20250609.md b/casic-web/src/main/resources/doc/20250609.md new file mode 100644 index 0000000..0cb3464 --- /dev/null +++ b/casic-web/src/main/resources/doc/20250609.md @@ -0,0 +1,30 @@ +## 一、数据库更新 + +1. 设备分组数据库增加 + +``` +ALTER TABLE bus_device_info ADD COLUMN GROUP_ID bigint; + +create table bus_device_group +( + id bigint not null comment '主键', + create_time datetime comment '创建时间', + update_time datetime comment '修改时间', + group_name varchar(255) comment '分组名称', + create_id bigint comment '创建人', + dept_id bigint comment '所属组织' +); + +alter table bus_device_group comment '设备分组管理信息'; + +``` + +casic.tenant.excludes 配置项中增加 bus_device_group + + +casic.no-login-urls 中增加如下配置 +,/sync/risk/dept,/sync/risk/user/list,/sync/risk/device/list + + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java new file mode 100644 index 0000000..77c14a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.device.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dictmap.DeviceGroupQueryDict; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.vo.BusDeviceGroupVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; + +/** + * 设备分组管理信息Controller + * + * @author lwh + * @date 2025-06-11 + */ +@Api(tags = "设备分组管理信息") +@RestController +@RequestMapping("/device/group") +public class BusDeviceGroupController extends BaseController { + + private final IBusDeviceGroupService busDeviceGroupService; + private final AbstractPermissionContext abstractPermissionContext; + + public BusDeviceGroupController(IBusDeviceGroupService busDeviceGroupService, AbstractPermissionContext abstractPermissionContext) { + this.busDeviceGroupService = busDeviceGroupService; + this.abstractPermissionContext = abstractPermissionContext; + } + + @ApiOperation(value = "列表查询") + @GetMapping(value = "/list") + public ResponseDataDTO> list(BusDeviceGroupVO busDeviceGroupVO) { + QueryWrapper query = busDeviceGroupVO.genQuery(); + return ResponseDataDTO.success(busDeviceGroupService.list(query)); + } + + @ApiOperation(value = "分组树结构查询") + @BussinessLog(value = "分组树结构查询") + @GetMapping(value = "/tree") + public ResponseDataDTO> groupTree() { + List groupDTOList = busDeviceGroupService.groupTree(); + return ResponseDataDTO.success(groupDTOList); + } + + @BussinessLog(value = "设备分组分页查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "分页查询") + @GetMapping(value = "/listPage") + public ResponseDataDTO> listPage(BusDeviceGroupVO busDeviceGroupVO) { + Page page = PageFactory.defaultPage(); + QueryWrapper query = busDeviceGroupVO.genQuery(); + List list = busDeviceGroupService.selectBusDeviceGroupPage(page, query); + page.setRecords(list); + return ResponseDataDTO.success(super.packForBT(page)); + } + + @BussinessLog(value = "设备分组新增", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "新增接口") + @PostMapping(value = "/add") + public ResponseDataDTO add(@RequestBody BusDeviceGroup busDeviceGroup) { + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + busDeviceGroup.setCreateId(user.getId()); + busDeviceGroup.setCreateTime(new Date()); + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.save(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组修改", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @PostMapping(value = "/update") + public ResponseDataDTO update(@RequestBody BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.updateById(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组删除", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "删除接口") + @GetMapping(value = "/delete") + public ResponseDataDTO delete(String id) { + busDeviceGroupService.removeById(id); + return ResponseDataDTO.success(); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { + busDeviceGroupService.removeByIds(ids.getIds()); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组详情查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "详情查询") + @GetMapping(value = "/detail") + public ResponseDataDTO detail(String id) { + return ResponseDataDTO.success(busDeviceGroupService.getById(id)); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java new file mode 100644 index 0000000..9d3726f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.device.dao; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import java.util.List; +/** + *

+ * 设备分组管理信息 Mapper 接口 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface BusDeviceGroupMapper extends BaseMapper { +/** +* 设备分组管理信息 分页检索 +*/ +List selectBusDeviceGroupPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml new file mode 100644 index 0000000..a6dd84f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + id + , + create_time as createTime , + update_time as updateTime , + group_name as groupName , + create_id as createId , + dept_id as deptId + + + a + . + id + , + a.create_time + as createTime , + a.update_time + as updateTime , + a.group_name + as groupName , + a.create_id + as createId , + a.dept_id + as deptId + + + + + + and group_name like concat('%',#{request.groupName},'%') + + + and dept_id = #{request.deptId} + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java new file mode 100644 index 0000000..a821e92 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dictmap; + +import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap; + +public class DeviceGroupQueryDict extends AbstractDictMap { + + @Override + public void init() { + put("id", "主键"); + put("deptId", "所属组织"); + put("groupName", "分组名称"); + + put("deptName", "所属单位"); + } + + @Override + protected void initBeWrapped() { + + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java new file mode 100644 index 0000000..d8d1712 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.device.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + + +/** + * 设备分组管理信息对象 bus_device_group + * + * @author lwh + * @date 2025-06-11 + */ +@Data +@TableName("bus_device_group") +public class BusDeviceGroup extends Model { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键", dataType = "Long") + @TableField("id") + private Long id; + + @ApiModelProperty(value = "创建时间", dataType = "Date") + @TableField("create_time") + private Date createTime; + + @ApiModelProperty(value = "修改时间", dataType = "Date") + @TableField("update_time") + private Date updateTime; + + @ApiModelProperty(value = "分组名称", dataType = "String") + @TableField("group_name") + private String groupName; + + @ApiModelProperty(value = "创建人", dataType = "Long") + @TableField("create_id") + private Long createId; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; + @TableField(exist = false) + private String deptName; + + @Override + public String toString() { + return "BusDeviceGroup{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "groupName=" + groupName + + "createId=" + createId + + "deptId=" + deptId + + "}"; + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java new file mode 100644 index 0000000..d2cee5c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; + +import java.util.List; + + +/** + *

+ * 设备分组管理信息 服务类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface IBusDeviceGroupService extends IService { + /** + * 设备分组管理信息 分页检索 + */ + List selectBusDeviceGroupPage(Page page, QueryWrapper query); + + /** + * 树结构查询 + * + * @return + */ + List groupTree(); + + DeptDTO convertDeptDTO(BusDeviceGroup group); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java new file mode 100644 index 0000000..a6f08b7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java @@ -0,0 +1,139 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractAuthService; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.modular.data.constants.DataConstants; +import com.casic.missiles.modular.device.dao.BusDeviceGroupMapper; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; +import com.casic.missiles.modular.system.model.Dept; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.data.constants.DataConstants.NODE_TYPE_DEPT; + + +/** + *

+ * 设备分组管理信息 服务实现类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +@Service +public class BusDeviceGroupServiceImpl extends ServiceImpl implements IBusDeviceGroupService { + @Resource + private AbstractDeptService deptService; + + @Override + public List selectBusDeviceGroupPage(Page page, QueryWrapper query) { + List list = this.baseMapper.selectBusDeviceGroupPage(page, query); + list.forEach(this::wrapperInfo); + return list; + } + + @Override + public List groupTree() { + List deptList = deviceDept(); + + List deptDTOS = new ArrayList<>(); + //树节点根 + List rootIds = new ArrayList<>(); + Set normalIds = new HashSet<>(); + + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setId(dept.getId()); + deptDTO.setPid(dept.getPid()); + deptDTO.setFullName(dept.getFullName()); + deptDTO.setName(dept.getSimpleName()); + deptDTO.setType(NODE_TYPE_DEPT); + + normalIds.add(dept.getId()); + deptDTOS.add(deptDTO); + + + //查询该组织下分组信息 + LambdaQueryWrapper deviceQuery = new LambdaQueryWrapper<>(); + deviceQuery.eq(BusDeviceGroup::getDeptId, deptDTO.getId()); + + deviceQuery.orderByAsc(BusDeviceGroup::getGroupName); + List deviceInfos = this.list(deviceQuery); + List deptDTOList = new ArrayList<>(); + for (BusDeviceGroup group : deviceInfos) { + DeptDTO deptDto = this.convertDeptDTO(group); + deptDTOList.add(deptDto); + } + deptDTO.setChildrenNodes(deptDTOList); + } + + for (DeptDTO deptDTO : deptDTOS) { + if (!normalIds.contains(deptDTO.getPid())) { + rootIds.add(deptDTO.getPid()); + } + } + + //过滤根节点 + DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); + List newTree = new ArrayList<>(); + rootIds = rootIds.stream().distinct().collect(Collectors.toList()); + for (Long rootId : rootIds) { + abstractTreeBuildFactory.setRootId(rootId + ""); + newTree.addAll(abstractTreeBuildFactory.doTreeBuild(deptDTOS)); + } + return newTree; + } + + public DeptDTO convertDeptDTO(BusDeviceGroup group) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setType(DataConstants.NODE_TYPE_GROUP); + deptDTO.setId(group.getId()); + deptDTO.setPid(group.getDeptId()); + deptDTO.setName(group.getGroupName()); + deptDTO.setGroup(group); + return deptDTO; + } + + @Resource + private AbstractAuthService authService; + + private List deviceDept() { + //查询可见组织 + DataScope scope = authService.getLoginUserDataScope(); + AuthUser user = authService.getLoginUser(); + + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); + deptQuery.inSql(Dept::getId, "select dept_id from bus_device_info "); + if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums().getCode())) { + deptQuery.in(Dept::getId, scope.getDeptIds()); + } + deptQuery.orderByAsc(Dept::getNum); + + List deptList = deptService.list(deptQuery); + return deptList; + } + + @Override + public List list() { + List list = super.list(); + list.forEach(this::wrapperInfo); + return list; + } + + private void wrapperInfo(BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setDeptName(deptService.getDeptName(busDeviceGroup.getDeptId())); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java new file mode 100644 index 0000000..413d7ac --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.device.vo; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 设备分组管理信息对象VO + * + * @author lwh + * @date 2025-06-11 + */ +@Data +public class BusDeviceGroupVO { + private static final long serialVersionUID = 1L; + + + @ApiModelProperty(value = "分组名称", dataType = "String") + private String groupName; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + private Long deptId; + + public QueryWrapper genQuery() { + QueryWrapper query = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(groupName)) { + query.like("group_name", groupName); + } + if (deptId != null) { + query.eq("dept_id", deptId); + } + return query; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java new file mode 100644 index 0000000..477435e --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java @@ -0,0 +1,163 @@ +package com.casic.missiles.modular.device.dto.risk; + +import cn.hutool.core.convert.Convert; +import com.casic.missiles.modular.device.model.RiskPointInfo; +import lombok.Data; + +@Data +public class SyncRiskDTO { + /** + * 主键 + */ + private String id; + private String name; + /** + * 重大风险 + * 风险等级 + */ + private String hazardLevel; + /** + * 危险因素 + */ + private String riskFactors; + /** + * 所属单位 + */ + private String affiliatedUnit; + /** + * 所属部门 + */ + private String department; + + /** + * 定员 + */ + private String staffing; + + /** + * 定量 + */ + private String ration; + + /** + * 地理位置 + */ + private String geographicalPosition; + + /** + * 责任人 + */ + private String personLiable; + + /** + * 现场负责人 + */ + private String siteLeader; + + /** + * 主要设备、设施设计制造单位 + */ + private String zysbZzdw; + + /** + * 所在单位 + */ + private String szdw; + + /** + * 作业人数 + */ + private String numberOperators; + + /** + * 主要性能参数 + */ + private String mainPerformanceParameters; + + /** + * 工作环境参数 + */ + private String workingEnvironmentParameters; + + /** + * 安装单位 + */ + private String installationUnit; + + /** + * 投产日期 + */ + private String productionDate; + + /** + * 设备总数 + */ + private String totalEquipment; + + /** + * 备注 + */ + private String note; + + /** + * 创建用户 + */ + private String createUser; + private String createTime; + private String updateUser; + private String updateTime; + /** + * 是否删除0:否;1:是(接口已过滤掉1的数据) + */ + private Integer isDel; + + /** + * 行政区域 + */ + private String xzqy; + /** + * 街道 + */ + private String jdxx; + + /** + * 楼房 + */ + private String loufang; + + /** + * 楼层 + */ + private String louceng; + + /** + * 房间 + */ + private String roomName; + /** + * 所属单位编码 + */ + private String affiliatedUnitsCode; + + /** + * 危险性质 + */ + private String hazardousNature; + + public RiskPointInfo convertToRisk(RiskPointInfo pointInfo) { + //风险点缺少密级 + pointInfo.setSecretLevel("1"); + // hazardLevel 是否有字典值? + + if (department != null) { + pointInfo.setDeptId(Convert.toLong(department)); + } + pointInfo.setNature(hazardousNature); + pointInfo.setRiskName(name); + pointInfo.setAddress(geographicalPosition); + pointInfo.setTargetId(id); + //默认类型为1 + pointInfo.setRiskType(1); + return pointInfo; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java new file mode 100644 index 0000000..08e89a0 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.device.handler; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class BoxDefaultHttpHeaderHandler extends DefaultHttpHeaderHandler { + /** + * 代理服务IP + */ + private String xTargetHost; + + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Access-Token", token); + } + if (StrUtil.isNotEmpty(xTargetHost)){ + base.addHeader("X-TARGET-HOST", xTargetHost); + } + } + + public String getXTargetHost() { + return xTargetHost; + } + + public void setXTargetHost(String XTargetHost) { + this.xTargetHost = XTargetHost; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java new file mode 100644 index 0000000..903e567 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.http; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class RiskHttpHandler extends DefaultHttpHeaderHandler { + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Authorization", token); + } + + } +} + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java new file mode 100644 index 0000000..9f75f42 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java @@ -0,0 +1,35 @@ +package com.casic.missiles.modular.task; + +import com.casic.missiles.modular.device.service.IRiskPointInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +@Slf4j +@Component +public class RiskTask { + + @Value("${casic.risk.open:false}") + private Boolean open; + + @Resource + private IRiskPointInfoService riskPointInfoService; + + /** + * 设备信息同步0 + * 每30分钟采集一次 + */ + @Scheduled(cron = "${casic.risk.corn:0 */1 * * * *}") + public void device() { + //风险点数据同步 + if (open) { + log.info("risk sync start...."); + riskPointInfoService.loadRiskInfo(); + log.info("risk sync end...."); + } + } + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java new file mode 100644 index 0000000..e4ca4f1 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.util; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.modular.http.RiskHttpHandler; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import com.casic.missiles.modular.system.utils.HttpUtils; + +import java.util.HashMap; +import java.util.Map; + +public class RiskHttpUtil { + public static final String loginUrl = "/rest/platform/systemLogin"; + public static final String pointDataUrl = "/rest/platform/dangerPointData"; + + public static String login(String baseUrl, String secret) { + Map param = new HashMap<>(); + param.put("secret", secret); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + defaultHeaderHandler.setJson(true); + String res = HttpUtils.sendPost(baseUrl + loginUrl, param, "", defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + public static String pointData(String baseUrl, String token) { + Map param = new HashMap<>(); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + + String res = HttpUtils.sendGet(baseUrl + pointDataUrl, param, token, defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + /** + * 登录数据加密 + * @param appId 加密id + * @param publicKey 公钥 + * @return + * @throws Exception + */ + public static String encrypt(String appId,String publicKey) throws Exception { + long ts = System.currentTimeMillis(); + return RSAUtils.encrypt(appId+"_"+ts,publicKey); + } + + +} diff --git a/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java new file mode 100644 index 0000000..9ba1e2a --- /dev/null +++ b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java @@ -0,0 +1,62 @@ +package com.casic.missiles.test; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.TypeReference; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.risk.SyncRiskDTO; +import com.casic.missiles.modular.device.util.AesUtil; +import com.casic.missiles.modular.util.RiskHttpUtil; +import com.casic.missiles.modular.util.WvpUtil; +import com.casic.missiles.modular.wvp.dto.MvpResponseDTO; + +import java.io.FileInputStream; +import java.security.MessageDigest; +import java.util.Date; +import java.util.HashMap; +import java.util.List; + +public class RiskTest { + public static void main(String[] args) throws Exception { +// File file = new File("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// String task = ZipFileUtil.getZipHandleTask("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(task); +// String md5 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(md5); +// String md52 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241122.zip"); +// System.out.println(md52); + + testDeviceLogin(); + System.out.println( DateUtil.offsetMinute(new Date(),-5)); + } + public static void testDeviceLogin() throws Exception { + Long time = System.currentTimeMillis(); + String str = "FXDDT_" + time; + String pubKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCynMBxzoNBemZKuxjlZzp04Lx/b0j1xRUznBKjlQSATwc+1DaxBpKdT4WfqAuFlSQLA7qLdntXw2cvUEvRxfdjJp2KfZLkEYRmYx3LT51WdCmouQREtMrR6j3mri8jV8TjktGCmBFMKX7eGeQM8O249yVjby6502bzZXehQ707JQIDAQAB"; + String sec = RSAUtils.encrypt(str, pubKey); + System.out.println(sec); + String priKey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALKcwHHOg0F6Zkq7GOVnOnTgvH9vSPXFFTOcEqOVBIBPBz7UNrEGkp1PhZ+oC4WVJAsDuot2e1fDZy9QS9HF92MmnYp9kuQRhGZjHctPnVZ0Kai5BES0ytHqPeauLyNXxOOS0YKYEUwpft4Z5Azw7bj3JWNvLrnTZvNld6FDvTslAgMBAAECgYAqN/kZLYpC+O6i7XSmDO95XwHPUXu6dDpdt5+EQR4OQh/hTwIaeAZB3uEj6vHGQomBfQEkI/5lsU97lIxHanbd+Hro7JyIhsGD5LR5XnZHVKzFiZW62OIU6FI9dlQNN8miiblnmyDwiMA3okaHl0O7qQjZ+IvY2csgmJc7AXpPpQJBAOhrhcfWFcgffj2O6HYNlBLFfbboc/ZzrEADDXKnxRSHlo5o8W+6gylG/L2NGtbag5S68B9VYzdkSQ1++5C+Ws8CQQDEu7h311PLEiKgqzGHpjzadQETmt/jMadaKQmT0TZwNVi6X8lR17U5hF8dAqZzUzr9kUC0HRIZhg4Uv1v3W3fLAkB4YPhxgJjXhjhEefg87Nt8vX1Xdx5Yz6CvpuUYNX0GHRQFvqUOUXQNtQ7CvorgLV1pc0lbcUZqMi8EJnj1hyJRAkEAjHXWm8GiMt+M15fCsi3vTq2xChVOekBuUsHv85iwvGZqJg7ThtpyqlEnM2g7/STUfkvhnXcQACclEI0blTy6BwJAPmFyhU+d0ejVpbc53TdrL2HqYYUHi/tTy/dtUa7lbypzdwwJ2M1Tv5PE8sQxr9tgMbebfxVb/RFKdiCCtzC4ng=="; + String s = RSAUtils.decrypt(sec,priKey); + System.out.println(s); + + + String appId = "5d7d4d81a64f4b8f"; + String publicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB"; + String secret = RiskHttpUtil.encrypt(appId,publicKey); + System.out.println(secret); + String res = RiskHttpUtil.login("http://101.201.36.107:12388",secret); + System.out.println(res); + JSONObject jsonObject = JSON.parseObject(res); + String token = jsonObject.getString("data"); + String resPoint = RiskHttpUtil.pointData("http://101.201.36.107:12388",token); + System.out.println(resPoint); + + + ResponseDataDTO> riskPointRes = JSON.parseObject(resPoint, new TypeReference>>() { + }); + + } + +} diff --git a/casic-web/src/main/resources/doc/20250609.md b/casic-web/src/main/resources/doc/20250609.md new file mode 100644 index 0000000..0cb3464 --- /dev/null +++ b/casic-web/src/main/resources/doc/20250609.md @@ -0,0 +1,30 @@ +## 一、数据库更新 + +1. 设备分组数据库增加 + +``` +ALTER TABLE bus_device_info ADD COLUMN GROUP_ID bigint; + +create table bus_device_group +( + id bigint not null comment '主键', + create_time datetime comment '创建时间', + update_time datetime comment '修改时间', + group_name varchar(255) comment '分组名称', + create_id bigint comment '创建人', + dept_id bigint comment '所属组织' +); + +alter table bus_device_group comment '设备分组管理信息'; + +``` + +casic.tenant.excludes 配置项中增加 bus_device_group + + +casic.no-login-urls 中增加如下配置 +,/sync/risk/dept,/sync/risk/user/list,/sync/risk/device/list + + + + diff --git a/casic-web/src/main/resources/doc/20250624.md b/casic-web/src/main/resources/doc/20250624.md new file mode 100644 index 0000000..7af561d --- /dev/null +++ b/casic-web/src/main/resources/doc/20250624.md @@ -0,0 +1,34 @@ +## 一、数据库更新 + +1. 风险点表添加同步ID + +``` +ALTER TABLE risk_point_info ADD COLUMN TARGET_ID VARCHAR(255); + +``` + +2. 风险点相关配置项 + +casic.risk.open 默认false 不开启 开启需配置true +casic.risk.corn 定时时间 默认0 */5 * * * * 5分钟 +casic.risk.appId 默认 5d7d4d81a64f4b8f 如变更需更改 +casic.risk.publicKey 公钥 默认MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB +casic.risk.host 风险点地址, 默认http://101.201.36.107:12388 生产需更改 + +3. 增加字典值 + hazardLevelName 风险危险等级(706映射) + 1 低风险 + 1 一般风险 + 2 较大风险 + 3 重大风险 + 以上字典值以706风险等级名称对应本系统风险点1 2 3 等级,如果706风险等级名称变更 修改对应字典值名称即可 + +4. 盒子代理服务模块添加 + 增加配置项 + casic.video.box.proxy 192.168.83.37:30064 此处需变更为部署代理nginx的ip及端口,具体配置参见国标级联及代理服务配置说明 + + + + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java new file mode 100644 index 0000000..77c14a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.device.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dictmap.DeviceGroupQueryDict; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.vo.BusDeviceGroupVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; + +/** + * 设备分组管理信息Controller + * + * @author lwh + * @date 2025-06-11 + */ +@Api(tags = "设备分组管理信息") +@RestController +@RequestMapping("/device/group") +public class BusDeviceGroupController extends BaseController { + + private final IBusDeviceGroupService busDeviceGroupService; + private final AbstractPermissionContext abstractPermissionContext; + + public BusDeviceGroupController(IBusDeviceGroupService busDeviceGroupService, AbstractPermissionContext abstractPermissionContext) { + this.busDeviceGroupService = busDeviceGroupService; + this.abstractPermissionContext = abstractPermissionContext; + } + + @ApiOperation(value = "列表查询") + @GetMapping(value = "/list") + public ResponseDataDTO> list(BusDeviceGroupVO busDeviceGroupVO) { + QueryWrapper query = busDeviceGroupVO.genQuery(); + return ResponseDataDTO.success(busDeviceGroupService.list(query)); + } + + @ApiOperation(value = "分组树结构查询") + @BussinessLog(value = "分组树结构查询") + @GetMapping(value = "/tree") + public ResponseDataDTO> groupTree() { + List groupDTOList = busDeviceGroupService.groupTree(); + return ResponseDataDTO.success(groupDTOList); + } + + @BussinessLog(value = "设备分组分页查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "分页查询") + @GetMapping(value = "/listPage") + public ResponseDataDTO> listPage(BusDeviceGroupVO busDeviceGroupVO) { + Page page = PageFactory.defaultPage(); + QueryWrapper query = busDeviceGroupVO.genQuery(); + List list = busDeviceGroupService.selectBusDeviceGroupPage(page, query); + page.setRecords(list); + return ResponseDataDTO.success(super.packForBT(page)); + } + + @BussinessLog(value = "设备分组新增", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "新增接口") + @PostMapping(value = "/add") + public ResponseDataDTO add(@RequestBody BusDeviceGroup busDeviceGroup) { + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + busDeviceGroup.setCreateId(user.getId()); + busDeviceGroup.setCreateTime(new Date()); + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.save(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组修改", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @PostMapping(value = "/update") + public ResponseDataDTO update(@RequestBody BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.updateById(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组删除", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "删除接口") + @GetMapping(value = "/delete") + public ResponseDataDTO delete(String id) { + busDeviceGroupService.removeById(id); + return ResponseDataDTO.success(); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { + busDeviceGroupService.removeByIds(ids.getIds()); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组详情查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "详情查询") + @GetMapping(value = "/detail") + public ResponseDataDTO detail(String id) { + return ResponseDataDTO.success(busDeviceGroupService.getById(id)); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java new file mode 100644 index 0000000..9d3726f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.device.dao; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import java.util.List; +/** + *

+ * 设备分组管理信息 Mapper 接口 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface BusDeviceGroupMapper extends BaseMapper { +/** +* 设备分组管理信息 分页检索 +*/ +List selectBusDeviceGroupPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml new file mode 100644 index 0000000..a6dd84f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + id + , + create_time as createTime , + update_time as updateTime , + group_name as groupName , + create_id as createId , + dept_id as deptId + + + a + . + id + , + a.create_time + as createTime , + a.update_time + as updateTime , + a.group_name + as groupName , + a.create_id + as createId , + a.dept_id + as deptId + + + + + + and group_name like concat('%',#{request.groupName},'%') + + + and dept_id = #{request.deptId} + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java new file mode 100644 index 0000000..a821e92 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dictmap; + +import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap; + +public class DeviceGroupQueryDict extends AbstractDictMap { + + @Override + public void init() { + put("id", "主键"); + put("deptId", "所属组织"); + put("groupName", "分组名称"); + + put("deptName", "所属单位"); + } + + @Override + protected void initBeWrapped() { + + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java new file mode 100644 index 0000000..d8d1712 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.device.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + + +/** + * 设备分组管理信息对象 bus_device_group + * + * @author lwh + * @date 2025-06-11 + */ +@Data +@TableName("bus_device_group") +public class BusDeviceGroup extends Model { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键", dataType = "Long") + @TableField("id") + private Long id; + + @ApiModelProperty(value = "创建时间", dataType = "Date") + @TableField("create_time") + private Date createTime; + + @ApiModelProperty(value = "修改时间", dataType = "Date") + @TableField("update_time") + private Date updateTime; + + @ApiModelProperty(value = "分组名称", dataType = "String") + @TableField("group_name") + private String groupName; + + @ApiModelProperty(value = "创建人", dataType = "Long") + @TableField("create_id") + private Long createId; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; + @TableField(exist = false) + private String deptName; + + @Override + public String toString() { + return "BusDeviceGroup{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "groupName=" + groupName + + "createId=" + createId + + "deptId=" + deptId + + "}"; + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java new file mode 100644 index 0000000..d2cee5c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; + +import java.util.List; + + +/** + *

+ * 设备分组管理信息 服务类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface IBusDeviceGroupService extends IService { + /** + * 设备分组管理信息 分页检索 + */ + List selectBusDeviceGroupPage(Page page, QueryWrapper query); + + /** + * 树结构查询 + * + * @return + */ + List groupTree(); + + DeptDTO convertDeptDTO(BusDeviceGroup group); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java new file mode 100644 index 0000000..a6f08b7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java @@ -0,0 +1,139 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractAuthService; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.modular.data.constants.DataConstants; +import com.casic.missiles.modular.device.dao.BusDeviceGroupMapper; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; +import com.casic.missiles.modular.system.model.Dept; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.data.constants.DataConstants.NODE_TYPE_DEPT; + + +/** + *

+ * 设备分组管理信息 服务实现类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +@Service +public class BusDeviceGroupServiceImpl extends ServiceImpl implements IBusDeviceGroupService { + @Resource + private AbstractDeptService deptService; + + @Override + public List selectBusDeviceGroupPage(Page page, QueryWrapper query) { + List list = this.baseMapper.selectBusDeviceGroupPage(page, query); + list.forEach(this::wrapperInfo); + return list; + } + + @Override + public List groupTree() { + List deptList = deviceDept(); + + List deptDTOS = new ArrayList<>(); + //树节点根 + List rootIds = new ArrayList<>(); + Set normalIds = new HashSet<>(); + + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setId(dept.getId()); + deptDTO.setPid(dept.getPid()); + deptDTO.setFullName(dept.getFullName()); + deptDTO.setName(dept.getSimpleName()); + deptDTO.setType(NODE_TYPE_DEPT); + + normalIds.add(dept.getId()); + deptDTOS.add(deptDTO); + + + //查询该组织下分组信息 + LambdaQueryWrapper deviceQuery = new LambdaQueryWrapper<>(); + deviceQuery.eq(BusDeviceGroup::getDeptId, deptDTO.getId()); + + deviceQuery.orderByAsc(BusDeviceGroup::getGroupName); + List deviceInfos = this.list(deviceQuery); + List deptDTOList = new ArrayList<>(); + for (BusDeviceGroup group : deviceInfos) { + DeptDTO deptDto = this.convertDeptDTO(group); + deptDTOList.add(deptDto); + } + deptDTO.setChildrenNodes(deptDTOList); + } + + for (DeptDTO deptDTO : deptDTOS) { + if (!normalIds.contains(deptDTO.getPid())) { + rootIds.add(deptDTO.getPid()); + } + } + + //过滤根节点 + DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); + List newTree = new ArrayList<>(); + rootIds = rootIds.stream().distinct().collect(Collectors.toList()); + for (Long rootId : rootIds) { + abstractTreeBuildFactory.setRootId(rootId + ""); + newTree.addAll(abstractTreeBuildFactory.doTreeBuild(deptDTOS)); + } + return newTree; + } + + public DeptDTO convertDeptDTO(BusDeviceGroup group) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setType(DataConstants.NODE_TYPE_GROUP); + deptDTO.setId(group.getId()); + deptDTO.setPid(group.getDeptId()); + deptDTO.setName(group.getGroupName()); + deptDTO.setGroup(group); + return deptDTO; + } + + @Resource + private AbstractAuthService authService; + + private List deviceDept() { + //查询可见组织 + DataScope scope = authService.getLoginUserDataScope(); + AuthUser user = authService.getLoginUser(); + + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); + deptQuery.inSql(Dept::getId, "select dept_id from bus_device_info "); + if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums().getCode())) { + deptQuery.in(Dept::getId, scope.getDeptIds()); + } + deptQuery.orderByAsc(Dept::getNum); + + List deptList = deptService.list(deptQuery); + return deptList; + } + + @Override + public List list() { + List list = super.list(); + list.forEach(this::wrapperInfo); + return list; + } + + private void wrapperInfo(BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setDeptName(deptService.getDeptName(busDeviceGroup.getDeptId())); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java new file mode 100644 index 0000000..413d7ac --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.device.vo; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 设备分组管理信息对象VO + * + * @author lwh + * @date 2025-06-11 + */ +@Data +public class BusDeviceGroupVO { + private static final long serialVersionUID = 1L; + + + @ApiModelProperty(value = "分组名称", dataType = "String") + private String groupName; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + private Long deptId; + + public QueryWrapper genQuery() { + QueryWrapper query = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(groupName)) { + query.like("group_name", groupName); + } + if (deptId != null) { + query.eq("dept_id", deptId); + } + return query; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java new file mode 100644 index 0000000..477435e --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java @@ -0,0 +1,163 @@ +package com.casic.missiles.modular.device.dto.risk; + +import cn.hutool.core.convert.Convert; +import com.casic.missiles.modular.device.model.RiskPointInfo; +import lombok.Data; + +@Data +public class SyncRiskDTO { + /** + * 主键 + */ + private String id; + private String name; + /** + * 重大风险 + * 风险等级 + */ + private String hazardLevel; + /** + * 危险因素 + */ + private String riskFactors; + /** + * 所属单位 + */ + private String affiliatedUnit; + /** + * 所属部门 + */ + private String department; + + /** + * 定员 + */ + private String staffing; + + /** + * 定量 + */ + private String ration; + + /** + * 地理位置 + */ + private String geographicalPosition; + + /** + * 责任人 + */ + private String personLiable; + + /** + * 现场负责人 + */ + private String siteLeader; + + /** + * 主要设备、设施设计制造单位 + */ + private String zysbZzdw; + + /** + * 所在单位 + */ + private String szdw; + + /** + * 作业人数 + */ + private String numberOperators; + + /** + * 主要性能参数 + */ + private String mainPerformanceParameters; + + /** + * 工作环境参数 + */ + private String workingEnvironmentParameters; + + /** + * 安装单位 + */ + private String installationUnit; + + /** + * 投产日期 + */ + private String productionDate; + + /** + * 设备总数 + */ + private String totalEquipment; + + /** + * 备注 + */ + private String note; + + /** + * 创建用户 + */ + private String createUser; + private String createTime; + private String updateUser; + private String updateTime; + /** + * 是否删除0:否;1:是(接口已过滤掉1的数据) + */ + private Integer isDel; + + /** + * 行政区域 + */ + private String xzqy; + /** + * 街道 + */ + private String jdxx; + + /** + * 楼房 + */ + private String loufang; + + /** + * 楼层 + */ + private String louceng; + + /** + * 房间 + */ + private String roomName; + /** + * 所属单位编码 + */ + private String affiliatedUnitsCode; + + /** + * 危险性质 + */ + private String hazardousNature; + + public RiskPointInfo convertToRisk(RiskPointInfo pointInfo) { + //风险点缺少密级 + pointInfo.setSecretLevel("1"); + // hazardLevel 是否有字典值? + + if (department != null) { + pointInfo.setDeptId(Convert.toLong(department)); + } + pointInfo.setNature(hazardousNature); + pointInfo.setRiskName(name); + pointInfo.setAddress(geographicalPosition); + pointInfo.setTargetId(id); + //默认类型为1 + pointInfo.setRiskType(1); + return pointInfo; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java new file mode 100644 index 0000000..08e89a0 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.device.handler; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class BoxDefaultHttpHeaderHandler extends DefaultHttpHeaderHandler { + /** + * 代理服务IP + */ + private String xTargetHost; + + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Access-Token", token); + } + if (StrUtil.isNotEmpty(xTargetHost)){ + base.addHeader("X-TARGET-HOST", xTargetHost); + } + } + + public String getXTargetHost() { + return xTargetHost; + } + + public void setXTargetHost(String XTargetHost) { + this.xTargetHost = XTargetHost; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java new file mode 100644 index 0000000..903e567 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.http; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class RiskHttpHandler extends DefaultHttpHeaderHandler { + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Authorization", token); + } + + } +} + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java new file mode 100644 index 0000000..9f75f42 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java @@ -0,0 +1,35 @@ +package com.casic.missiles.modular.task; + +import com.casic.missiles.modular.device.service.IRiskPointInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +@Slf4j +@Component +public class RiskTask { + + @Value("${casic.risk.open:false}") + private Boolean open; + + @Resource + private IRiskPointInfoService riskPointInfoService; + + /** + * 设备信息同步0 + * 每30分钟采集一次 + */ + @Scheduled(cron = "${casic.risk.corn:0 */1 * * * *}") + public void device() { + //风险点数据同步 + if (open) { + log.info("risk sync start...."); + riskPointInfoService.loadRiskInfo(); + log.info("risk sync end...."); + } + } + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java new file mode 100644 index 0000000..e4ca4f1 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.util; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.modular.http.RiskHttpHandler; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import com.casic.missiles.modular.system.utils.HttpUtils; + +import java.util.HashMap; +import java.util.Map; + +public class RiskHttpUtil { + public static final String loginUrl = "/rest/platform/systemLogin"; + public static final String pointDataUrl = "/rest/platform/dangerPointData"; + + public static String login(String baseUrl, String secret) { + Map param = new HashMap<>(); + param.put("secret", secret); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + defaultHeaderHandler.setJson(true); + String res = HttpUtils.sendPost(baseUrl + loginUrl, param, "", defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + public static String pointData(String baseUrl, String token) { + Map param = new HashMap<>(); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + + String res = HttpUtils.sendGet(baseUrl + pointDataUrl, param, token, defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + /** + * 登录数据加密 + * @param appId 加密id + * @param publicKey 公钥 + * @return + * @throws Exception + */ + public static String encrypt(String appId,String publicKey) throws Exception { + long ts = System.currentTimeMillis(); + return RSAUtils.encrypt(appId+"_"+ts,publicKey); + } + + +} diff --git a/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java new file mode 100644 index 0000000..9ba1e2a --- /dev/null +++ b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java @@ -0,0 +1,62 @@ +package com.casic.missiles.test; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.TypeReference; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.risk.SyncRiskDTO; +import com.casic.missiles.modular.device.util.AesUtil; +import com.casic.missiles.modular.util.RiskHttpUtil; +import com.casic.missiles.modular.util.WvpUtil; +import com.casic.missiles.modular.wvp.dto.MvpResponseDTO; + +import java.io.FileInputStream; +import java.security.MessageDigest; +import java.util.Date; +import java.util.HashMap; +import java.util.List; + +public class RiskTest { + public static void main(String[] args) throws Exception { +// File file = new File("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// String task = ZipFileUtil.getZipHandleTask("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(task); +// String md5 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(md5); +// String md52 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241122.zip"); +// System.out.println(md52); + + testDeviceLogin(); + System.out.println( DateUtil.offsetMinute(new Date(),-5)); + } + public static void testDeviceLogin() throws Exception { + Long time = System.currentTimeMillis(); + String str = "FXDDT_" + time; + String pubKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCynMBxzoNBemZKuxjlZzp04Lx/b0j1xRUznBKjlQSATwc+1DaxBpKdT4WfqAuFlSQLA7qLdntXw2cvUEvRxfdjJp2KfZLkEYRmYx3LT51WdCmouQREtMrR6j3mri8jV8TjktGCmBFMKX7eGeQM8O249yVjby6502bzZXehQ707JQIDAQAB"; + String sec = RSAUtils.encrypt(str, pubKey); + System.out.println(sec); + String priKey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALKcwHHOg0F6Zkq7GOVnOnTgvH9vSPXFFTOcEqOVBIBPBz7UNrEGkp1PhZ+oC4WVJAsDuot2e1fDZy9QS9HF92MmnYp9kuQRhGZjHctPnVZ0Kai5BES0ytHqPeauLyNXxOOS0YKYEUwpft4Z5Azw7bj3JWNvLrnTZvNld6FDvTslAgMBAAECgYAqN/kZLYpC+O6i7XSmDO95XwHPUXu6dDpdt5+EQR4OQh/hTwIaeAZB3uEj6vHGQomBfQEkI/5lsU97lIxHanbd+Hro7JyIhsGD5LR5XnZHVKzFiZW62OIU6FI9dlQNN8miiblnmyDwiMA3okaHl0O7qQjZ+IvY2csgmJc7AXpPpQJBAOhrhcfWFcgffj2O6HYNlBLFfbboc/ZzrEADDXKnxRSHlo5o8W+6gylG/L2NGtbag5S68B9VYzdkSQ1++5C+Ws8CQQDEu7h311PLEiKgqzGHpjzadQETmt/jMadaKQmT0TZwNVi6X8lR17U5hF8dAqZzUzr9kUC0HRIZhg4Uv1v3W3fLAkB4YPhxgJjXhjhEefg87Nt8vX1Xdx5Yz6CvpuUYNX0GHRQFvqUOUXQNtQ7CvorgLV1pc0lbcUZqMi8EJnj1hyJRAkEAjHXWm8GiMt+M15fCsi3vTq2xChVOekBuUsHv85iwvGZqJg7ThtpyqlEnM2g7/STUfkvhnXcQACclEI0blTy6BwJAPmFyhU+d0ejVpbc53TdrL2HqYYUHi/tTy/dtUa7lbypzdwwJ2M1Tv5PE8sQxr9tgMbebfxVb/RFKdiCCtzC4ng=="; + String s = RSAUtils.decrypt(sec,priKey); + System.out.println(s); + + + String appId = "5d7d4d81a64f4b8f"; + String publicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB"; + String secret = RiskHttpUtil.encrypt(appId,publicKey); + System.out.println(secret); + String res = RiskHttpUtil.login("http://101.201.36.107:12388",secret); + System.out.println(res); + JSONObject jsonObject = JSON.parseObject(res); + String token = jsonObject.getString("data"); + String resPoint = RiskHttpUtil.pointData("http://101.201.36.107:12388",token); + System.out.println(resPoint); + + + ResponseDataDTO> riskPointRes = JSON.parseObject(resPoint, new TypeReference>>() { + }); + + } + +} diff --git a/casic-web/src/main/resources/doc/20250609.md b/casic-web/src/main/resources/doc/20250609.md new file mode 100644 index 0000000..0cb3464 --- /dev/null +++ b/casic-web/src/main/resources/doc/20250609.md @@ -0,0 +1,30 @@ +## 一、数据库更新 + +1. 设备分组数据库增加 + +``` +ALTER TABLE bus_device_info ADD COLUMN GROUP_ID bigint; + +create table bus_device_group +( + id bigint not null comment '主键', + create_time datetime comment '创建时间', + update_time datetime comment '修改时间', + group_name varchar(255) comment '分组名称', + create_id bigint comment '创建人', + dept_id bigint comment '所属组织' +); + +alter table bus_device_group comment '设备分组管理信息'; + +``` + +casic.tenant.excludes 配置项中增加 bus_device_group + + +casic.no-login-urls 中增加如下配置 +,/sync/risk/dept,/sync/risk/user/list,/sync/risk/device/list + + + + diff --git a/casic-web/src/main/resources/doc/20250624.md b/casic-web/src/main/resources/doc/20250624.md new file mode 100644 index 0000000..7af561d --- /dev/null +++ b/casic-web/src/main/resources/doc/20250624.md @@ -0,0 +1,34 @@ +## 一、数据库更新 + +1. 风险点表添加同步ID + +``` +ALTER TABLE risk_point_info ADD COLUMN TARGET_ID VARCHAR(255); + +``` + +2. 风险点相关配置项 + +casic.risk.open 默认false 不开启 开启需配置true +casic.risk.corn 定时时间 默认0 */5 * * * * 5分钟 +casic.risk.appId 默认 5d7d4d81a64f4b8f 如变更需更改 +casic.risk.publicKey 公钥 默认MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB +casic.risk.host 风险点地址, 默认http://101.201.36.107:12388 生产需更改 + +3. 增加字典值 + hazardLevelName 风险危险等级(706映射) + 1 低风险 + 1 一般风险 + 2 较大风险 + 3 重大风险 + 以上字典值以706风险等级名称对应本系统风险点1 2 3 等级,如果706风险等级名称变更 修改对应字典值名称即可 + +4. 盒子代理服务模块添加 + 增加配置项 + casic.video.box.proxy 192.168.83.37:30064 此处需变更为部署代理nginx的ip及端口,具体配置参见国标级联及代理服务配置说明 + + + + + + diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" new file mode 100644 index 0000000..30cdcbd --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" Binary files differ diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java new file mode 100644 index 0000000..77c14a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.device.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dictmap.DeviceGroupQueryDict; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.vo.BusDeviceGroupVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; + +/** + * 设备分组管理信息Controller + * + * @author lwh + * @date 2025-06-11 + */ +@Api(tags = "设备分组管理信息") +@RestController +@RequestMapping("/device/group") +public class BusDeviceGroupController extends BaseController { + + private final IBusDeviceGroupService busDeviceGroupService; + private final AbstractPermissionContext abstractPermissionContext; + + public BusDeviceGroupController(IBusDeviceGroupService busDeviceGroupService, AbstractPermissionContext abstractPermissionContext) { + this.busDeviceGroupService = busDeviceGroupService; + this.abstractPermissionContext = abstractPermissionContext; + } + + @ApiOperation(value = "列表查询") + @GetMapping(value = "/list") + public ResponseDataDTO> list(BusDeviceGroupVO busDeviceGroupVO) { + QueryWrapper query = busDeviceGroupVO.genQuery(); + return ResponseDataDTO.success(busDeviceGroupService.list(query)); + } + + @ApiOperation(value = "分组树结构查询") + @BussinessLog(value = "分组树结构查询") + @GetMapping(value = "/tree") + public ResponseDataDTO> groupTree() { + List groupDTOList = busDeviceGroupService.groupTree(); + return ResponseDataDTO.success(groupDTOList); + } + + @BussinessLog(value = "设备分组分页查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "分页查询") + @GetMapping(value = "/listPage") + public ResponseDataDTO> listPage(BusDeviceGroupVO busDeviceGroupVO) { + Page page = PageFactory.defaultPage(); + QueryWrapper query = busDeviceGroupVO.genQuery(); + List list = busDeviceGroupService.selectBusDeviceGroupPage(page, query); + page.setRecords(list); + return ResponseDataDTO.success(super.packForBT(page)); + } + + @BussinessLog(value = "设备分组新增", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "新增接口") + @PostMapping(value = "/add") + public ResponseDataDTO add(@RequestBody BusDeviceGroup busDeviceGroup) { + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + busDeviceGroup.setCreateId(user.getId()); + busDeviceGroup.setCreateTime(new Date()); + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.save(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组修改", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @PostMapping(value = "/update") + public ResponseDataDTO update(@RequestBody BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.updateById(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组删除", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "删除接口") + @GetMapping(value = "/delete") + public ResponseDataDTO delete(String id) { + busDeviceGroupService.removeById(id); + return ResponseDataDTO.success(); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { + busDeviceGroupService.removeByIds(ids.getIds()); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组详情查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "详情查询") + @GetMapping(value = "/detail") + public ResponseDataDTO detail(String id) { + return ResponseDataDTO.success(busDeviceGroupService.getById(id)); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java new file mode 100644 index 0000000..9d3726f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.device.dao; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import java.util.List; +/** + *

+ * 设备分组管理信息 Mapper 接口 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface BusDeviceGroupMapper extends BaseMapper { +/** +* 设备分组管理信息 分页检索 +*/ +List selectBusDeviceGroupPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml new file mode 100644 index 0000000..a6dd84f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + id + , + create_time as createTime , + update_time as updateTime , + group_name as groupName , + create_id as createId , + dept_id as deptId + + + a + . + id + , + a.create_time + as createTime , + a.update_time + as updateTime , + a.group_name + as groupName , + a.create_id + as createId , + a.dept_id + as deptId + + + + + + and group_name like concat('%',#{request.groupName},'%') + + + and dept_id = #{request.deptId} + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java new file mode 100644 index 0000000..a821e92 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dictmap; + +import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap; + +public class DeviceGroupQueryDict extends AbstractDictMap { + + @Override + public void init() { + put("id", "主键"); + put("deptId", "所属组织"); + put("groupName", "分组名称"); + + put("deptName", "所属单位"); + } + + @Override + protected void initBeWrapped() { + + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java new file mode 100644 index 0000000..d8d1712 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.device.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + + +/** + * 设备分组管理信息对象 bus_device_group + * + * @author lwh + * @date 2025-06-11 + */ +@Data +@TableName("bus_device_group") +public class BusDeviceGroup extends Model { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键", dataType = "Long") + @TableField("id") + private Long id; + + @ApiModelProperty(value = "创建时间", dataType = "Date") + @TableField("create_time") + private Date createTime; + + @ApiModelProperty(value = "修改时间", dataType = "Date") + @TableField("update_time") + private Date updateTime; + + @ApiModelProperty(value = "分组名称", dataType = "String") + @TableField("group_name") + private String groupName; + + @ApiModelProperty(value = "创建人", dataType = "Long") + @TableField("create_id") + private Long createId; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; + @TableField(exist = false) + private String deptName; + + @Override + public String toString() { + return "BusDeviceGroup{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "groupName=" + groupName + + "createId=" + createId + + "deptId=" + deptId + + "}"; + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java new file mode 100644 index 0000000..d2cee5c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; + +import java.util.List; + + +/** + *

+ * 设备分组管理信息 服务类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface IBusDeviceGroupService extends IService { + /** + * 设备分组管理信息 分页检索 + */ + List selectBusDeviceGroupPage(Page page, QueryWrapper query); + + /** + * 树结构查询 + * + * @return + */ + List groupTree(); + + DeptDTO convertDeptDTO(BusDeviceGroup group); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java new file mode 100644 index 0000000..a6f08b7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java @@ -0,0 +1,139 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractAuthService; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.modular.data.constants.DataConstants; +import com.casic.missiles.modular.device.dao.BusDeviceGroupMapper; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; +import com.casic.missiles.modular.system.model.Dept; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.data.constants.DataConstants.NODE_TYPE_DEPT; + + +/** + *

+ * 设备分组管理信息 服务实现类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +@Service +public class BusDeviceGroupServiceImpl extends ServiceImpl implements IBusDeviceGroupService { + @Resource + private AbstractDeptService deptService; + + @Override + public List selectBusDeviceGroupPage(Page page, QueryWrapper query) { + List list = this.baseMapper.selectBusDeviceGroupPage(page, query); + list.forEach(this::wrapperInfo); + return list; + } + + @Override + public List groupTree() { + List deptList = deviceDept(); + + List deptDTOS = new ArrayList<>(); + //树节点根 + List rootIds = new ArrayList<>(); + Set normalIds = new HashSet<>(); + + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setId(dept.getId()); + deptDTO.setPid(dept.getPid()); + deptDTO.setFullName(dept.getFullName()); + deptDTO.setName(dept.getSimpleName()); + deptDTO.setType(NODE_TYPE_DEPT); + + normalIds.add(dept.getId()); + deptDTOS.add(deptDTO); + + + //查询该组织下分组信息 + LambdaQueryWrapper deviceQuery = new LambdaQueryWrapper<>(); + deviceQuery.eq(BusDeviceGroup::getDeptId, deptDTO.getId()); + + deviceQuery.orderByAsc(BusDeviceGroup::getGroupName); + List deviceInfos = this.list(deviceQuery); + List deptDTOList = new ArrayList<>(); + for (BusDeviceGroup group : deviceInfos) { + DeptDTO deptDto = this.convertDeptDTO(group); + deptDTOList.add(deptDto); + } + deptDTO.setChildrenNodes(deptDTOList); + } + + for (DeptDTO deptDTO : deptDTOS) { + if (!normalIds.contains(deptDTO.getPid())) { + rootIds.add(deptDTO.getPid()); + } + } + + //过滤根节点 + DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); + List newTree = new ArrayList<>(); + rootIds = rootIds.stream().distinct().collect(Collectors.toList()); + for (Long rootId : rootIds) { + abstractTreeBuildFactory.setRootId(rootId + ""); + newTree.addAll(abstractTreeBuildFactory.doTreeBuild(deptDTOS)); + } + return newTree; + } + + public DeptDTO convertDeptDTO(BusDeviceGroup group) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setType(DataConstants.NODE_TYPE_GROUP); + deptDTO.setId(group.getId()); + deptDTO.setPid(group.getDeptId()); + deptDTO.setName(group.getGroupName()); + deptDTO.setGroup(group); + return deptDTO; + } + + @Resource + private AbstractAuthService authService; + + private List deviceDept() { + //查询可见组织 + DataScope scope = authService.getLoginUserDataScope(); + AuthUser user = authService.getLoginUser(); + + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); + deptQuery.inSql(Dept::getId, "select dept_id from bus_device_info "); + if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums().getCode())) { + deptQuery.in(Dept::getId, scope.getDeptIds()); + } + deptQuery.orderByAsc(Dept::getNum); + + List deptList = deptService.list(deptQuery); + return deptList; + } + + @Override + public List list() { + List list = super.list(); + list.forEach(this::wrapperInfo); + return list; + } + + private void wrapperInfo(BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setDeptName(deptService.getDeptName(busDeviceGroup.getDeptId())); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java new file mode 100644 index 0000000..413d7ac --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.device.vo; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 设备分组管理信息对象VO + * + * @author lwh + * @date 2025-06-11 + */ +@Data +public class BusDeviceGroupVO { + private static final long serialVersionUID = 1L; + + + @ApiModelProperty(value = "分组名称", dataType = "String") + private String groupName; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + private Long deptId; + + public QueryWrapper genQuery() { + QueryWrapper query = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(groupName)) { + query.like("group_name", groupName); + } + if (deptId != null) { + query.eq("dept_id", deptId); + } + return query; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java new file mode 100644 index 0000000..477435e --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java @@ -0,0 +1,163 @@ +package com.casic.missiles.modular.device.dto.risk; + +import cn.hutool.core.convert.Convert; +import com.casic.missiles.modular.device.model.RiskPointInfo; +import lombok.Data; + +@Data +public class SyncRiskDTO { + /** + * 主键 + */ + private String id; + private String name; + /** + * 重大风险 + * 风险等级 + */ + private String hazardLevel; + /** + * 危险因素 + */ + private String riskFactors; + /** + * 所属单位 + */ + private String affiliatedUnit; + /** + * 所属部门 + */ + private String department; + + /** + * 定员 + */ + private String staffing; + + /** + * 定量 + */ + private String ration; + + /** + * 地理位置 + */ + private String geographicalPosition; + + /** + * 责任人 + */ + private String personLiable; + + /** + * 现场负责人 + */ + private String siteLeader; + + /** + * 主要设备、设施设计制造单位 + */ + private String zysbZzdw; + + /** + * 所在单位 + */ + private String szdw; + + /** + * 作业人数 + */ + private String numberOperators; + + /** + * 主要性能参数 + */ + private String mainPerformanceParameters; + + /** + * 工作环境参数 + */ + private String workingEnvironmentParameters; + + /** + * 安装单位 + */ + private String installationUnit; + + /** + * 投产日期 + */ + private String productionDate; + + /** + * 设备总数 + */ + private String totalEquipment; + + /** + * 备注 + */ + private String note; + + /** + * 创建用户 + */ + private String createUser; + private String createTime; + private String updateUser; + private String updateTime; + /** + * 是否删除0:否;1:是(接口已过滤掉1的数据) + */ + private Integer isDel; + + /** + * 行政区域 + */ + private String xzqy; + /** + * 街道 + */ + private String jdxx; + + /** + * 楼房 + */ + private String loufang; + + /** + * 楼层 + */ + private String louceng; + + /** + * 房间 + */ + private String roomName; + /** + * 所属单位编码 + */ + private String affiliatedUnitsCode; + + /** + * 危险性质 + */ + private String hazardousNature; + + public RiskPointInfo convertToRisk(RiskPointInfo pointInfo) { + //风险点缺少密级 + pointInfo.setSecretLevel("1"); + // hazardLevel 是否有字典值? + + if (department != null) { + pointInfo.setDeptId(Convert.toLong(department)); + } + pointInfo.setNature(hazardousNature); + pointInfo.setRiskName(name); + pointInfo.setAddress(geographicalPosition); + pointInfo.setTargetId(id); + //默认类型为1 + pointInfo.setRiskType(1); + return pointInfo; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java new file mode 100644 index 0000000..08e89a0 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.device.handler; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class BoxDefaultHttpHeaderHandler extends DefaultHttpHeaderHandler { + /** + * 代理服务IP + */ + private String xTargetHost; + + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Access-Token", token); + } + if (StrUtil.isNotEmpty(xTargetHost)){ + base.addHeader("X-TARGET-HOST", xTargetHost); + } + } + + public String getXTargetHost() { + return xTargetHost; + } + + public void setXTargetHost(String XTargetHost) { + this.xTargetHost = XTargetHost; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java new file mode 100644 index 0000000..903e567 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.http; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class RiskHttpHandler extends DefaultHttpHeaderHandler { + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Authorization", token); + } + + } +} + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java new file mode 100644 index 0000000..9f75f42 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java @@ -0,0 +1,35 @@ +package com.casic.missiles.modular.task; + +import com.casic.missiles.modular.device.service.IRiskPointInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +@Slf4j +@Component +public class RiskTask { + + @Value("${casic.risk.open:false}") + private Boolean open; + + @Resource + private IRiskPointInfoService riskPointInfoService; + + /** + * 设备信息同步0 + * 每30分钟采集一次 + */ + @Scheduled(cron = "${casic.risk.corn:0 */1 * * * *}") + public void device() { + //风险点数据同步 + if (open) { + log.info("risk sync start...."); + riskPointInfoService.loadRiskInfo(); + log.info("risk sync end...."); + } + } + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java new file mode 100644 index 0000000..e4ca4f1 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.util; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.modular.http.RiskHttpHandler; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import com.casic.missiles.modular.system.utils.HttpUtils; + +import java.util.HashMap; +import java.util.Map; + +public class RiskHttpUtil { + public static final String loginUrl = "/rest/platform/systemLogin"; + public static final String pointDataUrl = "/rest/platform/dangerPointData"; + + public static String login(String baseUrl, String secret) { + Map param = new HashMap<>(); + param.put("secret", secret); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + defaultHeaderHandler.setJson(true); + String res = HttpUtils.sendPost(baseUrl + loginUrl, param, "", defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + public static String pointData(String baseUrl, String token) { + Map param = new HashMap<>(); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + + String res = HttpUtils.sendGet(baseUrl + pointDataUrl, param, token, defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + /** + * 登录数据加密 + * @param appId 加密id + * @param publicKey 公钥 + * @return + * @throws Exception + */ + public static String encrypt(String appId,String publicKey) throws Exception { + long ts = System.currentTimeMillis(); + return RSAUtils.encrypt(appId+"_"+ts,publicKey); + } + + +} diff --git a/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java new file mode 100644 index 0000000..9ba1e2a --- /dev/null +++ b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java @@ -0,0 +1,62 @@ +package com.casic.missiles.test; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.TypeReference; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.risk.SyncRiskDTO; +import com.casic.missiles.modular.device.util.AesUtil; +import com.casic.missiles.modular.util.RiskHttpUtil; +import com.casic.missiles.modular.util.WvpUtil; +import com.casic.missiles.modular.wvp.dto.MvpResponseDTO; + +import java.io.FileInputStream; +import java.security.MessageDigest; +import java.util.Date; +import java.util.HashMap; +import java.util.List; + +public class RiskTest { + public static void main(String[] args) throws Exception { +// File file = new File("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// String task = ZipFileUtil.getZipHandleTask("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(task); +// String md5 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(md5); +// String md52 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241122.zip"); +// System.out.println(md52); + + testDeviceLogin(); + System.out.println( DateUtil.offsetMinute(new Date(),-5)); + } + public static void testDeviceLogin() throws Exception { + Long time = System.currentTimeMillis(); + String str = "FXDDT_" + time; + String pubKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCynMBxzoNBemZKuxjlZzp04Lx/b0j1xRUznBKjlQSATwc+1DaxBpKdT4WfqAuFlSQLA7qLdntXw2cvUEvRxfdjJp2KfZLkEYRmYx3LT51WdCmouQREtMrR6j3mri8jV8TjktGCmBFMKX7eGeQM8O249yVjby6502bzZXehQ707JQIDAQAB"; + String sec = RSAUtils.encrypt(str, pubKey); + System.out.println(sec); + String priKey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALKcwHHOg0F6Zkq7GOVnOnTgvH9vSPXFFTOcEqOVBIBPBz7UNrEGkp1PhZ+oC4WVJAsDuot2e1fDZy9QS9HF92MmnYp9kuQRhGZjHctPnVZ0Kai5BES0ytHqPeauLyNXxOOS0YKYEUwpft4Z5Azw7bj3JWNvLrnTZvNld6FDvTslAgMBAAECgYAqN/kZLYpC+O6i7XSmDO95XwHPUXu6dDpdt5+EQR4OQh/hTwIaeAZB3uEj6vHGQomBfQEkI/5lsU97lIxHanbd+Hro7JyIhsGD5LR5XnZHVKzFiZW62OIU6FI9dlQNN8miiblnmyDwiMA3okaHl0O7qQjZ+IvY2csgmJc7AXpPpQJBAOhrhcfWFcgffj2O6HYNlBLFfbboc/ZzrEADDXKnxRSHlo5o8W+6gylG/L2NGtbag5S68B9VYzdkSQ1++5C+Ws8CQQDEu7h311PLEiKgqzGHpjzadQETmt/jMadaKQmT0TZwNVi6X8lR17U5hF8dAqZzUzr9kUC0HRIZhg4Uv1v3W3fLAkB4YPhxgJjXhjhEefg87Nt8vX1Xdx5Yz6CvpuUYNX0GHRQFvqUOUXQNtQ7CvorgLV1pc0lbcUZqMi8EJnj1hyJRAkEAjHXWm8GiMt+M15fCsi3vTq2xChVOekBuUsHv85iwvGZqJg7ThtpyqlEnM2g7/STUfkvhnXcQACclEI0blTy6BwJAPmFyhU+d0ejVpbc53TdrL2HqYYUHi/tTy/dtUa7lbypzdwwJ2M1Tv5PE8sQxr9tgMbebfxVb/RFKdiCCtzC4ng=="; + String s = RSAUtils.decrypt(sec,priKey); + System.out.println(s); + + + String appId = "5d7d4d81a64f4b8f"; + String publicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB"; + String secret = RiskHttpUtil.encrypt(appId,publicKey); + System.out.println(secret); + String res = RiskHttpUtil.login("http://101.201.36.107:12388",secret); + System.out.println(res); + JSONObject jsonObject = JSON.parseObject(res); + String token = jsonObject.getString("data"); + String resPoint = RiskHttpUtil.pointData("http://101.201.36.107:12388",token); + System.out.println(resPoint); + + + ResponseDataDTO> riskPointRes = JSON.parseObject(resPoint, new TypeReference>>() { + }); + + } + +} diff --git a/casic-web/src/main/resources/doc/20250609.md b/casic-web/src/main/resources/doc/20250609.md new file mode 100644 index 0000000..0cb3464 --- /dev/null +++ b/casic-web/src/main/resources/doc/20250609.md @@ -0,0 +1,30 @@ +## 一、数据库更新 + +1. 设备分组数据库增加 + +``` +ALTER TABLE bus_device_info ADD COLUMN GROUP_ID bigint; + +create table bus_device_group +( + id bigint not null comment '主键', + create_time datetime comment '创建时间', + update_time datetime comment '修改时间', + group_name varchar(255) comment '分组名称', + create_id bigint comment '创建人', + dept_id bigint comment '所属组织' +); + +alter table bus_device_group comment '设备分组管理信息'; + +``` + +casic.tenant.excludes 配置项中增加 bus_device_group + + +casic.no-login-urls 中增加如下配置 +,/sync/risk/dept,/sync/risk/user/list,/sync/risk/device/list + + + + diff --git a/casic-web/src/main/resources/doc/20250624.md b/casic-web/src/main/resources/doc/20250624.md new file mode 100644 index 0000000..7af561d --- /dev/null +++ b/casic-web/src/main/resources/doc/20250624.md @@ -0,0 +1,34 @@ +## 一、数据库更新 + +1. 风险点表添加同步ID + +``` +ALTER TABLE risk_point_info ADD COLUMN TARGET_ID VARCHAR(255); + +``` + +2. 风险点相关配置项 + +casic.risk.open 默认false 不开启 开启需配置true +casic.risk.corn 定时时间 默认0 */5 * * * * 5分钟 +casic.risk.appId 默认 5d7d4d81a64f4b8f 如变更需更改 +casic.risk.publicKey 公钥 默认MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB +casic.risk.host 风险点地址, 默认http://101.201.36.107:12388 生产需更改 + +3. 增加字典值 + hazardLevelName 风险危险等级(706映射) + 1 低风险 + 1 一般风险 + 2 较大风险 + 3 重大风险 + 以上字典值以706风险等级名称对应本系统风险点1 2 3 等级,如果706风险等级名称变更 修改对应字典值名称即可 + +4. 盒子代理服务模块添加 + 增加配置项 + casic.video.box.proxy 192.168.83.37:30064 此处需变更为部署代理nginx的ip及端口,具体配置参见国标级联及代理服务配置说明 + + + + + + diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" new file mode 100644 index 0000000..30cdcbd --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" new file mode 100644 index 0000000..6a0069c --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java new file mode 100644 index 0000000..77c14a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.device.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dictmap.DeviceGroupQueryDict; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.vo.BusDeviceGroupVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; + +/** + * 设备分组管理信息Controller + * + * @author lwh + * @date 2025-06-11 + */ +@Api(tags = "设备分组管理信息") +@RestController +@RequestMapping("/device/group") +public class BusDeviceGroupController extends BaseController { + + private final IBusDeviceGroupService busDeviceGroupService; + private final AbstractPermissionContext abstractPermissionContext; + + public BusDeviceGroupController(IBusDeviceGroupService busDeviceGroupService, AbstractPermissionContext abstractPermissionContext) { + this.busDeviceGroupService = busDeviceGroupService; + this.abstractPermissionContext = abstractPermissionContext; + } + + @ApiOperation(value = "列表查询") + @GetMapping(value = "/list") + public ResponseDataDTO> list(BusDeviceGroupVO busDeviceGroupVO) { + QueryWrapper query = busDeviceGroupVO.genQuery(); + return ResponseDataDTO.success(busDeviceGroupService.list(query)); + } + + @ApiOperation(value = "分组树结构查询") + @BussinessLog(value = "分组树结构查询") + @GetMapping(value = "/tree") + public ResponseDataDTO> groupTree() { + List groupDTOList = busDeviceGroupService.groupTree(); + return ResponseDataDTO.success(groupDTOList); + } + + @BussinessLog(value = "设备分组分页查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "分页查询") + @GetMapping(value = "/listPage") + public ResponseDataDTO> listPage(BusDeviceGroupVO busDeviceGroupVO) { + Page page = PageFactory.defaultPage(); + QueryWrapper query = busDeviceGroupVO.genQuery(); + List list = busDeviceGroupService.selectBusDeviceGroupPage(page, query); + page.setRecords(list); + return ResponseDataDTO.success(super.packForBT(page)); + } + + @BussinessLog(value = "设备分组新增", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "新增接口") + @PostMapping(value = "/add") + public ResponseDataDTO add(@RequestBody BusDeviceGroup busDeviceGroup) { + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + busDeviceGroup.setCreateId(user.getId()); + busDeviceGroup.setCreateTime(new Date()); + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.save(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组修改", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @PostMapping(value = "/update") + public ResponseDataDTO update(@RequestBody BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.updateById(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组删除", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "删除接口") + @GetMapping(value = "/delete") + public ResponseDataDTO delete(String id) { + busDeviceGroupService.removeById(id); + return ResponseDataDTO.success(); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { + busDeviceGroupService.removeByIds(ids.getIds()); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组详情查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "详情查询") + @GetMapping(value = "/detail") + public ResponseDataDTO detail(String id) { + return ResponseDataDTO.success(busDeviceGroupService.getById(id)); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java new file mode 100644 index 0000000..9d3726f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.device.dao; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import java.util.List; +/** + *

+ * 设备分组管理信息 Mapper 接口 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface BusDeviceGroupMapper extends BaseMapper { +/** +* 设备分组管理信息 分页检索 +*/ +List selectBusDeviceGroupPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml new file mode 100644 index 0000000..a6dd84f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + id + , + create_time as createTime , + update_time as updateTime , + group_name as groupName , + create_id as createId , + dept_id as deptId + + + a + . + id + , + a.create_time + as createTime , + a.update_time + as updateTime , + a.group_name + as groupName , + a.create_id + as createId , + a.dept_id + as deptId + + + + + + and group_name like concat('%',#{request.groupName},'%') + + + and dept_id = #{request.deptId} + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java new file mode 100644 index 0000000..a821e92 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dictmap; + +import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap; + +public class DeviceGroupQueryDict extends AbstractDictMap { + + @Override + public void init() { + put("id", "主键"); + put("deptId", "所属组织"); + put("groupName", "分组名称"); + + put("deptName", "所属单位"); + } + + @Override + protected void initBeWrapped() { + + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java new file mode 100644 index 0000000..d8d1712 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.device.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + + +/** + * 设备分组管理信息对象 bus_device_group + * + * @author lwh + * @date 2025-06-11 + */ +@Data +@TableName("bus_device_group") +public class BusDeviceGroup extends Model { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键", dataType = "Long") + @TableField("id") + private Long id; + + @ApiModelProperty(value = "创建时间", dataType = "Date") + @TableField("create_time") + private Date createTime; + + @ApiModelProperty(value = "修改时间", dataType = "Date") + @TableField("update_time") + private Date updateTime; + + @ApiModelProperty(value = "分组名称", dataType = "String") + @TableField("group_name") + private String groupName; + + @ApiModelProperty(value = "创建人", dataType = "Long") + @TableField("create_id") + private Long createId; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; + @TableField(exist = false) + private String deptName; + + @Override + public String toString() { + return "BusDeviceGroup{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "groupName=" + groupName + + "createId=" + createId + + "deptId=" + deptId + + "}"; + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java new file mode 100644 index 0000000..d2cee5c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; + +import java.util.List; + + +/** + *

+ * 设备分组管理信息 服务类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface IBusDeviceGroupService extends IService { + /** + * 设备分组管理信息 分页检索 + */ + List selectBusDeviceGroupPage(Page page, QueryWrapper query); + + /** + * 树结构查询 + * + * @return + */ + List groupTree(); + + DeptDTO convertDeptDTO(BusDeviceGroup group); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java new file mode 100644 index 0000000..a6f08b7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java @@ -0,0 +1,139 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractAuthService; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.modular.data.constants.DataConstants; +import com.casic.missiles.modular.device.dao.BusDeviceGroupMapper; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; +import com.casic.missiles.modular.system.model.Dept; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.data.constants.DataConstants.NODE_TYPE_DEPT; + + +/** + *

+ * 设备分组管理信息 服务实现类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +@Service +public class BusDeviceGroupServiceImpl extends ServiceImpl implements IBusDeviceGroupService { + @Resource + private AbstractDeptService deptService; + + @Override + public List selectBusDeviceGroupPage(Page page, QueryWrapper query) { + List list = this.baseMapper.selectBusDeviceGroupPage(page, query); + list.forEach(this::wrapperInfo); + return list; + } + + @Override + public List groupTree() { + List deptList = deviceDept(); + + List deptDTOS = new ArrayList<>(); + //树节点根 + List rootIds = new ArrayList<>(); + Set normalIds = new HashSet<>(); + + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setId(dept.getId()); + deptDTO.setPid(dept.getPid()); + deptDTO.setFullName(dept.getFullName()); + deptDTO.setName(dept.getSimpleName()); + deptDTO.setType(NODE_TYPE_DEPT); + + normalIds.add(dept.getId()); + deptDTOS.add(deptDTO); + + + //查询该组织下分组信息 + LambdaQueryWrapper deviceQuery = new LambdaQueryWrapper<>(); + deviceQuery.eq(BusDeviceGroup::getDeptId, deptDTO.getId()); + + deviceQuery.orderByAsc(BusDeviceGroup::getGroupName); + List deviceInfos = this.list(deviceQuery); + List deptDTOList = new ArrayList<>(); + for (BusDeviceGroup group : deviceInfos) { + DeptDTO deptDto = this.convertDeptDTO(group); + deptDTOList.add(deptDto); + } + deptDTO.setChildrenNodes(deptDTOList); + } + + for (DeptDTO deptDTO : deptDTOS) { + if (!normalIds.contains(deptDTO.getPid())) { + rootIds.add(deptDTO.getPid()); + } + } + + //过滤根节点 + DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); + List newTree = new ArrayList<>(); + rootIds = rootIds.stream().distinct().collect(Collectors.toList()); + for (Long rootId : rootIds) { + abstractTreeBuildFactory.setRootId(rootId + ""); + newTree.addAll(abstractTreeBuildFactory.doTreeBuild(deptDTOS)); + } + return newTree; + } + + public DeptDTO convertDeptDTO(BusDeviceGroup group) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setType(DataConstants.NODE_TYPE_GROUP); + deptDTO.setId(group.getId()); + deptDTO.setPid(group.getDeptId()); + deptDTO.setName(group.getGroupName()); + deptDTO.setGroup(group); + return deptDTO; + } + + @Resource + private AbstractAuthService authService; + + private List deviceDept() { + //查询可见组织 + DataScope scope = authService.getLoginUserDataScope(); + AuthUser user = authService.getLoginUser(); + + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); + deptQuery.inSql(Dept::getId, "select dept_id from bus_device_info "); + if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums().getCode())) { + deptQuery.in(Dept::getId, scope.getDeptIds()); + } + deptQuery.orderByAsc(Dept::getNum); + + List deptList = deptService.list(deptQuery); + return deptList; + } + + @Override + public List list() { + List list = super.list(); + list.forEach(this::wrapperInfo); + return list; + } + + private void wrapperInfo(BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setDeptName(deptService.getDeptName(busDeviceGroup.getDeptId())); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java new file mode 100644 index 0000000..413d7ac --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.device.vo; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 设备分组管理信息对象VO + * + * @author lwh + * @date 2025-06-11 + */ +@Data +public class BusDeviceGroupVO { + private static final long serialVersionUID = 1L; + + + @ApiModelProperty(value = "分组名称", dataType = "String") + private String groupName; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + private Long deptId; + + public QueryWrapper genQuery() { + QueryWrapper query = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(groupName)) { + query.like("group_name", groupName); + } + if (deptId != null) { + query.eq("dept_id", deptId); + } + return query; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java new file mode 100644 index 0000000..477435e --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java @@ -0,0 +1,163 @@ +package com.casic.missiles.modular.device.dto.risk; + +import cn.hutool.core.convert.Convert; +import com.casic.missiles.modular.device.model.RiskPointInfo; +import lombok.Data; + +@Data +public class SyncRiskDTO { + /** + * 主键 + */ + private String id; + private String name; + /** + * 重大风险 + * 风险等级 + */ + private String hazardLevel; + /** + * 危险因素 + */ + private String riskFactors; + /** + * 所属单位 + */ + private String affiliatedUnit; + /** + * 所属部门 + */ + private String department; + + /** + * 定员 + */ + private String staffing; + + /** + * 定量 + */ + private String ration; + + /** + * 地理位置 + */ + private String geographicalPosition; + + /** + * 责任人 + */ + private String personLiable; + + /** + * 现场负责人 + */ + private String siteLeader; + + /** + * 主要设备、设施设计制造单位 + */ + private String zysbZzdw; + + /** + * 所在单位 + */ + private String szdw; + + /** + * 作业人数 + */ + private String numberOperators; + + /** + * 主要性能参数 + */ + private String mainPerformanceParameters; + + /** + * 工作环境参数 + */ + private String workingEnvironmentParameters; + + /** + * 安装单位 + */ + private String installationUnit; + + /** + * 投产日期 + */ + private String productionDate; + + /** + * 设备总数 + */ + private String totalEquipment; + + /** + * 备注 + */ + private String note; + + /** + * 创建用户 + */ + private String createUser; + private String createTime; + private String updateUser; + private String updateTime; + /** + * 是否删除0:否;1:是(接口已过滤掉1的数据) + */ + private Integer isDel; + + /** + * 行政区域 + */ + private String xzqy; + /** + * 街道 + */ + private String jdxx; + + /** + * 楼房 + */ + private String loufang; + + /** + * 楼层 + */ + private String louceng; + + /** + * 房间 + */ + private String roomName; + /** + * 所属单位编码 + */ + private String affiliatedUnitsCode; + + /** + * 危险性质 + */ + private String hazardousNature; + + public RiskPointInfo convertToRisk(RiskPointInfo pointInfo) { + //风险点缺少密级 + pointInfo.setSecretLevel("1"); + // hazardLevel 是否有字典值? + + if (department != null) { + pointInfo.setDeptId(Convert.toLong(department)); + } + pointInfo.setNature(hazardousNature); + pointInfo.setRiskName(name); + pointInfo.setAddress(geographicalPosition); + pointInfo.setTargetId(id); + //默认类型为1 + pointInfo.setRiskType(1); + return pointInfo; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java new file mode 100644 index 0000000..08e89a0 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.device.handler; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class BoxDefaultHttpHeaderHandler extends DefaultHttpHeaderHandler { + /** + * 代理服务IP + */ + private String xTargetHost; + + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Access-Token", token); + } + if (StrUtil.isNotEmpty(xTargetHost)){ + base.addHeader("X-TARGET-HOST", xTargetHost); + } + } + + public String getXTargetHost() { + return xTargetHost; + } + + public void setXTargetHost(String XTargetHost) { + this.xTargetHost = XTargetHost; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java new file mode 100644 index 0000000..903e567 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.http; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class RiskHttpHandler extends DefaultHttpHeaderHandler { + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Authorization", token); + } + + } +} + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java new file mode 100644 index 0000000..9f75f42 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java @@ -0,0 +1,35 @@ +package com.casic.missiles.modular.task; + +import com.casic.missiles.modular.device.service.IRiskPointInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +@Slf4j +@Component +public class RiskTask { + + @Value("${casic.risk.open:false}") + private Boolean open; + + @Resource + private IRiskPointInfoService riskPointInfoService; + + /** + * 设备信息同步0 + * 每30分钟采集一次 + */ + @Scheduled(cron = "${casic.risk.corn:0 */1 * * * *}") + public void device() { + //风险点数据同步 + if (open) { + log.info("risk sync start...."); + riskPointInfoService.loadRiskInfo(); + log.info("risk sync end...."); + } + } + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java new file mode 100644 index 0000000..e4ca4f1 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.util; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.modular.http.RiskHttpHandler; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import com.casic.missiles.modular.system.utils.HttpUtils; + +import java.util.HashMap; +import java.util.Map; + +public class RiskHttpUtil { + public static final String loginUrl = "/rest/platform/systemLogin"; + public static final String pointDataUrl = "/rest/platform/dangerPointData"; + + public static String login(String baseUrl, String secret) { + Map param = new HashMap<>(); + param.put("secret", secret); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + defaultHeaderHandler.setJson(true); + String res = HttpUtils.sendPost(baseUrl + loginUrl, param, "", defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + public static String pointData(String baseUrl, String token) { + Map param = new HashMap<>(); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + + String res = HttpUtils.sendGet(baseUrl + pointDataUrl, param, token, defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + /** + * 登录数据加密 + * @param appId 加密id + * @param publicKey 公钥 + * @return + * @throws Exception + */ + public static String encrypt(String appId,String publicKey) throws Exception { + long ts = System.currentTimeMillis(); + return RSAUtils.encrypt(appId+"_"+ts,publicKey); + } + + +} diff --git a/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java new file mode 100644 index 0000000..9ba1e2a --- /dev/null +++ b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java @@ -0,0 +1,62 @@ +package com.casic.missiles.test; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.TypeReference; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.risk.SyncRiskDTO; +import com.casic.missiles.modular.device.util.AesUtil; +import com.casic.missiles.modular.util.RiskHttpUtil; +import com.casic.missiles.modular.util.WvpUtil; +import com.casic.missiles.modular.wvp.dto.MvpResponseDTO; + +import java.io.FileInputStream; +import java.security.MessageDigest; +import java.util.Date; +import java.util.HashMap; +import java.util.List; + +public class RiskTest { + public static void main(String[] args) throws Exception { +// File file = new File("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// String task = ZipFileUtil.getZipHandleTask("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(task); +// String md5 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(md5); +// String md52 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241122.zip"); +// System.out.println(md52); + + testDeviceLogin(); + System.out.println( DateUtil.offsetMinute(new Date(),-5)); + } + public static void testDeviceLogin() throws Exception { + Long time = System.currentTimeMillis(); + String str = "FXDDT_" + time; + String pubKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCynMBxzoNBemZKuxjlZzp04Lx/b0j1xRUznBKjlQSATwc+1DaxBpKdT4WfqAuFlSQLA7qLdntXw2cvUEvRxfdjJp2KfZLkEYRmYx3LT51WdCmouQREtMrR6j3mri8jV8TjktGCmBFMKX7eGeQM8O249yVjby6502bzZXehQ707JQIDAQAB"; + String sec = RSAUtils.encrypt(str, pubKey); + System.out.println(sec); + String priKey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALKcwHHOg0F6Zkq7GOVnOnTgvH9vSPXFFTOcEqOVBIBPBz7UNrEGkp1PhZ+oC4WVJAsDuot2e1fDZy9QS9HF92MmnYp9kuQRhGZjHctPnVZ0Kai5BES0ytHqPeauLyNXxOOS0YKYEUwpft4Z5Azw7bj3JWNvLrnTZvNld6FDvTslAgMBAAECgYAqN/kZLYpC+O6i7XSmDO95XwHPUXu6dDpdt5+EQR4OQh/hTwIaeAZB3uEj6vHGQomBfQEkI/5lsU97lIxHanbd+Hro7JyIhsGD5LR5XnZHVKzFiZW62OIU6FI9dlQNN8miiblnmyDwiMA3okaHl0O7qQjZ+IvY2csgmJc7AXpPpQJBAOhrhcfWFcgffj2O6HYNlBLFfbboc/ZzrEADDXKnxRSHlo5o8W+6gylG/L2NGtbag5S68B9VYzdkSQ1++5C+Ws8CQQDEu7h311PLEiKgqzGHpjzadQETmt/jMadaKQmT0TZwNVi6X8lR17U5hF8dAqZzUzr9kUC0HRIZhg4Uv1v3W3fLAkB4YPhxgJjXhjhEefg87Nt8vX1Xdx5Yz6CvpuUYNX0GHRQFvqUOUXQNtQ7CvorgLV1pc0lbcUZqMi8EJnj1hyJRAkEAjHXWm8GiMt+M15fCsi3vTq2xChVOekBuUsHv85iwvGZqJg7ThtpyqlEnM2g7/STUfkvhnXcQACclEI0blTy6BwJAPmFyhU+d0ejVpbc53TdrL2HqYYUHi/tTy/dtUa7lbypzdwwJ2M1Tv5PE8sQxr9tgMbebfxVb/RFKdiCCtzC4ng=="; + String s = RSAUtils.decrypt(sec,priKey); + System.out.println(s); + + + String appId = "5d7d4d81a64f4b8f"; + String publicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB"; + String secret = RiskHttpUtil.encrypt(appId,publicKey); + System.out.println(secret); + String res = RiskHttpUtil.login("http://101.201.36.107:12388",secret); + System.out.println(res); + JSONObject jsonObject = JSON.parseObject(res); + String token = jsonObject.getString("data"); + String resPoint = RiskHttpUtil.pointData("http://101.201.36.107:12388",token); + System.out.println(resPoint); + + + ResponseDataDTO> riskPointRes = JSON.parseObject(resPoint, new TypeReference>>() { + }); + + } + +} diff --git a/casic-web/src/main/resources/doc/20250609.md b/casic-web/src/main/resources/doc/20250609.md new file mode 100644 index 0000000..0cb3464 --- /dev/null +++ b/casic-web/src/main/resources/doc/20250609.md @@ -0,0 +1,30 @@ +## 一、数据库更新 + +1. 设备分组数据库增加 + +``` +ALTER TABLE bus_device_info ADD COLUMN GROUP_ID bigint; + +create table bus_device_group +( + id bigint not null comment '主键', + create_time datetime comment '创建时间', + update_time datetime comment '修改时间', + group_name varchar(255) comment '分组名称', + create_id bigint comment '创建人', + dept_id bigint comment '所属组织' +); + +alter table bus_device_group comment '设备分组管理信息'; + +``` + +casic.tenant.excludes 配置项中增加 bus_device_group + + +casic.no-login-urls 中增加如下配置 +,/sync/risk/dept,/sync/risk/user/list,/sync/risk/device/list + + + + diff --git a/casic-web/src/main/resources/doc/20250624.md b/casic-web/src/main/resources/doc/20250624.md new file mode 100644 index 0000000..7af561d --- /dev/null +++ b/casic-web/src/main/resources/doc/20250624.md @@ -0,0 +1,34 @@ +## 一、数据库更新 + +1. 风险点表添加同步ID + +``` +ALTER TABLE risk_point_info ADD COLUMN TARGET_ID VARCHAR(255); + +``` + +2. 风险点相关配置项 + +casic.risk.open 默认false 不开启 开启需配置true +casic.risk.corn 定时时间 默认0 */5 * * * * 5分钟 +casic.risk.appId 默认 5d7d4d81a64f4b8f 如变更需更改 +casic.risk.publicKey 公钥 默认MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB +casic.risk.host 风险点地址, 默认http://101.201.36.107:12388 生产需更改 + +3. 增加字典值 + hazardLevelName 风险危险等级(706映射) + 1 低风险 + 1 一般风险 + 2 较大风险 + 3 重大风险 + 以上字典值以706风险等级名称对应本系统风险点1 2 3 等级,如果706风险等级名称变更 修改对应字典值名称即可 + +4. 盒子代理服务模块添加 + 增加配置项 + casic.video.box.proxy 192.168.83.37:30064 此处需变更为部署代理nginx的ip及端口,具体配置参见国标级联及代理服务配置说明 + + + + + + diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" new file mode 100644 index 0000000..30cdcbd --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" new file mode 100644 index 0000000..6a0069c --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" new file mode 100644 index 0000000..f775124 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java new file mode 100644 index 0000000..77c14a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.device.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dictmap.DeviceGroupQueryDict; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.vo.BusDeviceGroupVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; + +/** + * 设备分组管理信息Controller + * + * @author lwh + * @date 2025-06-11 + */ +@Api(tags = "设备分组管理信息") +@RestController +@RequestMapping("/device/group") +public class BusDeviceGroupController extends BaseController { + + private final IBusDeviceGroupService busDeviceGroupService; + private final AbstractPermissionContext abstractPermissionContext; + + public BusDeviceGroupController(IBusDeviceGroupService busDeviceGroupService, AbstractPermissionContext abstractPermissionContext) { + this.busDeviceGroupService = busDeviceGroupService; + this.abstractPermissionContext = abstractPermissionContext; + } + + @ApiOperation(value = "列表查询") + @GetMapping(value = "/list") + public ResponseDataDTO> list(BusDeviceGroupVO busDeviceGroupVO) { + QueryWrapper query = busDeviceGroupVO.genQuery(); + return ResponseDataDTO.success(busDeviceGroupService.list(query)); + } + + @ApiOperation(value = "分组树结构查询") + @BussinessLog(value = "分组树结构查询") + @GetMapping(value = "/tree") + public ResponseDataDTO> groupTree() { + List groupDTOList = busDeviceGroupService.groupTree(); + return ResponseDataDTO.success(groupDTOList); + } + + @BussinessLog(value = "设备分组分页查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "分页查询") + @GetMapping(value = "/listPage") + public ResponseDataDTO> listPage(BusDeviceGroupVO busDeviceGroupVO) { + Page page = PageFactory.defaultPage(); + QueryWrapper query = busDeviceGroupVO.genQuery(); + List list = busDeviceGroupService.selectBusDeviceGroupPage(page, query); + page.setRecords(list); + return ResponseDataDTO.success(super.packForBT(page)); + } + + @BussinessLog(value = "设备分组新增", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "新增接口") + @PostMapping(value = "/add") + public ResponseDataDTO add(@RequestBody BusDeviceGroup busDeviceGroup) { + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + busDeviceGroup.setCreateId(user.getId()); + busDeviceGroup.setCreateTime(new Date()); + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.save(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组修改", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @PostMapping(value = "/update") + public ResponseDataDTO update(@RequestBody BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.updateById(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组删除", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "删除接口") + @GetMapping(value = "/delete") + public ResponseDataDTO delete(String id) { + busDeviceGroupService.removeById(id); + return ResponseDataDTO.success(); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { + busDeviceGroupService.removeByIds(ids.getIds()); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组详情查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "详情查询") + @GetMapping(value = "/detail") + public ResponseDataDTO detail(String id) { + return ResponseDataDTO.success(busDeviceGroupService.getById(id)); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java new file mode 100644 index 0000000..9d3726f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.device.dao; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import java.util.List; +/** + *

+ * 设备分组管理信息 Mapper 接口 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface BusDeviceGroupMapper extends BaseMapper { +/** +* 设备分组管理信息 分页检索 +*/ +List selectBusDeviceGroupPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml new file mode 100644 index 0000000..a6dd84f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + id + , + create_time as createTime , + update_time as updateTime , + group_name as groupName , + create_id as createId , + dept_id as deptId + + + a + . + id + , + a.create_time + as createTime , + a.update_time + as updateTime , + a.group_name + as groupName , + a.create_id + as createId , + a.dept_id + as deptId + + + + + + and group_name like concat('%',#{request.groupName},'%') + + + and dept_id = #{request.deptId} + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java new file mode 100644 index 0000000..a821e92 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dictmap; + +import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap; + +public class DeviceGroupQueryDict extends AbstractDictMap { + + @Override + public void init() { + put("id", "主键"); + put("deptId", "所属组织"); + put("groupName", "分组名称"); + + put("deptName", "所属单位"); + } + + @Override + protected void initBeWrapped() { + + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java new file mode 100644 index 0000000..d8d1712 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.device.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + + +/** + * 设备分组管理信息对象 bus_device_group + * + * @author lwh + * @date 2025-06-11 + */ +@Data +@TableName("bus_device_group") +public class BusDeviceGroup extends Model { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键", dataType = "Long") + @TableField("id") + private Long id; + + @ApiModelProperty(value = "创建时间", dataType = "Date") + @TableField("create_time") + private Date createTime; + + @ApiModelProperty(value = "修改时间", dataType = "Date") + @TableField("update_time") + private Date updateTime; + + @ApiModelProperty(value = "分组名称", dataType = "String") + @TableField("group_name") + private String groupName; + + @ApiModelProperty(value = "创建人", dataType = "Long") + @TableField("create_id") + private Long createId; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; + @TableField(exist = false) + private String deptName; + + @Override + public String toString() { + return "BusDeviceGroup{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "groupName=" + groupName + + "createId=" + createId + + "deptId=" + deptId + + "}"; + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java new file mode 100644 index 0000000..d2cee5c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; + +import java.util.List; + + +/** + *

+ * 设备分组管理信息 服务类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface IBusDeviceGroupService extends IService { + /** + * 设备分组管理信息 分页检索 + */ + List selectBusDeviceGroupPage(Page page, QueryWrapper query); + + /** + * 树结构查询 + * + * @return + */ + List groupTree(); + + DeptDTO convertDeptDTO(BusDeviceGroup group); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java new file mode 100644 index 0000000..a6f08b7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java @@ -0,0 +1,139 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractAuthService; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.modular.data.constants.DataConstants; +import com.casic.missiles.modular.device.dao.BusDeviceGroupMapper; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; +import com.casic.missiles.modular.system.model.Dept; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.data.constants.DataConstants.NODE_TYPE_DEPT; + + +/** + *

+ * 设备分组管理信息 服务实现类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +@Service +public class BusDeviceGroupServiceImpl extends ServiceImpl implements IBusDeviceGroupService { + @Resource + private AbstractDeptService deptService; + + @Override + public List selectBusDeviceGroupPage(Page page, QueryWrapper query) { + List list = this.baseMapper.selectBusDeviceGroupPage(page, query); + list.forEach(this::wrapperInfo); + return list; + } + + @Override + public List groupTree() { + List deptList = deviceDept(); + + List deptDTOS = new ArrayList<>(); + //树节点根 + List rootIds = new ArrayList<>(); + Set normalIds = new HashSet<>(); + + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setId(dept.getId()); + deptDTO.setPid(dept.getPid()); + deptDTO.setFullName(dept.getFullName()); + deptDTO.setName(dept.getSimpleName()); + deptDTO.setType(NODE_TYPE_DEPT); + + normalIds.add(dept.getId()); + deptDTOS.add(deptDTO); + + + //查询该组织下分组信息 + LambdaQueryWrapper deviceQuery = new LambdaQueryWrapper<>(); + deviceQuery.eq(BusDeviceGroup::getDeptId, deptDTO.getId()); + + deviceQuery.orderByAsc(BusDeviceGroup::getGroupName); + List deviceInfos = this.list(deviceQuery); + List deptDTOList = new ArrayList<>(); + for (BusDeviceGroup group : deviceInfos) { + DeptDTO deptDto = this.convertDeptDTO(group); + deptDTOList.add(deptDto); + } + deptDTO.setChildrenNodes(deptDTOList); + } + + for (DeptDTO deptDTO : deptDTOS) { + if (!normalIds.contains(deptDTO.getPid())) { + rootIds.add(deptDTO.getPid()); + } + } + + //过滤根节点 + DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); + List newTree = new ArrayList<>(); + rootIds = rootIds.stream().distinct().collect(Collectors.toList()); + for (Long rootId : rootIds) { + abstractTreeBuildFactory.setRootId(rootId + ""); + newTree.addAll(abstractTreeBuildFactory.doTreeBuild(deptDTOS)); + } + return newTree; + } + + public DeptDTO convertDeptDTO(BusDeviceGroup group) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setType(DataConstants.NODE_TYPE_GROUP); + deptDTO.setId(group.getId()); + deptDTO.setPid(group.getDeptId()); + deptDTO.setName(group.getGroupName()); + deptDTO.setGroup(group); + return deptDTO; + } + + @Resource + private AbstractAuthService authService; + + private List deviceDept() { + //查询可见组织 + DataScope scope = authService.getLoginUserDataScope(); + AuthUser user = authService.getLoginUser(); + + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); + deptQuery.inSql(Dept::getId, "select dept_id from bus_device_info "); + if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums().getCode())) { + deptQuery.in(Dept::getId, scope.getDeptIds()); + } + deptQuery.orderByAsc(Dept::getNum); + + List deptList = deptService.list(deptQuery); + return deptList; + } + + @Override + public List list() { + List list = super.list(); + list.forEach(this::wrapperInfo); + return list; + } + + private void wrapperInfo(BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setDeptName(deptService.getDeptName(busDeviceGroup.getDeptId())); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java new file mode 100644 index 0000000..413d7ac --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.device.vo; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 设备分组管理信息对象VO + * + * @author lwh + * @date 2025-06-11 + */ +@Data +public class BusDeviceGroupVO { + private static final long serialVersionUID = 1L; + + + @ApiModelProperty(value = "分组名称", dataType = "String") + private String groupName; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + private Long deptId; + + public QueryWrapper genQuery() { + QueryWrapper query = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(groupName)) { + query.like("group_name", groupName); + } + if (deptId != null) { + query.eq("dept_id", deptId); + } + return query; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java new file mode 100644 index 0000000..477435e --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java @@ -0,0 +1,163 @@ +package com.casic.missiles.modular.device.dto.risk; + +import cn.hutool.core.convert.Convert; +import com.casic.missiles.modular.device.model.RiskPointInfo; +import lombok.Data; + +@Data +public class SyncRiskDTO { + /** + * 主键 + */ + private String id; + private String name; + /** + * 重大风险 + * 风险等级 + */ + private String hazardLevel; + /** + * 危险因素 + */ + private String riskFactors; + /** + * 所属单位 + */ + private String affiliatedUnit; + /** + * 所属部门 + */ + private String department; + + /** + * 定员 + */ + private String staffing; + + /** + * 定量 + */ + private String ration; + + /** + * 地理位置 + */ + private String geographicalPosition; + + /** + * 责任人 + */ + private String personLiable; + + /** + * 现场负责人 + */ + private String siteLeader; + + /** + * 主要设备、设施设计制造单位 + */ + private String zysbZzdw; + + /** + * 所在单位 + */ + private String szdw; + + /** + * 作业人数 + */ + private String numberOperators; + + /** + * 主要性能参数 + */ + private String mainPerformanceParameters; + + /** + * 工作环境参数 + */ + private String workingEnvironmentParameters; + + /** + * 安装单位 + */ + private String installationUnit; + + /** + * 投产日期 + */ + private String productionDate; + + /** + * 设备总数 + */ + private String totalEquipment; + + /** + * 备注 + */ + private String note; + + /** + * 创建用户 + */ + private String createUser; + private String createTime; + private String updateUser; + private String updateTime; + /** + * 是否删除0:否;1:是(接口已过滤掉1的数据) + */ + private Integer isDel; + + /** + * 行政区域 + */ + private String xzqy; + /** + * 街道 + */ + private String jdxx; + + /** + * 楼房 + */ + private String loufang; + + /** + * 楼层 + */ + private String louceng; + + /** + * 房间 + */ + private String roomName; + /** + * 所属单位编码 + */ + private String affiliatedUnitsCode; + + /** + * 危险性质 + */ + private String hazardousNature; + + public RiskPointInfo convertToRisk(RiskPointInfo pointInfo) { + //风险点缺少密级 + pointInfo.setSecretLevel("1"); + // hazardLevel 是否有字典值? + + if (department != null) { + pointInfo.setDeptId(Convert.toLong(department)); + } + pointInfo.setNature(hazardousNature); + pointInfo.setRiskName(name); + pointInfo.setAddress(geographicalPosition); + pointInfo.setTargetId(id); + //默认类型为1 + pointInfo.setRiskType(1); + return pointInfo; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java new file mode 100644 index 0000000..08e89a0 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.device.handler; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class BoxDefaultHttpHeaderHandler extends DefaultHttpHeaderHandler { + /** + * 代理服务IP + */ + private String xTargetHost; + + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Access-Token", token); + } + if (StrUtil.isNotEmpty(xTargetHost)){ + base.addHeader("X-TARGET-HOST", xTargetHost); + } + } + + public String getXTargetHost() { + return xTargetHost; + } + + public void setXTargetHost(String XTargetHost) { + this.xTargetHost = XTargetHost; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java new file mode 100644 index 0000000..903e567 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.http; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class RiskHttpHandler extends DefaultHttpHeaderHandler { + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Authorization", token); + } + + } +} + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java new file mode 100644 index 0000000..9f75f42 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java @@ -0,0 +1,35 @@ +package com.casic.missiles.modular.task; + +import com.casic.missiles.modular.device.service.IRiskPointInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +@Slf4j +@Component +public class RiskTask { + + @Value("${casic.risk.open:false}") + private Boolean open; + + @Resource + private IRiskPointInfoService riskPointInfoService; + + /** + * 设备信息同步0 + * 每30分钟采集一次 + */ + @Scheduled(cron = "${casic.risk.corn:0 */1 * * * *}") + public void device() { + //风险点数据同步 + if (open) { + log.info("risk sync start...."); + riskPointInfoService.loadRiskInfo(); + log.info("risk sync end...."); + } + } + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java new file mode 100644 index 0000000..e4ca4f1 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.util; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.modular.http.RiskHttpHandler; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import com.casic.missiles.modular.system.utils.HttpUtils; + +import java.util.HashMap; +import java.util.Map; + +public class RiskHttpUtil { + public static final String loginUrl = "/rest/platform/systemLogin"; + public static final String pointDataUrl = "/rest/platform/dangerPointData"; + + public static String login(String baseUrl, String secret) { + Map param = new HashMap<>(); + param.put("secret", secret); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + defaultHeaderHandler.setJson(true); + String res = HttpUtils.sendPost(baseUrl + loginUrl, param, "", defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + public static String pointData(String baseUrl, String token) { + Map param = new HashMap<>(); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + + String res = HttpUtils.sendGet(baseUrl + pointDataUrl, param, token, defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + /** + * 登录数据加密 + * @param appId 加密id + * @param publicKey 公钥 + * @return + * @throws Exception + */ + public static String encrypt(String appId,String publicKey) throws Exception { + long ts = System.currentTimeMillis(); + return RSAUtils.encrypt(appId+"_"+ts,publicKey); + } + + +} diff --git a/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java new file mode 100644 index 0000000..9ba1e2a --- /dev/null +++ b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java @@ -0,0 +1,62 @@ +package com.casic.missiles.test; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.TypeReference; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.risk.SyncRiskDTO; +import com.casic.missiles.modular.device.util.AesUtil; +import com.casic.missiles.modular.util.RiskHttpUtil; +import com.casic.missiles.modular.util.WvpUtil; +import com.casic.missiles.modular.wvp.dto.MvpResponseDTO; + +import java.io.FileInputStream; +import java.security.MessageDigest; +import java.util.Date; +import java.util.HashMap; +import java.util.List; + +public class RiskTest { + public static void main(String[] args) throws Exception { +// File file = new File("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// String task = ZipFileUtil.getZipHandleTask("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(task); +// String md5 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(md5); +// String md52 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241122.zip"); +// System.out.println(md52); + + testDeviceLogin(); + System.out.println( DateUtil.offsetMinute(new Date(),-5)); + } + public static void testDeviceLogin() throws Exception { + Long time = System.currentTimeMillis(); + String str = "FXDDT_" + time; + String pubKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCynMBxzoNBemZKuxjlZzp04Lx/b0j1xRUznBKjlQSATwc+1DaxBpKdT4WfqAuFlSQLA7qLdntXw2cvUEvRxfdjJp2KfZLkEYRmYx3LT51WdCmouQREtMrR6j3mri8jV8TjktGCmBFMKX7eGeQM8O249yVjby6502bzZXehQ707JQIDAQAB"; + String sec = RSAUtils.encrypt(str, pubKey); + System.out.println(sec); + String priKey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALKcwHHOg0F6Zkq7GOVnOnTgvH9vSPXFFTOcEqOVBIBPBz7UNrEGkp1PhZ+oC4WVJAsDuot2e1fDZy9QS9HF92MmnYp9kuQRhGZjHctPnVZ0Kai5BES0ytHqPeauLyNXxOOS0YKYEUwpft4Z5Azw7bj3JWNvLrnTZvNld6FDvTslAgMBAAECgYAqN/kZLYpC+O6i7XSmDO95XwHPUXu6dDpdt5+EQR4OQh/hTwIaeAZB3uEj6vHGQomBfQEkI/5lsU97lIxHanbd+Hro7JyIhsGD5LR5XnZHVKzFiZW62OIU6FI9dlQNN8miiblnmyDwiMA3okaHl0O7qQjZ+IvY2csgmJc7AXpPpQJBAOhrhcfWFcgffj2O6HYNlBLFfbboc/ZzrEADDXKnxRSHlo5o8W+6gylG/L2NGtbag5S68B9VYzdkSQ1++5C+Ws8CQQDEu7h311PLEiKgqzGHpjzadQETmt/jMadaKQmT0TZwNVi6X8lR17U5hF8dAqZzUzr9kUC0HRIZhg4Uv1v3W3fLAkB4YPhxgJjXhjhEefg87Nt8vX1Xdx5Yz6CvpuUYNX0GHRQFvqUOUXQNtQ7CvorgLV1pc0lbcUZqMi8EJnj1hyJRAkEAjHXWm8GiMt+M15fCsi3vTq2xChVOekBuUsHv85iwvGZqJg7ThtpyqlEnM2g7/STUfkvhnXcQACclEI0blTy6BwJAPmFyhU+d0ejVpbc53TdrL2HqYYUHi/tTy/dtUa7lbypzdwwJ2M1Tv5PE8sQxr9tgMbebfxVb/RFKdiCCtzC4ng=="; + String s = RSAUtils.decrypt(sec,priKey); + System.out.println(s); + + + String appId = "5d7d4d81a64f4b8f"; + String publicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB"; + String secret = RiskHttpUtil.encrypt(appId,publicKey); + System.out.println(secret); + String res = RiskHttpUtil.login("http://101.201.36.107:12388",secret); + System.out.println(res); + JSONObject jsonObject = JSON.parseObject(res); + String token = jsonObject.getString("data"); + String resPoint = RiskHttpUtil.pointData("http://101.201.36.107:12388",token); + System.out.println(resPoint); + + + ResponseDataDTO> riskPointRes = JSON.parseObject(resPoint, new TypeReference>>() { + }); + + } + +} diff --git a/casic-web/src/main/resources/doc/20250609.md b/casic-web/src/main/resources/doc/20250609.md new file mode 100644 index 0000000..0cb3464 --- /dev/null +++ b/casic-web/src/main/resources/doc/20250609.md @@ -0,0 +1,30 @@ +## 一、数据库更新 + +1. 设备分组数据库增加 + +``` +ALTER TABLE bus_device_info ADD COLUMN GROUP_ID bigint; + +create table bus_device_group +( + id bigint not null comment '主键', + create_time datetime comment '创建时间', + update_time datetime comment '修改时间', + group_name varchar(255) comment '分组名称', + create_id bigint comment '创建人', + dept_id bigint comment '所属组织' +); + +alter table bus_device_group comment '设备分组管理信息'; + +``` + +casic.tenant.excludes 配置项中增加 bus_device_group + + +casic.no-login-urls 中增加如下配置 +,/sync/risk/dept,/sync/risk/user/list,/sync/risk/device/list + + + + diff --git a/casic-web/src/main/resources/doc/20250624.md b/casic-web/src/main/resources/doc/20250624.md new file mode 100644 index 0000000..7af561d --- /dev/null +++ b/casic-web/src/main/resources/doc/20250624.md @@ -0,0 +1,34 @@ +## 一、数据库更新 + +1. 风险点表添加同步ID + +``` +ALTER TABLE risk_point_info ADD COLUMN TARGET_ID VARCHAR(255); + +``` + +2. 风险点相关配置项 + +casic.risk.open 默认false 不开启 开启需配置true +casic.risk.corn 定时时间 默认0 */5 * * * * 5分钟 +casic.risk.appId 默认 5d7d4d81a64f4b8f 如变更需更改 +casic.risk.publicKey 公钥 默认MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB +casic.risk.host 风险点地址, 默认http://101.201.36.107:12388 生产需更改 + +3. 增加字典值 + hazardLevelName 风险危险等级(706映射) + 1 低风险 + 1 一般风险 + 2 较大风险 + 3 重大风险 + 以上字典值以706风险等级名称对应本系统风险点1 2 3 等级,如果706风险等级名称变更 修改对应字典值名称即可 + +4. 盒子代理服务模块添加 + 增加配置项 + casic.video.box.proxy 192.168.83.37:30064 此处需变更为部署代理nginx的ip及端口,具体配置参见国标级联及代理服务配置说明 + + + + + + diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" new file mode 100644 index 0000000..30cdcbd --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" new file mode 100644 index 0000000..6a0069c --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" new file mode 100644 index 0000000..f775124 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" new file mode 100644 index 0000000..9f65ff1 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" Binary files differ diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java new file mode 100644 index 0000000..77c14a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.device.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dictmap.DeviceGroupQueryDict; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.vo.BusDeviceGroupVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; + +/** + * 设备分组管理信息Controller + * + * @author lwh + * @date 2025-06-11 + */ +@Api(tags = "设备分组管理信息") +@RestController +@RequestMapping("/device/group") +public class BusDeviceGroupController extends BaseController { + + private final IBusDeviceGroupService busDeviceGroupService; + private final AbstractPermissionContext abstractPermissionContext; + + public BusDeviceGroupController(IBusDeviceGroupService busDeviceGroupService, AbstractPermissionContext abstractPermissionContext) { + this.busDeviceGroupService = busDeviceGroupService; + this.abstractPermissionContext = abstractPermissionContext; + } + + @ApiOperation(value = "列表查询") + @GetMapping(value = "/list") + public ResponseDataDTO> list(BusDeviceGroupVO busDeviceGroupVO) { + QueryWrapper query = busDeviceGroupVO.genQuery(); + return ResponseDataDTO.success(busDeviceGroupService.list(query)); + } + + @ApiOperation(value = "分组树结构查询") + @BussinessLog(value = "分组树结构查询") + @GetMapping(value = "/tree") + public ResponseDataDTO> groupTree() { + List groupDTOList = busDeviceGroupService.groupTree(); + return ResponseDataDTO.success(groupDTOList); + } + + @BussinessLog(value = "设备分组分页查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "分页查询") + @GetMapping(value = "/listPage") + public ResponseDataDTO> listPage(BusDeviceGroupVO busDeviceGroupVO) { + Page page = PageFactory.defaultPage(); + QueryWrapper query = busDeviceGroupVO.genQuery(); + List list = busDeviceGroupService.selectBusDeviceGroupPage(page, query); + page.setRecords(list); + return ResponseDataDTO.success(super.packForBT(page)); + } + + @BussinessLog(value = "设备分组新增", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "新增接口") + @PostMapping(value = "/add") + public ResponseDataDTO add(@RequestBody BusDeviceGroup busDeviceGroup) { + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + busDeviceGroup.setCreateId(user.getId()); + busDeviceGroup.setCreateTime(new Date()); + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.save(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组修改", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @PostMapping(value = "/update") + public ResponseDataDTO update(@RequestBody BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.updateById(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组删除", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "删除接口") + @GetMapping(value = "/delete") + public ResponseDataDTO delete(String id) { + busDeviceGroupService.removeById(id); + return ResponseDataDTO.success(); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { + busDeviceGroupService.removeByIds(ids.getIds()); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组详情查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "详情查询") + @GetMapping(value = "/detail") + public ResponseDataDTO detail(String id) { + return ResponseDataDTO.success(busDeviceGroupService.getById(id)); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java new file mode 100644 index 0000000..9d3726f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.device.dao; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import java.util.List; +/** + *

+ * 设备分组管理信息 Mapper 接口 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface BusDeviceGroupMapper extends BaseMapper { +/** +* 设备分组管理信息 分页检索 +*/ +List selectBusDeviceGroupPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml new file mode 100644 index 0000000..a6dd84f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + id + , + create_time as createTime , + update_time as updateTime , + group_name as groupName , + create_id as createId , + dept_id as deptId + + + a + . + id + , + a.create_time + as createTime , + a.update_time + as updateTime , + a.group_name + as groupName , + a.create_id + as createId , + a.dept_id + as deptId + + + + + + and group_name like concat('%',#{request.groupName},'%') + + + and dept_id = #{request.deptId} + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java new file mode 100644 index 0000000..a821e92 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dictmap; + +import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap; + +public class DeviceGroupQueryDict extends AbstractDictMap { + + @Override + public void init() { + put("id", "主键"); + put("deptId", "所属组织"); + put("groupName", "分组名称"); + + put("deptName", "所属单位"); + } + + @Override + protected void initBeWrapped() { + + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java new file mode 100644 index 0000000..d8d1712 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.device.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + + +/** + * 设备分组管理信息对象 bus_device_group + * + * @author lwh + * @date 2025-06-11 + */ +@Data +@TableName("bus_device_group") +public class BusDeviceGroup extends Model { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键", dataType = "Long") + @TableField("id") + private Long id; + + @ApiModelProperty(value = "创建时间", dataType = "Date") + @TableField("create_time") + private Date createTime; + + @ApiModelProperty(value = "修改时间", dataType = "Date") + @TableField("update_time") + private Date updateTime; + + @ApiModelProperty(value = "分组名称", dataType = "String") + @TableField("group_name") + private String groupName; + + @ApiModelProperty(value = "创建人", dataType = "Long") + @TableField("create_id") + private Long createId; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; + @TableField(exist = false) + private String deptName; + + @Override + public String toString() { + return "BusDeviceGroup{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "groupName=" + groupName + + "createId=" + createId + + "deptId=" + deptId + + "}"; + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java new file mode 100644 index 0000000..d2cee5c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; + +import java.util.List; + + +/** + *

+ * 设备分组管理信息 服务类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface IBusDeviceGroupService extends IService { + /** + * 设备分组管理信息 分页检索 + */ + List selectBusDeviceGroupPage(Page page, QueryWrapper query); + + /** + * 树结构查询 + * + * @return + */ + List groupTree(); + + DeptDTO convertDeptDTO(BusDeviceGroup group); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java new file mode 100644 index 0000000..a6f08b7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java @@ -0,0 +1,139 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractAuthService; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.modular.data.constants.DataConstants; +import com.casic.missiles.modular.device.dao.BusDeviceGroupMapper; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; +import com.casic.missiles.modular.system.model.Dept; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.data.constants.DataConstants.NODE_TYPE_DEPT; + + +/** + *

+ * 设备分组管理信息 服务实现类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +@Service +public class BusDeviceGroupServiceImpl extends ServiceImpl implements IBusDeviceGroupService { + @Resource + private AbstractDeptService deptService; + + @Override + public List selectBusDeviceGroupPage(Page page, QueryWrapper query) { + List list = this.baseMapper.selectBusDeviceGroupPage(page, query); + list.forEach(this::wrapperInfo); + return list; + } + + @Override + public List groupTree() { + List deptList = deviceDept(); + + List deptDTOS = new ArrayList<>(); + //树节点根 + List rootIds = new ArrayList<>(); + Set normalIds = new HashSet<>(); + + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setId(dept.getId()); + deptDTO.setPid(dept.getPid()); + deptDTO.setFullName(dept.getFullName()); + deptDTO.setName(dept.getSimpleName()); + deptDTO.setType(NODE_TYPE_DEPT); + + normalIds.add(dept.getId()); + deptDTOS.add(deptDTO); + + + //查询该组织下分组信息 + LambdaQueryWrapper deviceQuery = new LambdaQueryWrapper<>(); + deviceQuery.eq(BusDeviceGroup::getDeptId, deptDTO.getId()); + + deviceQuery.orderByAsc(BusDeviceGroup::getGroupName); + List deviceInfos = this.list(deviceQuery); + List deptDTOList = new ArrayList<>(); + for (BusDeviceGroup group : deviceInfos) { + DeptDTO deptDto = this.convertDeptDTO(group); + deptDTOList.add(deptDto); + } + deptDTO.setChildrenNodes(deptDTOList); + } + + for (DeptDTO deptDTO : deptDTOS) { + if (!normalIds.contains(deptDTO.getPid())) { + rootIds.add(deptDTO.getPid()); + } + } + + //过滤根节点 + DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); + List newTree = new ArrayList<>(); + rootIds = rootIds.stream().distinct().collect(Collectors.toList()); + for (Long rootId : rootIds) { + abstractTreeBuildFactory.setRootId(rootId + ""); + newTree.addAll(abstractTreeBuildFactory.doTreeBuild(deptDTOS)); + } + return newTree; + } + + public DeptDTO convertDeptDTO(BusDeviceGroup group) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setType(DataConstants.NODE_TYPE_GROUP); + deptDTO.setId(group.getId()); + deptDTO.setPid(group.getDeptId()); + deptDTO.setName(group.getGroupName()); + deptDTO.setGroup(group); + return deptDTO; + } + + @Resource + private AbstractAuthService authService; + + private List deviceDept() { + //查询可见组织 + DataScope scope = authService.getLoginUserDataScope(); + AuthUser user = authService.getLoginUser(); + + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); + deptQuery.inSql(Dept::getId, "select dept_id from bus_device_info "); + if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums().getCode())) { + deptQuery.in(Dept::getId, scope.getDeptIds()); + } + deptQuery.orderByAsc(Dept::getNum); + + List deptList = deptService.list(deptQuery); + return deptList; + } + + @Override + public List list() { + List list = super.list(); + list.forEach(this::wrapperInfo); + return list; + } + + private void wrapperInfo(BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setDeptName(deptService.getDeptName(busDeviceGroup.getDeptId())); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java new file mode 100644 index 0000000..413d7ac --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.device.vo; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 设备分组管理信息对象VO + * + * @author lwh + * @date 2025-06-11 + */ +@Data +public class BusDeviceGroupVO { + private static final long serialVersionUID = 1L; + + + @ApiModelProperty(value = "分组名称", dataType = "String") + private String groupName; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + private Long deptId; + + public QueryWrapper genQuery() { + QueryWrapper query = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(groupName)) { + query.like("group_name", groupName); + } + if (deptId != null) { + query.eq("dept_id", deptId); + } + return query; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java new file mode 100644 index 0000000..477435e --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java @@ -0,0 +1,163 @@ +package com.casic.missiles.modular.device.dto.risk; + +import cn.hutool.core.convert.Convert; +import com.casic.missiles.modular.device.model.RiskPointInfo; +import lombok.Data; + +@Data +public class SyncRiskDTO { + /** + * 主键 + */ + private String id; + private String name; + /** + * 重大风险 + * 风险等级 + */ + private String hazardLevel; + /** + * 危险因素 + */ + private String riskFactors; + /** + * 所属单位 + */ + private String affiliatedUnit; + /** + * 所属部门 + */ + private String department; + + /** + * 定员 + */ + private String staffing; + + /** + * 定量 + */ + private String ration; + + /** + * 地理位置 + */ + private String geographicalPosition; + + /** + * 责任人 + */ + private String personLiable; + + /** + * 现场负责人 + */ + private String siteLeader; + + /** + * 主要设备、设施设计制造单位 + */ + private String zysbZzdw; + + /** + * 所在单位 + */ + private String szdw; + + /** + * 作业人数 + */ + private String numberOperators; + + /** + * 主要性能参数 + */ + private String mainPerformanceParameters; + + /** + * 工作环境参数 + */ + private String workingEnvironmentParameters; + + /** + * 安装单位 + */ + private String installationUnit; + + /** + * 投产日期 + */ + private String productionDate; + + /** + * 设备总数 + */ + private String totalEquipment; + + /** + * 备注 + */ + private String note; + + /** + * 创建用户 + */ + private String createUser; + private String createTime; + private String updateUser; + private String updateTime; + /** + * 是否删除0:否;1:是(接口已过滤掉1的数据) + */ + private Integer isDel; + + /** + * 行政区域 + */ + private String xzqy; + /** + * 街道 + */ + private String jdxx; + + /** + * 楼房 + */ + private String loufang; + + /** + * 楼层 + */ + private String louceng; + + /** + * 房间 + */ + private String roomName; + /** + * 所属单位编码 + */ + private String affiliatedUnitsCode; + + /** + * 危险性质 + */ + private String hazardousNature; + + public RiskPointInfo convertToRisk(RiskPointInfo pointInfo) { + //风险点缺少密级 + pointInfo.setSecretLevel("1"); + // hazardLevel 是否有字典值? + + if (department != null) { + pointInfo.setDeptId(Convert.toLong(department)); + } + pointInfo.setNature(hazardousNature); + pointInfo.setRiskName(name); + pointInfo.setAddress(geographicalPosition); + pointInfo.setTargetId(id); + //默认类型为1 + pointInfo.setRiskType(1); + return pointInfo; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java new file mode 100644 index 0000000..08e89a0 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.device.handler; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class BoxDefaultHttpHeaderHandler extends DefaultHttpHeaderHandler { + /** + * 代理服务IP + */ + private String xTargetHost; + + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Access-Token", token); + } + if (StrUtil.isNotEmpty(xTargetHost)){ + base.addHeader("X-TARGET-HOST", xTargetHost); + } + } + + public String getXTargetHost() { + return xTargetHost; + } + + public void setXTargetHost(String XTargetHost) { + this.xTargetHost = XTargetHost; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java new file mode 100644 index 0000000..903e567 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.http; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class RiskHttpHandler extends DefaultHttpHeaderHandler { + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Authorization", token); + } + + } +} + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java new file mode 100644 index 0000000..9f75f42 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java @@ -0,0 +1,35 @@ +package com.casic.missiles.modular.task; + +import com.casic.missiles.modular.device.service.IRiskPointInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +@Slf4j +@Component +public class RiskTask { + + @Value("${casic.risk.open:false}") + private Boolean open; + + @Resource + private IRiskPointInfoService riskPointInfoService; + + /** + * 设备信息同步0 + * 每30分钟采集一次 + */ + @Scheduled(cron = "${casic.risk.corn:0 */1 * * * *}") + public void device() { + //风险点数据同步 + if (open) { + log.info("risk sync start...."); + riskPointInfoService.loadRiskInfo(); + log.info("risk sync end...."); + } + } + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java new file mode 100644 index 0000000..e4ca4f1 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.util; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.modular.http.RiskHttpHandler; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import com.casic.missiles.modular.system.utils.HttpUtils; + +import java.util.HashMap; +import java.util.Map; + +public class RiskHttpUtil { + public static final String loginUrl = "/rest/platform/systemLogin"; + public static final String pointDataUrl = "/rest/platform/dangerPointData"; + + public static String login(String baseUrl, String secret) { + Map param = new HashMap<>(); + param.put("secret", secret); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + defaultHeaderHandler.setJson(true); + String res = HttpUtils.sendPost(baseUrl + loginUrl, param, "", defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + public static String pointData(String baseUrl, String token) { + Map param = new HashMap<>(); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + + String res = HttpUtils.sendGet(baseUrl + pointDataUrl, param, token, defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + /** + * 登录数据加密 + * @param appId 加密id + * @param publicKey 公钥 + * @return + * @throws Exception + */ + public static String encrypt(String appId,String publicKey) throws Exception { + long ts = System.currentTimeMillis(); + return RSAUtils.encrypt(appId+"_"+ts,publicKey); + } + + +} diff --git a/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java new file mode 100644 index 0000000..9ba1e2a --- /dev/null +++ b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java @@ -0,0 +1,62 @@ +package com.casic.missiles.test; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.TypeReference; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.risk.SyncRiskDTO; +import com.casic.missiles.modular.device.util.AesUtil; +import com.casic.missiles.modular.util.RiskHttpUtil; +import com.casic.missiles.modular.util.WvpUtil; +import com.casic.missiles.modular.wvp.dto.MvpResponseDTO; + +import java.io.FileInputStream; +import java.security.MessageDigest; +import java.util.Date; +import java.util.HashMap; +import java.util.List; + +public class RiskTest { + public static void main(String[] args) throws Exception { +// File file = new File("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// String task = ZipFileUtil.getZipHandleTask("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(task); +// String md5 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(md5); +// String md52 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241122.zip"); +// System.out.println(md52); + + testDeviceLogin(); + System.out.println( DateUtil.offsetMinute(new Date(),-5)); + } + public static void testDeviceLogin() throws Exception { + Long time = System.currentTimeMillis(); + String str = "FXDDT_" + time; + String pubKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCynMBxzoNBemZKuxjlZzp04Lx/b0j1xRUznBKjlQSATwc+1DaxBpKdT4WfqAuFlSQLA7qLdntXw2cvUEvRxfdjJp2KfZLkEYRmYx3LT51WdCmouQREtMrR6j3mri8jV8TjktGCmBFMKX7eGeQM8O249yVjby6502bzZXehQ707JQIDAQAB"; + String sec = RSAUtils.encrypt(str, pubKey); + System.out.println(sec); + String priKey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALKcwHHOg0F6Zkq7GOVnOnTgvH9vSPXFFTOcEqOVBIBPBz7UNrEGkp1PhZ+oC4WVJAsDuot2e1fDZy9QS9HF92MmnYp9kuQRhGZjHctPnVZ0Kai5BES0ytHqPeauLyNXxOOS0YKYEUwpft4Z5Azw7bj3JWNvLrnTZvNld6FDvTslAgMBAAECgYAqN/kZLYpC+O6i7XSmDO95XwHPUXu6dDpdt5+EQR4OQh/hTwIaeAZB3uEj6vHGQomBfQEkI/5lsU97lIxHanbd+Hro7JyIhsGD5LR5XnZHVKzFiZW62OIU6FI9dlQNN8miiblnmyDwiMA3okaHl0O7qQjZ+IvY2csgmJc7AXpPpQJBAOhrhcfWFcgffj2O6HYNlBLFfbboc/ZzrEADDXKnxRSHlo5o8W+6gylG/L2NGtbag5S68B9VYzdkSQ1++5C+Ws8CQQDEu7h311PLEiKgqzGHpjzadQETmt/jMadaKQmT0TZwNVi6X8lR17U5hF8dAqZzUzr9kUC0HRIZhg4Uv1v3W3fLAkB4YPhxgJjXhjhEefg87Nt8vX1Xdx5Yz6CvpuUYNX0GHRQFvqUOUXQNtQ7CvorgLV1pc0lbcUZqMi8EJnj1hyJRAkEAjHXWm8GiMt+M15fCsi3vTq2xChVOekBuUsHv85iwvGZqJg7ThtpyqlEnM2g7/STUfkvhnXcQACclEI0blTy6BwJAPmFyhU+d0ejVpbc53TdrL2HqYYUHi/tTy/dtUa7lbypzdwwJ2M1Tv5PE8sQxr9tgMbebfxVb/RFKdiCCtzC4ng=="; + String s = RSAUtils.decrypt(sec,priKey); + System.out.println(s); + + + String appId = "5d7d4d81a64f4b8f"; + String publicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB"; + String secret = RiskHttpUtil.encrypt(appId,publicKey); + System.out.println(secret); + String res = RiskHttpUtil.login("http://101.201.36.107:12388",secret); + System.out.println(res); + JSONObject jsonObject = JSON.parseObject(res); + String token = jsonObject.getString("data"); + String resPoint = RiskHttpUtil.pointData("http://101.201.36.107:12388",token); + System.out.println(resPoint); + + + ResponseDataDTO> riskPointRes = JSON.parseObject(resPoint, new TypeReference>>() { + }); + + } + +} diff --git a/casic-web/src/main/resources/doc/20250609.md b/casic-web/src/main/resources/doc/20250609.md new file mode 100644 index 0000000..0cb3464 --- /dev/null +++ b/casic-web/src/main/resources/doc/20250609.md @@ -0,0 +1,30 @@ +## 一、数据库更新 + +1. 设备分组数据库增加 + +``` +ALTER TABLE bus_device_info ADD COLUMN GROUP_ID bigint; + +create table bus_device_group +( + id bigint not null comment '主键', + create_time datetime comment '创建时间', + update_time datetime comment '修改时间', + group_name varchar(255) comment '分组名称', + create_id bigint comment '创建人', + dept_id bigint comment '所属组织' +); + +alter table bus_device_group comment '设备分组管理信息'; + +``` + +casic.tenant.excludes 配置项中增加 bus_device_group + + +casic.no-login-urls 中增加如下配置 +,/sync/risk/dept,/sync/risk/user/list,/sync/risk/device/list + + + + diff --git a/casic-web/src/main/resources/doc/20250624.md b/casic-web/src/main/resources/doc/20250624.md new file mode 100644 index 0000000..7af561d --- /dev/null +++ b/casic-web/src/main/resources/doc/20250624.md @@ -0,0 +1,34 @@ +## 一、数据库更新 + +1. 风险点表添加同步ID + +``` +ALTER TABLE risk_point_info ADD COLUMN TARGET_ID VARCHAR(255); + +``` + +2. 风险点相关配置项 + +casic.risk.open 默认false 不开启 开启需配置true +casic.risk.corn 定时时间 默认0 */5 * * * * 5分钟 +casic.risk.appId 默认 5d7d4d81a64f4b8f 如变更需更改 +casic.risk.publicKey 公钥 默认MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB +casic.risk.host 风险点地址, 默认http://101.201.36.107:12388 生产需更改 + +3. 增加字典值 + hazardLevelName 风险危险等级(706映射) + 1 低风险 + 1 一般风险 + 2 较大风险 + 3 重大风险 + 以上字典值以706风险等级名称对应本系统风险点1 2 3 等级,如果706风险等级名称变更 修改对应字典值名称即可 + +4. 盒子代理服务模块添加 + 增加配置项 + casic.video.box.proxy 192.168.83.37:30064 此处需变更为部署代理nginx的ip及端口,具体配置参见国标级联及代理服务配置说明 + + + + + + diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" new file mode 100644 index 0000000..30cdcbd --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" new file mode 100644 index 0000000..6a0069c --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" new file mode 100644 index 0000000..f775124 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" new file mode 100644 index 0000000..9f65ff1 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" new file mode 100644 index 0000000..613ec69 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" Binary files differ diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java new file mode 100644 index 0000000..77c14a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.device.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dictmap.DeviceGroupQueryDict; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.vo.BusDeviceGroupVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; + +/** + * 设备分组管理信息Controller + * + * @author lwh + * @date 2025-06-11 + */ +@Api(tags = "设备分组管理信息") +@RestController +@RequestMapping("/device/group") +public class BusDeviceGroupController extends BaseController { + + private final IBusDeviceGroupService busDeviceGroupService; + private final AbstractPermissionContext abstractPermissionContext; + + public BusDeviceGroupController(IBusDeviceGroupService busDeviceGroupService, AbstractPermissionContext abstractPermissionContext) { + this.busDeviceGroupService = busDeviceGroupService; + this.abstractPermissionContext = abstractPermissionContext; + } + + @ApiOperation(value = "列表查询") + @GetMapping(value = "/list") + public ResponseDataDTO> list(BusDeviceGroupVO busDeviceGroupVO) { + QueryWrapper query = busDeviceGroupVO.genQuery(); + return ResponseDataDTO.success(busDeviceGroupService.list(query)); + } + + @ApiOperation(value = "分组树结构查询") + @BussinessLog(value = "分组树结构查询") + @GetMapping(value = "/tree") + public ResponseDataDTO> groupTree() { + List groupDTOList = busDeviceGroupService.groupTree(); + return ResponseDataDTO.success(groupDTOList); + } + + @BussinessLog(value = "设备分组分页查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "分页查询") + @GetMapping(value = "/listPage") + public ResponseDataDTO> listPage(BusDeviceGroupVO busDeviceGroupVO) { + Page page = PageFactory.defaultPage(); + QueryWrapper query = busDeviceGroupVO.genQuery(); + List list = busDeviceGroupService.selectBusDeviceGroupPage(page, query); + page.setRecords(list); + return ResponseDataDTO.success(super.packForBT(page)); + } + + @BussinessLog(value = "设备分组新增", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "新增接口") + @PostMapping(value = "/add") + public ResponseDataDTO add(@RequestBody BusDeviceGroup busDeviceGroup) { + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + busDeviceGroup.setCreateId(user.getId()); + busDeviceGroup.setCreateTime(new Date()); + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.save(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组修改", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @PostMapping(value = "/update") + public ResponseDataDTO update(@RequestBody BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.updateById(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组删除", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "删除接口") + @GetMapping(value = "/delete") + public ResponseDataDTO delete(String id) { + busDeviceGroupService.removeById(id); + return ResponseDataDTO.success(); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { + busDeviceGroupService.removeByIds(ids.getIds()); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组详情查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "详情查询") + @GetMapping(value = "/detail") + public ResponseDataDTO detail(String id) { + return ResponseDataDTO.success(busDeviceGroupService.getById(id)); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java new file mode 100644 index 0000000..9d3726f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.device.dao; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import java.util.List; +/** + *

+ * 设备分组管理信息 Mapper 接口 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface BusDeviceGroupMapper extends BaseMapper { +/** +* 设备分组管理信息 分页检索 +*/ +List selectBusDeviceGroupPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml new file mode 100644 index 0000000..a6dd84f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + id + , + create_time as createTime , + update_time as updateTime , + group_name as groupName , + create_id as createId , + dept_id as deptId + + + a + . + id + , + a.create_time + as createTime , + a.update_time + as updateTime , + a.group_name + as groupName , + a.create_id + as createId , + a.dept_id + as deptId + + + + + + and group_name like concat('%',#{request.groupName},'%') + + + and dept_id = #{request.deptId} + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java new file mode 100644 index 0000000..a821e92 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dictmap; + +import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap; + +public class DeviceGroupQueryDict extends AbstractDictMap { + + @Override + public void init() { + put("id", "主键"); + put("deptId", "所属组织"); + put("groupName", "分组名称"); + + put("deptName", "所属单位"); + } + + @Override + protected void initBeWrapped() { + + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java new file mode 100644 index 0000000..d8d1712 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.device.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + + +/** + * 设备分组管理信息对象 bus_device_group + * + * @author lwh + * @date 2025-06-11 + */ +@Data +@TableName("bus_device_group") +public class BusDeviceGroup extends Model { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键", dataType = "Long") + @TableField("id") + private Long id; + + @ApiModelProperty(value = "创建时间", dataType = "Date") + @TableField("create_time") + private Date createTime; + + @ApiModelProperty(value = "修改时间", dataType = "Date") + @TableField("update_time") + private Date updateTime; + + @ApiModelProperty(value = "分组名称", dataType = "String") + @TableField("group_name") + private String groupName; + + @ApiModelProperty(value = "创建人", dataType = "Long") + @TableField("create_id") + private Long createId; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; + @TableField(exist = false) + private String deptName; + + @Override + public String toString() { + return "BusDeviceGroup{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "groupName=" + groupName + + "createId=" + createId + + "deptId=" + deptId + + "}"; + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java new file mode 100644 index 0000000..d2cee5c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; + +import java.util.List; + + +/** + *

+ * 设备分组管理信息 服务类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface IBusDeviceGroupService extends IService { + /** + * 设备分组管理信息 分页检索 + */ + List selectBusDeviceGroupPage(Page page, QueryWrapper query); + + /** + * 树结构查询 + * + * @return + */ + List groupTree(); + + DeptDTO convertDeptDTO(BusDeviceGroup group); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java new file mode 100644 index 0000000..a6f08b7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java @@ -0,0 +1,139 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractAuthService; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.modular.data.constants.DataConstants; +import com.casic.missiles.modular.device.dao.BusDeviceGroupMapper; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; +import com.casic.missiles.modular.system.model.Dept; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.data.constants.DataConstants.NODE_TYPE_DEPT; + + +/** + *

+ * 设备分组管理信息 服务实现类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +@Service +public class BusDeviceGroupServiceImpl extends ServiceImpl implements IBusDeviceGroupService { + @Resource + private AbstractDeptService deptService; + + @Override + public List selectBusDeviceGroupPage(Page page, QueryWrapper query) { + List list = this.baseMapper.selectBusDeviceGroupPage(page, query); + list.forEach(this::wrapperInfo); + return list; + } + + @Override + public List groupTree() { + List deptList = deviceDept(); + + List deptDTOS = new ArrayList<>(); + //树节点根 + List rootIds = new ArrayList<>(); + Set normalIds = new HashSet<>(); + + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setId(dept.getId()); + deptDTO.setPid(dept.getPid()); + deptDTO.setFullName(dept.getFullName()); + deptDTO.setName(dept.getSimpleName()); + deptDTO.setType(NODE_TYPE_DEPT); + + normalIds.add(dept.getId()); + deptDTOS.add(deptDTO); + + + //查询该组织下分组信息 + LambdaQueryWrapper deviceQuery = new LambdaQueryWrapper<>(); + deviceQuery.eq(BusDeviceGroup::getDeptId, deptDTO.getId()); + + deviceQuery.orderByAsc(BusDeviceGroup::getGroupName); + List deviceInfos = this.list(deviceQuery); + List deptDTOList = new ArrayList<>(); + for (BusDeviceGroup group : deviceInfos) { + DeptDTO deptDto = this.convertDeptDTO(group); + deptDTOList.add(deptDto); + } + deptDTO.setChildrenNodes(deptDTOList); + } + + for (DeptDTO deptDTO : deptDTOS) { + if (!normalIds.contains(deptDTO.getPid())) { + rootIds.add(deptDTO.getPid()); + } + } + + //过滤根节点 + DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); + List newTree = new ArrayList<>(); + rootIds = rootIds.stream().distinct().collect(Collectors.toList()); + for (Long rootId : rootIds) { + abstractTreeBuildFactory.setRootId(rootId + ""); + newTree.addAll(abstractTreeBuildFactory.doTreeBuild(deptDTOS)); + } + return newTree; + } + + public DeptDTO convertDeptDTO(BusDeviceGroup group) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setType(DataConstants.NODE_TYPE_GROUP); + deptDTO.setId(group.getId()); + deptDTO.setPid(group.getDeptId()); + deptDTO.setName(group.getGroupName()); + deptDTO.setGroup(group); + return deptDTO; + } + + @Resource + private AbstractAuthService authService; + + private List deviceDept() { + //查询可见组织 + DataScope scope = authService.getLoginUserDataScope(); + AuthUser user = authService.getLoginUser(); + + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); + deptQuery.inSql(Dept::getId, "select dept_id from bus_device_info "); + if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums().getCode())) { + deptQuery.in(Dept::getId, scope.getDeptIds()); + } + deptQuery.orderByAsc(Dept::getNum); + + List deptList = deptService.list(deptQuery); + return deptList; + } + + @Override + public List list() { + List list = super.list(); + list.forEach(this::wrapperInfo); + return list; + } + + private void wrapperInfo(BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setDeptName(deptService.getDeptName(busDeviceGroup.getDeptId())); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java new file mode 100644 index 0000000..413d7ac --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.device.vo; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 设备分组管理信息对象VO + * + * @author lwh + * @date 2025-06-11 + */ +@Data +public class BusDeviceGroupVO { + private static final long serialVersionUID = 1L; + + + @ApiModelProperty(value = "分组名称", dataType = "String") + private String groupName; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + private Long deptId; + + public QueryWrapper genQuery() { + QueryWrapper query = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(groupName)) { + query.like("group_name", groupName); + } + if (deptId != null) { + query.eq("dept_id", deptId); + } + return query; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java new file mode 100644 index 0000000..477435e --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java @@ -0,0 +1,163 @@ +package com.casic.missiles.modular.device.dto.risk; + +import cn.hutool.core.convert.Convert; +import com.casic.missiles.modular.device.model.RiskPointInfo; +import lombok.Data; + +@Data +public class SyncRiskDTO { + /** + * 主键 + */ + private String id; + private String name; + /** + * 重大风险 + * 风险等级 + */ + private String hazardLevel; + /** + * 危险因素 + */ + private String riskFactors; + /** + * 所属单位 + */ + private String affiliatedUnit; + /** + * 所属部门 + */ + private String department; + + /** + * 定员 + */ + private String staffing; + + /** + * 定量 + */ + private String ration; + + /** + * 地理位置 + */ + private String geographicalPosition; + + /** + * 责任人 + */ + private String personLiable; + + /** + * 现场负责人 + */ + private String siteLeader; + + /** + * 主要设备、设施设计制造单位 + */ + private String zysbZzdw; + + /** + * 所在单位 + */ + private String szdw; + + /** + * 作业人数 + */ + private String numberOperators; + + /** + * 主要性能参数 + */ + private String mainPerformanceParameters; + + /** + * 工作环境参数 + */ + private String workingEnvironmentParameters; + + /** + * 安装单位 + */ + private String installationUnit; + + /** + * 投产日期 + */ + private String productionDate; + + /** + * 设备总数 + */ + private String totalEquipment; + + /** + * 备注 + */ + private String note; + + /** + * 创建用户 + */ + private String createUser; + private String createTime; + private String updateUser; + private String updateTime; + /** + * 是否删除0:否;1:是(接口已过滤掉1的数据) + */ + private Integer isDel; + + /** + * 行政区域 + */ + private String xzqy; + /** + * 街道 + */ + private String jdxx; + + /** + * 楼房 + */ + private String loufang; + + /** + * 楼层 + */ + private String louceng; + + /** + * 房间 + */ + private String roomName; + /** + * 所属单位编码 + */ + private String affiliatedUnitsCode; + + /** + * 危险性质 + */ + private String hazardousNature; + + public RiskPointInfo convertToRisk(RiskPointInfo pointInfo) { + //风险点缺少密级 + pointInfo.setSecretLevel("1"); + // hazardLevel 是否有字典值? + + if (department != null) { + pointInfo.setDeptId(Convert.toLong(department)); + } + pointInfo.setNature(hazardousNature); + pointInfo.setRiskName(name); + pointInfo.setAddress(geographicalPosition); + pointInfo.setTargetId(id); + //默认类型为1 + pointInfo.setRiskType(1); + return pointInfo; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java new file mode 100644 index 0000000..08e89a0 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.device.handler; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class BoxDefaultHttpHeaderHandler extends DefaultHttpHeaderHandler { + /** + * 代理服务IP + */ + private String xTargetHost; + + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Access-Token", token); + } + if (StrUtil.isNotEmpty(xTargetHost)){ + base.addHeader("X-TARGET-HOST", xTargetHost); + } + } + + public String getXTargetHost() { + return xTargetHost; + } + + public void setXTargetHost(String XTargetHost) { + this.xTargetHost = XTargetHost; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java new file mode 100644 index 0000000..903e567 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.http; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class RiskHttpHandler extends DefaultHttpHeaderHandler { + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Authorization", token); + } + + } +} + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java new file mode 100644 index 0000000..9f75f42 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java @@ -0,0 +1,35 @@ +package com.casic.missiles.modular.task; + +import com.casic.missiles.modular.device.service.IRiskPointInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +@Slf4j +@Component +public class RiskTask { + + @Value("${casic.risk.open:false}") + private Boolean open; + + @Resource + private IRiskPointInfoService riskPointInfoService; + + /** + * 设备信息同步0 + * 每30分钟采集一次 + */ + @Scheduled(cron = "${casic.risk.corn:0 */1 * * * *}") + public void device() { + //风险点数据同步 + if (open) { + log.info("risk sync start...."); + riskPointInfoService.loadRiskInfo(); + log.info("risk sync end...."); + } + } + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java new file mode 100644 index 0000000..e4ca4f1 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.util; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.modular.http.RiskHttpHandler; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import com.casic.missiles.modular.system.utils.HttpUtils; + +import java.util.HashMap; +import java.util.Map; + +public class RiskHttpUtil { + public static final String loginUrl = "/rest/platform/systemLogin"; + public static final String pointDataUrl = "/rest/platform/dangerPointData"; + + public static String login(String baseUrl, String secret) { + Map param = new HashMap<>(); + param.put("secret", secret); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + defaultHeaderHandler.setJson(true); + String res = HttpUtils.sendPost(baseUrl + loginUrl, param, "", defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + public static String pointData(String baseUrl, String token) { + Map param = new HashMap<>(); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + + String res = HttpUtils.sendGet(baseUrl + pointDataUrl, param, token, defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + /** + * 登录数据加密 + * @param appId 加密id + * @param publicKey 公钥 + * @return + * @throws Exception + */ + public static String encrypt(String appId,String publicKey) throws Exception { + long ts = System.currentTimeMillis(); + return RSAUtils.encrypt(appId+"_"+ts,publicKey); + } + + +} diff --git a/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java new file mode 100644 index 0000000..9ba1e2a --- /dev/null +++ b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java @@ -0,0 +1,62 @@ +package com.casic.missiles.test; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.TypeReference; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.risk.SyncRiskDTO; +import com.casic.missiles.modular.device.util.AesUtil; +import com.casic.missiles.modular.util.RiskHttpUtil; +import com.casic.missiles.modular.util.WvpUtil; +import com.casic.missiles.modular.wvp.dto.MvpResponseDTO; + +import java.io.FileInputStream; +import java.security.MessageDigest; +import java.util.Date; +import java.util.HashMap; +import java.util.List; + +public class RiskTest { + public static void main(String[] args) throws Exception { +// File file = new File("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// String task = ZipFileUtil.getZipHandleTask("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(task); +// String md5 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(md5); +// String md52 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241122.zip"); +// System.out.println(md52); + + testDeviceLogin(); + System.out.println( DateUtil.offsetMinute(new Date(),-5)); + } + public static void testDeviceLogin() throws Exception { + Long time = System.currentTimeMillis(); + String str = "FXDDT_" + time; + String pubKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCynMBxzoNBemZKuxjlZzp04Lx/b0j1xRUznBKjlQSATwc+1DaxBpKdT4WfqAuFlSQLA7qLdntXw2cvUEvRxfdjJp2KfZLkEYRmYx3LT51WdCmouQREtMrR6j3mri8jV8TjktGCmBFMKX7eGeQM8O249yVjby6502bzZXehQ707JQIDAQAB"; + String sec = RSAUtils.encrypt(str, pubKey); + System.out.println(sec); + String priKey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALKcwHHOg0F6Zkq7GOVnOnTgvH9vSPXFFTOcEqOVBIBPBz7UNrEGkp1PhZ+oC4WVJAsDuot2e1fDZy9QS9HF92MmnYp9kuQRhGZjHctPnVZ0Kai5BES0ytHqPeauLyNXxOOS0YKYEUwpft4Z5Azw7bj3JWNvLrnTZvNld6FDvTslAgMBAAECgYAqN/kZLYpC+O6i7XSmDO95XwHPUXu6dDpdt5+EQR4OQh/hTwIaeAZB3uEj6vHGQomBfQEkI/5lsU97lIxHanbd+Hro7JyIhsGD5LR5XnZHVKzFiZW62OIU6FI9dlQNN8miiblnmyDwiMA3okaHl0O7qQjZ+IvY2csgmJc7AXpPpQJBAOhrhcfWFcgffj2O6HYNlBLFfbboc/ZzrEADDXKnxRSHlo5o8W+6gylG/L2NGtbag5S68B9VYzdkSQ1++5C+Ws8CQQDEu7h311PLEiKgqzGHpjzadQETmt/jMadaKQmT0TZwNVi6X8lR17U5hF8dAqZzUzr9kUC0HRIZhg4Uv1v3W3fLAkB4YPhxgJjXhjhEefg87Nt8vX1Xdx5Yz6CvpuUYNX0GHRQFvqUOUXQNtQ7CvorgLV1pc0lbcUZqMi8EJnj1hyJRAkEAjHXWm8GiMt+M15fCsi3vTq2xChVOekBuUsHv85iwvGZqJg7ThtpyqlEnM2g7/STUfkvhnXcQACclEI0blTy6BwJAPmFyhU+d0ejVpbc53TdrL2HqYYUHi/tTy/dtUa7lbypzdwwJ2M1Tv5PE8sQxr9tgMbebfxVb/RFKdiCCtzC4ng=="; + String s = RSAUtils.decrypt(sec,priKey); + System.out.println(s); + + + String appId = "5d7d4d81a64f4b8f"; + String publicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB"; + String secret = RiskHttpUtil.encrypt(appId,publicKey); + System.out.println(secret); + String res = RiskHttpUtil.login("http://101.201.36.107:12388",secret); + System.out.println(res); + JSONObject jsonObject = JSON.parseObject(res); + String token = jsonObject.getString("data"); + String resPoint = RiskHttpUtil.pointData("http://101.201.36.107:12388",token); + System.out.println(resPoint); + + + ResponseDataDTO> riskPointRes = JSON.parseObject(resPoint, new TypeReference>>() { + }); + + } + +} diff --git a/casic-web/src/main/resources/doc/20250609.md b/casic-web/src/main/resources/doc/20250609.md new file mode 100644 index 0000000..0cb3464 --- /dev/null +++ b/casic-web/src/main/resources/doc/20250609.md @@ -0,0 +1,30 @@ +## 一、数据库更新 + +1. 设备分组数据库增加 + +``` +ALTER TABLE bus_device_info ADD COLUMN GROUP_ID bigint; + +create table bus_device_group +( + id bigint not null comment '主键', + create_time datetime comment '创建时间', + update_time datetime comment '修改时间', + group_name varchar(255) comment '分组名称', + create_id bigint comment '创建人', + dept_id bigint comment '所属组织' +); + +alter table bus_device_group comment '设备分组管理信息'; + +``` + +casic.tenant.excludes 配置项中增加 bus_device_group + + +casic.no-login-urls 中增加如下配置 +,/sync/risk/dept,/sync/risk/user/list,/sync/risk/device/list + + + + diff --git a/casic-web/src/main/resources/doc/20250624.md b/casic-web/src/main/resources/doc/20250624.md new file mode 100644 index 0000000..7af561d --- /dev/null +++ b/casic-web/src/main/resources/doc/20250624.md @@ -0,0 +1,34 @@ +## 一、数据库更新 + +1. 风险点表添加同步ID + +``` +ALTER TABLE risk_point_info ADD COLUMN TARGET_ID VARCHAR(255); + +``` + +2. 风险点相关配置项 + +casic.risk.open 默认false 不开启 开启需配置true +casic.risk.corn 定时时间 默认0 */5 * * * * 5分钟 +casic.risk.appId 默认 5d7d4d81a64f4b8f 如变更需更改 +casic.risk.publicKey 公钥 默认MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB +casic.risk.host 风险点地址, 默认http://101.201.36.107:12388 生产需更改 + +3. 增加字典值 + hazardLevelName 风险危险等级(706映射) + 1 低风险 + 1 一般风险 + 2 较大风险 + 3 重大风险 + 以上字典值以706风险等级名称对应本系统风险点1 2 3 等级,如果706风险等级名称变更 修改对应字典值名称即可 + +4. 盒子代理服务模块添加 + 增加配置项 + casic.video.box.proxy 192.168.83.37:30064 此处需变更为部署代理nginx的ip及端口,具体配置参见国标级联及代理服务配置说明 + + + + + + diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" new file mode 100644 index 0000000..30cdcbd --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" new file mode 100644 index 0000000..6a0069c --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" new file mode 100644 index 0000000..f775124 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" new file mode 100644 index 0000000..9f65ff1 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" new file mode 100644 index 0000000..613ec69 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" new file mode 100644 index 0000000..1614b04 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" Binary files differ diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java new file mode 100644 index 0000000..77c14a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.device.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dictmap.DeviceGroupQueryDict; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.vo.BusDeviceGroupVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; + +/** + * 设备分组管理信息Controller + * + * @author lwh + * @date 2025-06-11 + */ +@Api(tags = "设备分组管理信息") +@RestController +@RequestMapping("/device/group") +public class BusDeviceGroupController extends BaseController { + + private final IBusDeviceGroupService busDeviceGroupService; + private final AbstractPermissionContext abstractPermissionContext; + + public BusDeviceGroupController(IBusDeviceGroupService busDeviceGroupService, AbstractPermissionContext abstractPermissionContext) { + this.busDeviceGroupService = busDeviceGroupService; + this.abstractPermissionContext = abstractPermissionContext; + } + + @ApiOperation(value = "列表查询") + @GetMapping(value = "/list") + public ResponseDataDTO> list(BusDeviceGroupVO busDeviceGroupVO) { + QueryWrapper query = busDeviceGroupVO.genQuery(); + return ResponseDataDTO.success(busDeviceGroupService.list(query)); + } + + @ApiOperation(value = "分组树结构查询") + @BussinessLog(value = "分组树结构查询") + @GetMapping(value = "/tree") + public ResponseDataDTO> groupTree() { + List groupDTOList = busDeviceGroupService.groupTree(); + return ResponseDataDTO.success(groupDTOList); + } + + @BussinessLog(value = "设备分组分页查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "分页查询") + @GetMapping(value = "/listPage") + public ResponseDataDTO> listPage(BusDeviceGroupVO busDeviceGroupVO) { + Page page = PageFactory.defaultPage(); + QueryWrapper query = busDeviceGroupVO.genQuery(); + List list = busDeviceGroupService.selectBusDeviceGroupPage(page, query); + page.setRecords(list); + return ResponseDataDTO.success(super.packForBT(page)); + } + + @BussinessLog(value = "设备分组新增", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "新增接口") + @PostMapping(value = "/add") + public ResponseDataDTO add(@RequestBody BusDeviceGroup busDeviceGroup) { + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + busDeviceGroup.setCreateId(user.getId()); + busDeviceGroup.setCreateTime(new Date()); + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.save(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组修改", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @PostMapping(value = "/update") + public ResponseDataDTO update(@RequestBody BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.updateById(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组删除", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "删除接口") + @GetMapping(value = "/delete") + public ResponseDataDTO delete(String id) { + busDeviceGroupService.removeById(id); + return ResponseDataDTO.success(); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { + busDeviceGroupService.removeByIds(ids.getIds()); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组详情查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "详情查询") + @GetMapping(value = "/detail") + public ResponseDataDTO detail(String id) { + return ResponseDataDTO.success(busDeviceGroupService.getById(id)); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java new file mode 100644 index 0000000..9d3726f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.device.dao; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import java.util.List; +/** + *

+ * 设备分组管理信息 Mapper 接口 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface BusDeviceGroupMapper extends BaseMapper { +/** +* 设备分组管理信息 分页检索 +*/ +List selectBusDeviceGroupPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml new file mode 100644 index 0000000..a6dd84f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + id + , + create_time as createTime , + update_time as updateTime , + group_name as groupName , + create_id as createId , + dept_id as deptId + + + a + . + id + , + a.create_time + as createTime , + a.update_time + as updateTime , + a.group_name + as groupName , + a.create_id + as createId , + a.dept_id + as deptId + + + + + + and group_name like concat('%',#{request.groupName},'%') + + + and dept_id = #{request.deptId} + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java new file mode 100644 index 0000000..a821e92 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dictmap; + +import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap; + +public class DeviceGroupQueryDict extends AbstractDictMap { + + @Override + public void init() { + put("id", "主键"); + put("deptId", "所属组织"); + put("groupName", "分组名称"); + + put("deptName", "所属单位"); + } + + @Override + protected void initBeWrapped() { + + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java new file mode 100644 index 0000000..d8d1712 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.device.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + + +/** + * 设备分组管理信息对象 bus_device_group + * + * @author lwh + * @date 2025-06-11 + */ +@Data +@TableName("bus_device_group") +public class BusDeviceGroup extends Model { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键", dataType = "Long") + @TableField("id") + private Long id; + + @ApiModelProperty(value = "创建时间", dataType = "Date") + @TableField("create_time") + private Date createTime; + + @ApiModelProperty(value = "修改时间", dataType = "Date") + @TableField("update_time") + private Date updateTime; + + @ApiModelProperty(value = "分组名称", dataType = "String") + @TableField("group_name") + private String groupName; + + @ApiModelProperty(value = "创建人", dataType = "Long") + @TableField("create_id") + private Long createId; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; + @TableField(exist = false) + private String deptName; + + @Override + public String toString() { + return "BusDeviceGroup{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "groupName=" + groupName + + "createId=" + createId + + "deptId=" + deptId + + "}"; + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java new file mode 100644 index 0000000..d2cee5c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; + +import java.util.List; + + +/** + *

+ * 设备分组管理信息 服务类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface IBusDeviceGroupService extends IService { + /** + * 设备分组管理信息 分页检索 + */ + List selectBusDeviceGroupPage(Page page, QueryWrapper query); + + /** + * 树结构查询 + * + * @return + */ + List groupTree(); + + DeptDTO convertDeptDTO(BusDeviceGroup group); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java new file mode 100644 index 0000000..a6f08b7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java @@ -0,0 +1,139 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractAuthService; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.modular.data.constants.DataConstants; +import com.casic.missiles.modular.device.dao.BusDeviceGroupMapper; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; +import com.casic.missiles.modular.system.model.Dept; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.data.constants.DataConstants.NODE_TYPE_DEPT; + + +/** + *

+ * 设备分组管理信息 服务实现类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +@Service +public class BusDeviceGroupServiceImpl extends ServiceImpl implements IBusDeviceGroupService { + @Resource + private AbstractDeptService deptService; + + @Override + public List selectBusDeviceGroupPage(Page page, QueryWrapper query) { + List list = this.baseMapper.selectBusDeviceGroupPage(page, query); + list.forEach(this::wrapperInfo); + return list; + } + + @Override + public List groupTree() { + List deptList = deviceDept(); + + List deptDTOS = new ArrayList<>(); + //树节点根 + List rootIds = new ArrayList<>(); + Set normalIds = new HashSet<>(); + + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setId(dept.getId()); + deptDTO.setPid(dept.getPid()); + deptDTO.setFullName(dept.getFullName()); + deptDTO.setName(dept.getSimpleName()); + deptDTO.setType(NODE_TYPE_DEPT); + + normalIds.add(dept.getId()); + deptDTOS.add(deptDTO); + + + //查询该组织下分组信息 + LambdaQueryWrapper deviceQuery = new LambdaQueryWrapper<>(); + deviceQuery.eq(BusDeviceGroup::getDeptId, deptDTO.getId()); + + deviceQuery.orderByAsc(BusDeviceGroup::getGroupName); + List deviceInfos = this.list(deviceQuery); + List deptDTOList = new ArrayList<>(); + for (BusDeviceGroup group : deviceInfos) { + DeptDTO deptDto = this.convertDeptDTO(group); + deptDTOList.add(deptDto); + } + deptDTO.setChildrenNodes(deptDTOList); + } + + for (DeptDTO deptDTO : deptDTOS) { + if (!normalIds.contains(deptDTO.getPid())) { + rootIds.add(deptDTO.getPid()); + } + } + + //过滤根节点 + DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); + List newTree = new ArrayList<>(); + rootIds = rootIds.stream().distinct().collect(Collectors.toList()); + for (Long rootId : rootIds) { + abstractTreeBuildFactory.setRootId(rootId + ""); + newTree.addAll(abstractTreeBuildFactory.doTreeBuild(deptDTOS)); + } + return newTree; + } + + public DeptDTO convertDeptDTO(BusDeviceGroup group) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setType(DataConstants.NODE_TYPE_GROUP); + deptDTO.setId(group.getId()); + deptDTO.setPid(group.getDeptId()); + deptDTO.setName(group.getGroupName()); + deptDTO.setGroup(group); + return deptDTO; + } + + @Resource + private AbstractAuthService authService; + + private List deviceDept() { + //查询可见组织 + DataScope scope = authService.getLoginUserDataScope(); + AuthUser user = authService.getLoginUser(); + + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); + deptQuery.inSql(Dept::getId, "select dept_id from bus_device_info "); + if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums().getCode())) { + deptQuery.in(Dept::getId, scope.getDeptIds()); + } + deptQuery.orderByAsc(Dept::getNum); + + List deptList = deptService.list(deptQuery); + return deptList; + } + + @Override + public List list() { + List list = super.list(); + list.forEach(this::wrapperInfo); + return list; + } + + private void wrapperInfo(BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setDeptName(deptService.getDeptName(busDeviceGroup.getDeptId())); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java new file mode 100644 index 0000000..413d7ac --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.device.vo; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 设备分组管理信息对象VO + * + * @author lwh + * @date 2025-06-11 + */ +@Data +public class BusDeviceGroupVO { + private static final long serialVersionUID = 1L; + + + @ApiModelProperty(value = "分组名称", dataType = "String") + private String groupName; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + private Long deptId; + + public QueryWrapper genQuery() { + QueryWrapper query = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(groupName)) { + query.like("group_name", groupName); + } + if (deptId != null) { + query.eq("dept_id", deptId); + } + return query; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java new file mode 100644 index 0000000..477435e --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java @@ -0,0 +1,163 @@ +package com.casic.missiles.modular.device.dto.risk; + +import cn.hutool.core.convert.Convert; +import com.casic.missiles.modular.device.model.RiskPointInfo; +import lombok.Data; + +@Data +public class SyncRiskDTO { + /** + * 主键 + */ + private String id; + private String name; + /** + * 重大风险 + * 风险等级 + */ + private String hazardLevel; + /** + * 危险因素 + */ + private String riskFactors; + /** + * 所属单位 + */ + private String affiliatedUnit; + /** + * 所属部门 + */ + private String department; + + /** + * 定员 + */ + private String staffing; + + /** + * 定量 + */ + private String ration; + + /** + * 地理位置 + */ + private String geographicalPosition; + + /** + * 责任人 + */ + private String personLiable; + + /** + * 现场负责人 + */ + private String siteLeader; + + /** + * 主要设备、设施设计制造单位 + */ + private String zysbZzdw; + + /** + * 所在单位 + */ + private String szdw; + + /** + * 作业人数 + */ + private String numberOperators; + + /** + * 主要性能参数 + */ + private String mainPerformanceParameters; + + /** + * 工作环境参数 + */ + private String workingEnvironmentParameters; + + /** + * 安装单位 + */ + private String installationUnit; + + /** + * 投产日期 + */ + private String productionDate; + + /** + * 设备总数 + */ + private String totalEquipment; + + /** + * 备注 + */ + private String note; + + /** + * 创建用户 + */ + private String createUser; + private String createTime; + private String updateUser; + private String updateTime; + /** + * 是否删除0:否;1:是(接口已过滤掉1的数据) + */ + private Integer isDel; + + /** + * 行政区域 + */ + private String xzqy; + /** + * 街道 + */ + private String jdxx; + + /** + * 楼房 + */ + private String loufang; + + /** + * 楼层 + */ + private String louceng; + + /** + * 房间 + */ + private String roomName; + /** + * 所属单位编码 + */ + private String affiliatedUnitsCode; + + /** + * 危险性质 + */ + private String hazardousNature; + + public RiskPointInfo convertToRisk(RiskPointInfo pointInfo) { + //风险点缺少密级 + pointInfo.setSecretLevel("1"); + // hazardLevel 是否有字典值? + + if (department != null) { + pointInfo.setDeptId(Convert.toLong(department)); + } + pointInfo.setNature(hazardousNature); + pointInfo.setRiskName(name); + pointInfo.setAddress(geographicalPosition); + pointInfo.setTargetId(id); + //默认类型为1 + pointInfo.setRiskType(1); + return pointInfo; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java new file mode 100644 index 0000000..08e89a0 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.device.handler; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class BoxDefaultHttpHeaderHandler extends DefaultHttpHeaderHandler { + /** + * 代理服务IP + */ + private String xTargetHost; + + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Access-Token", token); + } + if (StrUtil.isNotEmpty(xTargetHost)){ + base.addHeader("X-TARGET-HOST", xTargetHost); + } + } + + public String getXTargetHost() { + return xTargetHost; + } + + public void setXTargetHost(String XTargetHost) { + this.xTargetHost = XTargetHost; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java new file mode 100644 index 0000000..903e567 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.http; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class RiskHttpHandler extends DefaultHttpHeaderHandler { + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Authorization", token); + } + + } +} + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java new file mode 100644 index 0000000..9f75f42 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java @@ -0,0 +1,35 @@ +package com.casic.missiles.modular.task; + +import com.casic.missiles.modular.device.service.IRiskPointInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +@Slf4j +@Component +public class RiskTask { + + @Value("${casic.risk.open:false}") + private Boolean open; + + @Resource + private IRiskPointInfoService riskPointInfoService; + + /** + * 设备信息同步0 + * 每30分钟采集一次 + */ + @Scheduled(cron = "${casic.risk.corn:0 */1 * * * *}") + public void device() { + //风险点数据同步 + if (open) { + log.info("risk sync start...."); + riskPointInfoService.loadRiskInfo(); + log.info("risk sync end...."); + } + } + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java new file mode 100644 index 0000000..e4ca4f1 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.util; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.modular.http.RiskHttpHandler; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import com.casic.missiles.modular.system.utils.HttpUtils; + +import java.util.HashMap; +import java.util.Map; + +public class RiskHttpUtil { + public static final String loginUrl = "/rest/platform/systemLogin"; + public static final String pointDataUrl = "/rest/platform/dangerPointData"; + + public static String login(String baseUrl, String secret) { + Map param = new HashMap<>(); + param.put("secret", secret); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + defaultHeaderHandler.setJson(true); + String res = HttpUtils.sendPost(baseUrl + loginUrl, param, "", defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + public static String pointData(String baseUrl, String token) { + Map param = new HashMap<>(); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + + String res = HttpUtils.sendGet(baseUrl + pointDataUrl, param, token, defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + /** + * 登录数据加密 + * @param appId 加密id + * @param publicKey 公钥 + * @return + * @throws Exception + */ + public static String encrypt(String appId,String publicKey) throws Exception { + long ts = System.currentTimeMillis(); + return RSAUtils.encrypt(appId+"_"+ts,publicKey); + } + + +} diff --git a/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java new file mode 100644 index 0000000..9ba1e2a --- /dev/null +++ b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java @@ -0,0 +1,62 @@ +package com.casic.missiles.test; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.TypeReference; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.risk.SyncRiskDTO; +import com.casic.missiles.modular.device.util.AesUtil; +import com.casic.missiles.modular.util.RiskHttpUtil; +import com.casic.missiles.modular.util.WvpUtil; +import com.casic.missiles.modular.wvp.dto.MvpResponseDTO; + +import java.io.FileInputStream; +import java.security.MessageDigest; +import java.util.Date; +import java.util.HashMap; +import java.util.List; + +public class RiskTest { + public static void main(String[] args) throws Exception { +// File file = new File("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// String task = ZipFileUtil.getZipHandleTask("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(task); +// String md5 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(md5); +// String md52 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241122.zip"); +// System.out.println(md52); + + testDeviceLogin(); + System.out.println( DateUtil.offsetMinute(new Date(),-5)); + } + public static void testDeviceLogin() throws Exception { + Long time = System.currentTimeMillis(); + String str = "FXDDT_" + time; + String pubKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCynMBxzoNBemZKuxjlZzp04Lx/b0j1xRUznBKjlQSATwc+1DaxBpKdT4WfqAuFlSQLA7qLdntXw2cvUEvRxfdjJp2KfZLkEYRmYx3LT51WdCmouQREtMrR6j3mri8jV8TjktGCmBFMKX7eGeQM8O249yVjby6502bzZXehQ707JQIDAQAB"; + String sec = RSAUtils.encrypt(str, pubKey); + System.out.println(sec); + String priKey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALKcwHHOg0F6Zkq7GOVnOnTgvH9vSPXFFTOcEqOVBIBPBz7UNrEGkp1PhZ+oC4WVJAsDuot2e1fDZy9QS9HF92MmnYp9kuQRhGZjHctPnVZ0Kai5BES0ytHqPeauLyNXxOOS0YKYEUwpft4Z5Azw7bj3JWNvLrnTZvNld6FDvTslAgMBAAECgYAqN/kZLYpC+O6i7XSmDO95XwHPUXu6dDpdt5+EQR4OQh/hTwIaeAZB3uEj6vHGQomBfQEkI/5lsU97lIxHanbd+Hro7JyIhsGD5LR5XnZHVKzFiZW62OIU6FI9dlQNN8miiblnmyDwiMA3okaHl0O7qQjZ+IvY2csgmJc7AXpPpQJBAOhrhcfWFcgffj2O6HYNlBLFfbboc/ZzrEADDXKnxRSHlo5o8W+6gylG/L2NGtbag5S68B9VYzdkSQ1++5C+Ws8CQQDEu7h311PLEiKgqzGHpjzadQETmt/jMadaKQmT0TZwNVi6X8lR17U5hF8dAqZzUzr9kUC0HRIZhg4Uv1v3W3fLAkB4YPhxgJjXhjhEefg87Nt8vX1Xdx5Yz6CvpuUYNX0GHRQFvqUOUXQNtQ7CvorgLV1pc0lbcUZqMi8EJnj1hyJRAkEAjHXWm8GiMt+M15fCsi3vTq2xChVOekBuUsHv85iwvGZqJg7ThtpyqlEnM2g7/STUfkvhnXcQACclEI0blTy6BwJAPmFyhU+d0ejVpbc53TdrL2HqYYUHi/tTy/dtUa7lbypzdwwJ2M1Tv5PE8sQxr9tgMbebfxVb/RFKdiCCtzC4ng=="; + String s = RSAUtils.decrypt(sec,priKey); + System.out.println(s); + + + String appId = "5d7d4d81a64f4b8f"; + String publicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB"; + String secret = RiskHttpUtil.encrypt(appId,publicKey); + System.out.println(secret); + String res = RiskHttpUtil.login("http://101.201.36.107:12388",secret); + System.out.println(res); + JSONObject jsonObject = JSON.parseObject(res); + String token = jsonObject.getString("data"); + String resPoint = RiskHttpUtil.pointData("http://101.201.36.107:12388",token); + System.out.println(resPoint); + + + ResponseDataDTO> riskPointRes = JSON.parseObject(resPoint, new TypeReference>>() { + }); + + } + +} diff --git a/casic-web/src/main/resources/doc/20250609.md b/casic-web/src/main/resources/doc/20250609.md new file mode 100644 index 0000000..0cb3464 --- /dev/null +++ b/casic-web/src/main/resources/doc/20250609.md @@ -0,0 +1,30 @@ +## 一、数据库更新 + +1. 设备分组数据库增加 + +``` +ALTER TABLE bus_device_info ADD COLUMN GROUP_ID bigint; + +create table bus_device_group +( + id bigint not null comment '主键', + create_time datetime comment '创建时间', + update_time datetime comment '修改时间', + group_name varchar(255) comment '分组名称', + create_id bigint comment '创建人', + dept_id bigint comment '所属组织' +); + +alter table bus_device_group comment '设备分组管理信息'; + +``` + +casic.tenant.excludes 配置项中增加 bus_device_group + + +casic.no-login-urls 中增加如下配置 +,/sync/risk/dept,/sync/risk/user/list,/sync/risk/device/list + + + + diff --git a/casic-web/src/main/resources/doc/20250624.md b/casic-web/src/main/resources/doc/20250624.md new file mode 100644 index 0000000..7af561d --- /dev/null +++ b/casic-web/src/main/resources/doc/20250624.md @@ -0,0 +1,34 @@ +## 一、数据库更新 + +1. 风险点表添加同步ID + +``` +ALTER TABLE risk_point_info ADD COLUMN TARGET_ID VARCHAR(255); + +``` + +2. 风险点相关配置项 + +casic.risk.open 默认false 不开启 开启需配置true +casic.risk.corn 定时时间 默认0 */5 * * * * 5分钟 +casic.risk.appId 默认 5d7d4d81a64f4b8f 如变更需更改 +casic.risk.publicKey 公钥 默认MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB +casic.risk.host 风险点地址, 默认http://101.201.36.107:12388 生产需更改 + +3. 增加字典值 + hazardLevelName 风险危险等级(706映射) + 1 低风险 + 1 一般风险 + 2 较大风险 + 3 重大风险 + 以上字典值以706风险等级名称对应本系统风险点1 2 3 等级,如果706风险等级名称变更 修改对应字典值名称即可 + +4. 盒子代理服务模块添加 + 增加配置项 + casic.video.box.proxy 192.168.83.37:30064 此处需变更为部署代理nginx的ip及端口,具体配置参见国标级联及代理服务配置说明 + + + + + + diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" new file mode 100644 index 0000000..30cdcbd --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" new file mode 100644 index 0000000..6a0069c --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" new file mode 100644 index 0000000..f775124 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" new file mode 100644 index 0000000..9f65ff1 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" new file mode 100644 index 0000000..613ec69 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" new file mode 100644 index 0000000..1614b04 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" new file mode 100644 index 0000000..3f5083a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" Binary files differ diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java new file mode 100644 index 0000000..77c14a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.device.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dictmap.DeviceGroupQueryDict; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.vo.BusDeviceGroupVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; + +/** + * 设备分组管理信息Controller + * + * @author lwh + * @date 2025-06-11 + */ +@Api(tags = "设备分组管理信息") +@RestController +@RequestMapping("/device/group") +public class BusDeviceGroupController extends BaseController { + + private final IBusDeviceGroupService busDeviceGroupService; + private final AbstractPermissionContext abstractPermissionContext; + + public BusDeviceGroupController(IBusDeviceGroupService busDeviceGroupService, AbstractPermissionContext abstractPermissionContext) { + this.busDeviceGroupService = busDeviceGroupService; + this.abstractPermissionContext = abstractPermissionContext; + } + + @ApiOperation(value = "列表查询") + @GetMapping(value = "/list") + public ResponseDataDTO> list(BusDeviceGroupVO busDeviceGroupVO) { + QueryWrapper query = busDeviceGroupVO.genQuery(); + return ResponseDataDTO.success(busDeviceGroupService.list(query)); + } + + @ApiOperation(value = "分组树结构查询") + @BussinessLog(value = "分组树结构查询") + @GetMapping(value = "/tree") + public ResponseDataDTO> groupTree() { + List groupDTOList = busDeviceGroupService.groupTree(); + return ResponseDataDTO.success(groupDTOList); + } + + @BussinessLog(value = "设备分组分页查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "分页查询") + @GetMapping(value = "/listPage") + public ResponseDataDTO> listPage(BusDeviceGroupVO busDeviceGroupVO) { + Page page = PageFactory.defaultPage(); + QueryWrapper query = busDeviceGroupVO.genQuery(); + List list = busDeviceGroupService.selectBusDeviceGroupPage(page, query); + page.setRecords(list); + return ResponseDataDTO.success(super.packForBT(page)); + } + + @BussinessLog(value = "设备分组新增", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "新增接口") + @PostMapping(value = "/add") + public ResponseDataDTO add(@RequestBody BusDeviceGroup busDeviceGroup) { + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + busDeviceGroup.setCreateId(user.getId()); + busDeviceGroup.setCreateTime(new Date()); + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.save(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组修改", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @PostMapping(value = "/update") + public ResponseDataDTO update(@RequestBody BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.updateById(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组删除", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "删除接口") + @GetMapping(value = "/delete") + public ResponseDataDTO delete(String id) { + busDeviceGroupService.removeById(id); + return ResponseDataDTO.success(); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { + busDeviceGroupService.removeByIds(ids.getIds()); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组详情查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "详情查询") + @GetMapping(value = "/detail") + public ResponseDataDTO detail(String id) { + return ResponseDataDTO.success(busDeviceGroupService.getById(id)); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java new file mode 100644 index 0000000..9d3726f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.device.dao; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import java.util.List; +/** + *

+ * 设备分组管理信息 Mapper 接口 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface BusDeviceGroupMapper extends BaseMapper { +/** +* 设备分组管理信息 分页检索 +*/ +List selectBusDeviceGroupPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml new file mode 100644 index 0000000..a6dd84f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + id + , + create_time as createTime , + update_time as updateTime , + group_name as groupName , + create_id as createId , + dept_id as deptId + + + a + . + id + , + a.create_time + as createTime , + a.update_time + as updateTime , + a.group_name + as groupName , + a.create_id + as createId , + a.dept_id + as deptId + + + + + + and group_name like concat('%',#{request.groupName},'%') + + + and dept_id = #{request.deptId} + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java new file mode 100644 index 0000000..a821e92 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dictmap; + +import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap; + +public class DeviceGroupQueryDict extends AbstractDictMap { + + @Override + public void init() { + put("id", "主键"); + put("deptId", "所属组织"); + put("groupName", "分组名称"); + + put("deptName", "所属单位"); + } + + @Override + protected void initBeWrapped() { + + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java new file mode 100644 index 0000000..d8d1712 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.device.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + + +/** + * 设备分组管理信息对象 bus_device_group + * + * @author lwh + * @date 2025-06-11 + */ +@Data +@TableName("bus_device_group") +public class BusDeviceGroup extends Model { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键", dataType = "Long") + @TableField("id") + private Long id; + + @ApiModelProperty(value = "创建时间", dataType = "Date") + @TableField("create_time") + private Date createTime; + + @ApiModelProperty(value = "修改时间", dataType = "Date") + @TableField("update_time") + private Date updateTime; + + @ApiModelProperty(value = "分组名称", dataType = "String") + @TableField("group_name") + private String groupName; + + @ApiModelProperty(value = "创建人", dataType = "Long") + @TableField("create_id") + private Long createId; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; + @TableField(exist = false) + private String deptName; + + @Override + public String toString() { + return "BusDeviceGroup{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "groupName=" + groupName + + "createId=" + createId + + "deptId=" + deptId + + "}"; + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java new file mode 100644 index 0000000..d2cee5c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; + +import java.util.List; + + +/** + *

+ * 设备分组管理信息 服务类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface IBusDeviceGroupService extends IService { + /** + * 设备分组管理信息 分页检索 + */ + List selectBusDeviceGroupPage(Page page, QueryWrapper query); + + /** + * 树结构查询 + * + * @return + */ + List groupTree(); + + DeptDTO convertDeptDTO(BusDeviceGroup group); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java new file mode 100644 index 0000000..a6f08b7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java @@ -0,0 +1,139 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractAuthService; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.modular.data.constants.DataConstants; +import com.casic.missiles.modular.device.dao.BusDeviceGroupMapper; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; +import com.casic.missiles.modular.system.model.Dept; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.data.constants.DataConstants.NODE_TYPE_DEPT; + + +/** + *

+ * 设备分组管理信息 服务实现类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +@Service +public class BusDeviceGroupServiceImpl extends ServiceImpl implements IBusDeviceGroupService { + @Resource + private AbstractDeptService deptService; + + @Override + public List selectBusDeviceGroupPage(Page page, QueryWrapper query) { + List list = this.baseMapper.selectBusDeviceGroupPage(page, query); + list.forEach(this::wrapperInfo); + return list; + } + + @Override + public List groupTree() { + List deptList = deviceDept(); + + List deptDTOS = new ArrayList<>(); + //树节点根 + List rootIds = new ArrayList<>(); + Set normalIds = new HashSet<>(); + + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setId(dept.getId()); + deptDTO.setPid(dept.getPid()); + deptDTO.setFullName(dept.getFullName()); + deptDTO.setName(dept.getSimpleName()); + deptDTO.setType(NODE_TYPE_DEPT); + + normalIds.add(dept.getId()); + deptDTOS.add(deptDTO); + + + //查询该组织下分组信息 + LambdaQueryWrapper deviceQuery = new LambdaQueryWrapper<>(); + deviceQuery.eq(BusDeviceGroup::getDeptId, deptDTO.getId()); + + deviceQuery.orderByAsc(BusDeviceGroup::getGroupName); + List deviceInfos = this.list(deviceQuery); + List deptDTOList = new ArrayList<>(); + for (BusDeviceGroup group : deviceInfos) { + DeptDTO deptDto = this.convertDeptDTO(group); + deptDTOList.add(deptDto); + } + deptDTO.setChildrenNodes(deptDTOList); + } + + for (DeptDTO deptDTO : deptDTOS) { + if (!normalIds.contains(deptDTO.getPid())) { + rootIds.add(deptDTO.getPid()); + } + } + + //过滤根节点 + DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); + List newTree = new ArrayList<>(); + rootIds = rootIds.stream().distinct().collect(Collectors.toList()); + for (Long rootId : rootIds) { + abstractTreeBuildFactory.setRootId(rootId + ""); + newTree.addAll(abstractTreeBuildFactory.doTreeBuild(deptDTOS)); + } + return newTree; + } + + public DeptDTO convertDeptDTO(BusDeviceGroup group) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setType(DataConstants.NODE_TYPE_GROUP); + deptDTO.setId(group.getId()); + deptDTO.setPid(group.getDeptId()); + deptDTO.setName(group.getGroupName()); + deptDTO.setGroup(group); + return deptDTO; + } + + @Resource + private AbstractAuthService authService; + + private List deviceDept() { + //查询可见组织 + DataScope scope = authService.getLoginUserDataScope(); + AuthUser user = authService.getLoginUser(); + + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); + deptQuery.inSql(Dept::getId, "select dept_id from bus_device_info "); + if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums().getCode())) { + deptQuery.in(Dept::getId, scope.getDeptIds()); + } + deptQuery.orderByAsc(Dept::getNum); + + List deptList = deptService.list(deptQuery); + return deptList; + } + + @Override + public List list() { + List list = super.list(); + list.forEach(this::wrapperInfo); + return list; + } + + private void wrapperInfo(BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setDeptName(deptService.getDeptName(busDeviceGroup.getDeptId())); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java new file mode 100644 index 0000000..413d7ac --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.device.vo; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 设备分组管理信息对象VO + * + * @author lwh + * @date 2025-06-11 + */ +@Data +public class BusDeviceGroupVO { + private static final long serialVersionUID = 1L; + + + @ApiModelProperty(value = "分组名称", dataType = "String") + private String groupName; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + private Long deptId; + + public QueryWrapper genQuery() { + QueryWrapper query = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(groupName)) { + query.like("group_name", groupName); + } + if (deptId != null) { + query.eq("dept_id", deptId); + } + return query; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java new file mode 100644 index 0000000..477435e --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java @@ -0,0 +1,163 @@ +package com.casic.missiles.modular.device.dto.risk; + +import cn.hutool.core.convert.Convert; +import com.casic.missiles.modular.device.model.RiskPointInfo; +import lombok.Data; + +@Data +public class SyncRiskDTO { + /** + * 主键 + */ + private String id; + private String name; + /** + * 重大风险 + * 风险等级 + */ + private String hazardLevel; + /** + * 危险因素 + */ + private String riskFactors; + /** + * 所属单位 + */ + private String affiliatedUnit; + /** + * 所属部门 + */ + private String department; + + /** + * 定员 + */ + private String staffing; + + /** + * 定量 + */ + private String ration; + + /** + * 地理位置 + */ + private String geographicalPosition; + + /** + * 责任人 + */ + private String personLiable; + + /** + * 现场负责人 + */ + private String siteLeader; + + /** + * 主要设备、设施设计制造单位 + */ + private String zysbZzdw; + + /** + * 所在单位 + */ + private String szdw; + + /** + * 作业人数 + */ + private String numberOperators; + + /** + * 主要性能参数 + */ + private String mainPerformanceParameters; + + /** + * 工作环境参数 + */ + private String workingEnvironmentParameters; + + /** + * 安装单位 + */ + private String installationUnit; + + /** + * 投产日期 + */ + private String productionDate; + + /** + * 设备总数 + */ + private String totalEquipment; + + /** + * 备注 + */ + private String note; + + /** + * 创建用户 + */ + private String createUser; + private String createTime; + private String updateUser; + private String updateTime; + /** + * 是否删除0:否;1:是(接口已过滤掉1的数据) + */ + private Integer isDel; + + /** + * 行政区域 + */ + private String xzqy; + /** + * 街道 + */ + private String jdxx; + + /** + * 楼房 + */ + private String loufang; + + /** + * 楼层 + */ + private String louceng; + + /** + * 房间 + */ + private String roomName; + /** + * 所属单位编码 + */ + private String affiliatedUnitsCode; + + /** + * 危险性质 + */ + private String hazardousNature; + + public RiskPointInfo convertToRisk(RiskPointInfo pointInfo) { + //风险点缺少密级 + pointInfo.setSecretLevel("1"); + // hazardLevel 是否有字典值? + + if (department != null) { + pointInfo.setDeptId(Convert.toLong(department)); + } + pointInfo.setNature(hazardousNature); + pointInfo.setRiskName(name); + pointInfo.setAddress(geographicalPosition); + pointInfo.setTargetId(id); + //默认类型为1 + pointInfo.setRiskType(1); + return pointInfo; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java new file mode 100644 index 0000000..08e89a0 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.device.handler; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class BoxDefaultHttpHeaderHandler extends DefaultHttpHeaderHandler { + /** + * 代理服务IP + */ + private String xTargetHost; + + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Access-Token", token); + } + if (StrUtil.isNotEmpty(xTargetHost)){ + base.addHeader("X-TARGET-HOST", xTargetHost); + } + } + + public String getXTargetHost() { + return xTargetHost; + } + + public void setXTargetHost(String XTargetHost) { + this.xTargetHost = XTargetHost; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java new file mode 100644 index 0000000..903e567 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.http; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class RiskHttpHandler extends DefaultHttpHeaderHandler { + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Authorization", token); + } + + } +} + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java new file mode 100644 index 0000000..9f75f42 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java @@ -0,0 +1,35 @@ +package com.casic.missiles.modular.task; + +import com.casic.missiles.modular.device.service.IRiskPointInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +@Slf4j +@Component +public class RiskTask { + + @Value("${casic.risk.open:false}") + private Boolean open; + + @Resource + private IRiskPointInfoService riskPointInfoService; + + /** + * 设备信息同步0 + * 每30分钟采集一次 + */ + @Scheduled(cron = "${casic.risk.corn:0 */1 * * * *}") + public void device() { + //风险点数据同步 + if (open) { + log.info("risk sync start...."); + riskPointInfoService.loadRiskInfo(); + log.info("risk sync end...."); + } + } + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java new file mode 100644 index 0000000..e4ca4f1 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.util; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.modular.http.RiskHttpHandler; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import com.casic.missiles.modular.system.utils.HttpUtils; + +import java.util.HashMap; +import java.util.Map; + +public class RiskHttpUtil { + public static final String loginUrl = "/rest/platform/systemLogin"; + public static final String pointDataUrl = "/rest/platform/dangerPointData"; + + public static String login(String baseUrl, String secret) { + Map param = new HashMap<>(); + param.put("secret", secret); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + defaultHeaderHandler.setJson(true); + String res = HttpUtils.sendPost(baseUrl + loginUrl, param, "", defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + public static String pointData(String baseUrl, String token) { + Map param = new HashMap<>(); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + + String res = HttpUtils.sendGet(baseUrl + pointDataUrl, param, token, defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + /** + * 登录数据加密 + * @param appId 加密id + * @param publicKey 公钥 + * @return + * @throws Exception + */ + public static String encrypt(String appId,String publicKey) throws Exception { + long ts = System.currentTimeMillis(); + return RSAUtils.encrypt(appId+"_"+ts,publicKey); + } + + +} diff --git a/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java new file mode 100644 index 0000000..9ba1e2a --- /dev/null +++ b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java @@ -0,0 +1,62 @@ +package com.casic.missiles.test; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.TypeReference; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.risk.SyncRiskDTO; +import com.casic.missiles.modular.device.util.AesUtil; +import com.casic.missiles.modular.util.RiskHttpUtil; +import com.casic.missiles.modular.util.WvpUtil; +import com.casic.missiles.modular.wvp.dto.MvpResponseDTO; + +import java.io.FileInputStream; +import java.security.MessageDigest; +import java.util.Date; +import java.util.HashMap; +import java.util.List; + +public class RiskTest { + public static void main(String[] args) throws Exception { +// File file = new File("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// String task = ZipFileUtil.getZipHandleTask("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(task); +// String md5 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(md5); +// String md52 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241122.zip"); +// System.out.println(md52); + + testDeviceLogin(); + System.out.println( DateUtil.offsetMinute(new Date(),-5)); + } + public static void testDeviceLogin() throws Exception { + Long time = System.currentTimeMillis(); + String str = "FXDDT_" + time; + String pubKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCynMBxzoNBemZKuxjlZzp04Lx/b0j1xRUznBKjlQSATwc+1DaxBpKdT4WfqAuFlSQLA7qLdntXw2cvUEvRxfdjJp2KfZLkEYRmYx3LT51WdCmouQREtMrR6j3mri8jV8TjktGCmBFMKX7eGeQM8O249yVjby6502bzZXehQ707JQIDAQAB"; + String sec = RSAUtils.encrypt(str, pubKey); + System.out.println(sec); + String priKey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALKcwHHOg0F6Zkq7GOVnOnTgvH9vSPXFFTOcEqOVBIBPBz7UNrEGkp1PhZ+oC4WVJAsDuot2e1fDZy9QS9HF92MmnYp9kuQRhGZjHctPnVZ0Kai5BES0ytHqPeauLyNXxOOS0YKYEUwpft4Z5Azw7bj3JWNvLrnTZvNld6FDvTslAgMBAAECgYAqN/kZLYpC+O6i7XSmDO95XwHPUXu6dDpdt5+EQR4OQh/hTwIaeAZB3uEj6vHGQomBfQEkI/5lsU97lIxHanbd+Hro7JyIhsGD5LR5XnZHVKzFiZW62OIU6FI9dlQNN8miiblnmyDwiMA3okaHl0O7qQjZ+IvY2csgmJc7AXpPpQJBAOhrhcfWFcgffj2O6HYNlBLFfbboc/ZzrEADDXKnxRSHlo5o8W+6gylG/L2NGtbag5S68B9VYzdkSQ1++5C+Ws8CQQDEu7h311PLEiKgqzGHpjzadQETmt/jMadaKQmT0TZwNVi6X8lR17U5hF8dAqZzUzr9kUC0HRIZhg4Uv1v3W3fLAkB4YPhxgJjXhjhEefg87Nt8vX1Xdx5Yz6CvpuUYNX0GHRQFvqUOUXQNtQ7CvorgLV1pc0lbcUZqMi8EJnj1hyJRAkEAjHXWm8GiMt+M15fCsi3vTq2xChVOekBuUsHv85iwvGZqJg7ThtpyqlEnM2g7/STUfkvhnXcQACclEI0blTy6BwJAPmFyhU+d0ejVpbc53TdrL2HqYYUHi/tTy/dtUa7lbypzdwwJ2M1Tv5PE8sQxr9tgMbebfxVb/RFKdiCCtzC4ng=="; + String s = RSAUtils.decrypt(sec,priKey); + System.out.println(s); + + + String appId = "5d7d4d81a64f4b8f"; + String publicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB"; + String secret = RiskHttpUtil.encrypt(appId,publicKey); + System.out.println(secret); + String res = RiskHttpUtil.login("http://101.201.36.107:12388",secret); + System.out.println(res); + JSONObject jsonObject = JSON.parseObject(res); + String token = jsonObject.getString("data"); + String resPoint = RiskHttpUtil.pointData("http://101.201.36.107:12388",token); + System.out.println(resPoint); + + + ResponseDataDTO> riskPointRes = JSON.parseObject(resPoint, new TypeReference>>() { + }); + + } + +} diff --git a/casic-web/src/main/resources/doc/20250609.md b/casic-web/src/main/resources/doc/20250609.md new file mode 100644 index 0000000..0cb3464 --- /dev/null +++ b/casic-web/src/main/resources/doc/20250609.md @@ -0,0 +1,30 @@ +## 一、数据库更新 + +1. 设备分组数据库增加 + +``` +ALTER TABLE bus_device_info ADD COLUMN GROUP_ID bigint; + +create table bus_device_group +( + id bigint not null comment '主键', + create_time datetime comment '创建时间', + update_time datetime comment '修改时间', + group_name varchar(255) comment '分组名称', + create_id bigint comment '创建人', + dept_id bigint comment '所属组织' +); + +alter table bus_device_group comment '设备分组管理信息'; + +``` + +casic.tenant.excludes 配置项中增加 bus_device_group + + +casic.no-login-urls 中增加如下配置 +,/sync/risk/dept,/sync/risk/user/list,/sync/risk/device/list + + + + diff --git a/casic-web/src/main/resources/doc/20250624.md b/casic-web/src/main/resources/doc/20250624.md new file mode 100644 index 0000000..7af561d --- /dev/null +++ b/casic-web/src/main/resources/doc/20250624.md @@ -0,0 +1,34 @@ +## 一、数据库更新 + +1. 风险点表添加同步ID + +``` +ALTER TABLE risk_point_info ADD COLUMN TARGET_ID VARCHAR(255); + +``` + +2. 风险点相关配置项 + +casic.risk.open 默认false 不开启 开启需配置true +casic.risk.corn 定时时间 默认0 */5 * * * * 5分钟 +casic.risk.appId 默认 5d7d4d81a64f4b8f 如变更需更改 +casic.risk.publicKey 公钥 默认MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB +casic.risk.host 风险点地址, 默认http://101.201.36.107:12388 生产需更改 + +3. 增加字典值 + hazardLevelName 风险危险等级(706映射) + 1 低风险 + 1 一般风险 + 2 较大风险 + 3 重大风险 + 以上字典值以706风险等级名称对应本系统风险点1 2 3 等级,如果706风险等级名称变更 修改对应字典值名称即可 + +4. 盒子代理服务模块添加 + 增加配置项 + casic.video.box.proxy 192.168.83.37:30064 此处需变更为部署代理nginx的ip及端口,具体配置参见国标级联及代理服务配置说明 + + + + + + diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" new file mode 100644 index 0000000..30cdcbd --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" new file mode 100644 index 0000000..6a0069c --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" new file mode 100644 index 0000000..f775124 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" new file mode 100644 index 0000000..9f65ff1 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" new file mode 100644 index 0000000..613ec69 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" new file mode 100644 index 0000000..1614b04 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" new file mode 100644 index 0000000..3f5083a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" new file mode 100644 index 0000000..134a604 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" Binary files differ diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java new file mode 100644 index 0000000..77c14a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.device.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dictmap.DeviceGroupQueryDict; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.vo.BusDeviceGroupVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; + +/** + * 设备分组管理信息Controller + * + * @author lwh + * @date 2025-06-11 + */ +@Api(tags = "设备分组管理信息") +@RestController +@RequestMapping("/device/group") +public class BusDeviceGroupController extends BaseController { + + private final IBusDeviceGroupService busDeviceGroupService; + private final AbstractPermissionContext abstractPermissionContext; + + public BusDeviceGroupController(IBusDeviceGroupService busDeviceGroupService, AbstractPermissionContext abstractPermissionContext) { + this.busDeviceGroupService = busDeviceGroupService; + this.abstractPermissionContext = abstractPermissionContext; + } + + @ApiOperation(value = "列表查询") + @GetMapping(value = "/list") + public ResponseDataDTO> list(BusDeviceGroupVO busDeviceGroupVO) { + QueryWrapper query = busDeviceGroupVO.genQuery(); + return ResponseDataDTO.success(busDeviceGroupService.list(query)); + } + + @ApiOperation(value = "分组树结构查询") + @BussinessLog(value = "分组树结构查询") + @GetMapping(value = "/tree") + public ResponseDataDTO> groupTree() { + List groupDTOList = busDeviceGroupService.groupTree(); + return ResponseDataDTO.success(groupDTOList); + } + + @BussinessLog(value = "设备分组分页查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "分页查询") + @GetMapping(value = "/listPage") + public ResponseDataDTO> listPage(BusDeviceGroupVO busDeviceGroupVO) { + Page page = PageFactory.defaultPage(); + QueryWrapper query = busDeviceGroupVO.genQuery(); + List list = busDeviceGroupService.selectBusDeviceGroupPage(page, query); + page.setRecords(list); + return ResponseDataDTO.success(super.packForBT(page)); + } + + @BussinessLog(value = "设备分组新增", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "新增接口") + @PostMapping(value = "/add") + public ResponseDataDTO add(@RequestBody BusDeviceGroup busDeviceGroup) { + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + busDeviceGroup.setCreateId(user.getId()); + busDeviceGroup.setCreateTime(new Date()); + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.save(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组修改", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @PostMapping(value = "/update") + public ResponseDataDTO update(@RequestBody BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.updateById(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组删除", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "删除接口") + @GetMapping(value = "/delete") + public ResponseDataDTO delete(String id) { + busDeviceGroupService.removeById(id); + return ResponseDataDTO.success(); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { + busDeviceGroupService.removeByIds(ids.getIds()); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组详情查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "详情查询") + @GetMapping(value = "/detail") + public ResponseDataDTO detail(String id) { + return ResponseDataDTO.success(busDeviceGroupService.getById(id)); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java new file mode 100644 index 0000000..9d3726f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.device.dao; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import java.util.List; +/** + *

+ * 设备分组管理信息 Mapper 接口 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface BusDeviceGroupMapper extends BaseMapper { +/** +* 设备分组管理信息 分页检索 +*/ +List selectBusDeviceGroupPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml new file mode 100644 index 0000000..a6dd84f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + id + , + create_time as createTime , + update_time as updateTime , + group_name as groupName , + create_id as createId , + dept_id as deptId + + + a + . + id + , + a.create_time + as createTime , + a.update_time + as updateTime , + a.group_name + as groupName , + a.create_id + as createId , + a.dept_id + as deptId + + + + + + and group_name like concat('%',#{request.groupName},'%') + + + and dept_id = #{request.deptId} + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java new file mode 100644 index 0000000..a821e92 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dictmap; + +import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap; + +public class DeviceGroupQueryDict extends AbstractDictMap { + + @Override + public void init() { + put("id", "主键"); + put("deptId", "所属组织"); + put("groupName", "分组名称"); + + put("deptName", "所属单位"); + } + + @Override + protected void initBeWrapped() { + + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java new file mode 100644 index 0000000..d8d1712 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.device.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + + +/** + * 设备分组管理信息对象 bus_device_group + * + * @author lwh + * @date 2025-06-11 + */ +@Data +@TableName("bus_device_group") +public class BusDeviceGroup extends Model { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键", dataType = "Long") + @TableField("id") + private Long id; + + @ApiModelProperty(value = "创建时间", dataType = "Date") + @TableField("create_time") + private Date createTime; + + @ApiModelProperty(value = "修改时间", dataType = "Date") + @TableField("update_time") + private Date updateTime; + + @ApiModelProperty(value = "分组名称", dataType = "String") + @TableField("group_name") + private String groupName; + + @ApiModelProperty(value = "创建人", dataType = "Long") + @TableField("create_id") + private Long createId; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; + @TableField(exist = false) + private String deptName; + + @Override + public String toString() { + return "BusDeviceGroup{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "groupName=" + groupName + + "createId=" + createId + + "deptId=" + deptId + + "}"; + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java new file mode 100644 index 0000000..d2cee5c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; + +import java.util.List; + + +/** + *

+ * 设备分组管理信息 服务类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface IBusDeviceGroupService extends IService { + /** + * 设备分组管理信息 分页检索 + */ + List selectBusDeviceGroupPage(Page page, QueryWrapper query); + + /** + * 树结构查询 + * + * @return + */ + List groupTree(); + + DeptDTO convertDeptDTO(BusDeviceGroup group); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java new file mode 100644 index 0000000..a6f08b7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java @@ -0,0 +1,139 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractAuthService; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.modular.data.constants.DataConstants; +import com.casic.missiles.modular.device.dao.BusDeviceGroupMapper; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; +import com.casic.missiles.modular.system.model.Dept; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.data.constants.DataConstants.NODE_TYPE_DEPT; + + +/** + *

+ * 设备分组管理信息 服务实现类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +@Service +public class BusDeviceGroupServiceImpl extends ServiceImpl implements IBusDeviceGroupService { + @Resource + private AbstractDeptService deptService; + + @Override + public List selectBusDeviceGroupPage(Page page, QueryWrapper query) { + List list = this.baseMapper.selectBusDeviceGroupPage(page, query); + list.forEach(this::wrapperInfo); + return list; + } + + @Override + public List groupTree() { + List deptList = deviceDept(); + + List deptDTOS = new ArrayList<>(); + //树节点根 + List rootIds = new ArrayList<>(); + Set normalIds = new HashSet<>(); + + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setId(dept.getId()); + deptDTO.setPid(dept.getPid()); + deptDTO.setFullName(dept.getFullName()); + deptDTO.setName(dept.getSimpleName()); + deptDTO.setType(NODE_TYPE_DEPT); + + normalIds.add(dept.getId()); + deptDTOS.add(deptDTO); + + + //查询该组织下分组信息 + LambdaQueryWrapper deviceQuery = new LambdaQueryWrapper<>(); + deviceQuery.eq(BusDeviceGroup::getDeptId, deptDTO.getId()); + + deviceQuery.orderByAsc(BusDeviceGroup::getGroupName); + List deviceInfos = this.list(deviceQuery); + List deptDTOList = new ArrayList<>(); + for (BusDeviceGroup group : deviceInfos) { + DeptDTO deptDto = this.convertDeptDTO(group); + deptDTOList.add(deptDto); + } + deptDTO.setChildrenNodes(deptDTOList); + } + + for (DeptDTO deptDTO : deptDTOS) { + if (!normalIds.contains(deptDTO.getPid())) { + rootIds.add(deptDTO.getPid()); + } + } + + //过滤根节点 + DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); + List newTree = new ArrayList<>(); + rootIds = rootIds.stream().distinct().collect(Collectors.toList()); + for (Long rootId : rootIds) { + abstractTreeBuildFactory.setRootId(rootId + ""); + newTree.addAll(abstractTreeBuildFactory.doTreeBuild(deptDTOS)); + } + return newTree; + } + + public DeptDTO convertDeptDTO(BusDeviceGroup group) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setType(DataConstants.NODE_TYPE_GROUP); + deptDTO.setId(group.getId()); + deptDTO.setPid(group.getDeptId()); + deptDTO.setName(group.getGroupName()); + deptDTO.setGroup(group); + return deptDTO; + } + + @Resource + private AbstractAuthService authService; + + private List deviceDept() { + //查询可见组织 + DataScope scope = authService.getLoginUserDataScope(); + AuthUser user = authService.getLoginUser(); + + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); + deptQuery.inSql(Dept::getId, "select dept_id from bus_device_info "); + if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums().getCode())) { + deptQuery.in(Dept::getId, scope.getDeptIds()); + } + deptQuery.orderByAsc(Dept::getNum); + + List deptList = deptService.list(deptQuery); + return deptList; + } + + @Override + public List list() { + List list = super.list(); + list.forEach(this::wrapperInfo); + return list; + } + + private void wrapperInfo(BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setDeptName(deptService.getDeptName(busDeviceGroup.getDeptId())); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java new file mode 100644 index 0000000..413d7ac --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.device.vo; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 设备分组管理信息对象VO + * + * @author lwh + * @date 2025-06-11 + */ +@Data +public class BusDeviceGroupVO { + private static final long serialVersionUID = 1L; + + + @ApiModelProperty(value = "分组名称", dataType = "String") + private String groupName; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + private Long deptId; + + public QueryWrapper genQuery() { + QueryWrapper query = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(groupName)) { + query.like("group_name", groupName); + } + if (deptId != null) { + query.eq("dept_id", deptId); + } + return query; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java new file mode 100644 index 0000000..477435e --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java @@ -0,0 +1,163 @@ +package com.casic.missiles.modular.device.dto.risk; + +import cn.hutool.core.convert.Convert; +import com.casic.missiles.modular.device.model.RiskPointInfo; +import lombok.Data; + +@Data +public class SyncRiskDTO { + /** + * 主键 + */ + private String id; + private String name; + /** + * 重大风险 + * 风险等级 + */ + private String hazardLevel; + /** + * 危险因素 + */ + private String riskFactors; + /** + * 所属单位 + */ + private String affiliatedUnit; + /** + * 所属部门 + */ + private String department; + + /** + * 定员 + */ + private String staffing; + + /** + * 定量 + */ + private String ration; + + /** + * 地理位置 + */ + private String geographicalPosition; + + /** + * 责任人 + */ + private String personLiable; + + /** + * 现场负责人 + */ + private String siteLeader; + + /** + * 主要设备、设施设计制造单位 + */ + private String zysbZzdw; + + /** + * 所在单位 + */ + private String szdw; + + /** + * 作业人数 + */ + private String numberOperators; + + /** + * 主要性能参数 + */ + private String mainPerformanceParameters; + + /** + * 工作环境参数 + */ + private String workingEnvironmentParameters; + + /** + * 安装单位 + */ + private String installationUnit; + + /** + * 投产日期 + */ + private String productionDate; + + /** + * 设备总数 + */ + private String totalEquipment; + + /** + * 备注 + */ + private String note; + + /** + * 创建用户 + */ + private String createUser; + private String createTime; + private String updateUser; + private String updateTime; + /** + * 是否删除0:否;1:是(接口已过滤掉1的数据) + */ + private Integer isDel; + + /** + * 行政区域 + */ + private String xzqy; + /** + * 街道 + */ + private String jdxx; + + /** + * 楼房 + */ + private String loufang; + + /** + * 楼层 + */ + private String louceng; + + /** + * 房间 + */ + private String roomName; + /** + * 所属单位编码 + */ + private String affiliatedUnitsCode; + + /** + * 危险性质 + */ + private String hazardousNature; + + public RiskPointInfo convertToRisk(RiskPointInfo pointInfo) { + //风险点缺少密级 + pointInfo.setSecretLevel("1"); + // hazardLevel 是否有字典值? + + if (department != null) { + pointInfo.setDeptId(Convert.toLong(department)); + } + pointInfo.setNature(hazardousNature); + pointInfo.setRiskName(name); + pointInfo.setAddress(geographicalPosition); + pointInfo.setTargetId(id); + //默认类型为1 + pointInfo.setRiskType(1); + return pointInfo; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java new file mode 100644 index 0000000..08e89a0 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.device.handler; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class BoxDefaultHttpHeaderHandler extends DefaultHttpHeaderHandler { + /** + * 代理服务IP + */ + private String xTargetHost; + + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Access-Token", token); + } + if (StrUtil.isNotEmpty(xTargetHost)){ + base.addHeader("X-TARGET-HOST", xTargetHost); + } + } + + public String getXTargetHost() { + return xTargetHost; + } + + public void setXTargetHost(String XTargetHost) { + this.xTargetHost = XTargetHost; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java new file mode 100644 index 0000000..903e567 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.http; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class RiskHttpHandler extends DefaultHttpHeaderHandler { + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Authorization", token); + } + + } +} + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java new file mode 100644 index 0000000..9f75f42 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java @@ -0,0 +1,35 @@ +package com.casic.missiles.modular.task; + +import com.casic.missiles.modular.device.service.IRiskPointInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +@Slf4j +@Component +public class RiskTask { + + @Value("${casic.risk.open:false}") + private Boolean open; + + @Resource + private IRiskPointInfoService riskPointInfoService; + + /** + * 设备信息同步0 + * 每30分钟采集一次 + */ + @Scheduled(cron = "${casic.risk.corn:0 */1 * * * *}") + public void device() { + //风险点数据同步 + if (open) { + log.info("risk sync start...."); + riskPointInfoService.loadRiskInfo(); + log.info("risk sync end...."); + } + } + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java new file mode 100644 index 0000000..e4ca4f1 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.util; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.modular.http.RiskHttpHandler; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import com.casic.missiles.modular.system.utils.HttpUtils; + +import java.util.HashMap; +import java.util.Map; + +public class RiskHttpUtil { + public static final String loginUrl = "/rest/platform/systemLogin"; + public static final String pointDataUrl = "/rest/platform/dangerPointData"; + + public static String login(String baseUrl, String secret) { + Map param = new HashMap<>(); + param.put("secret", secret); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + defaultHeaderHandler.setJson(true); + String res = HttpUtils.sendPost(baseUrl + loginUrl, param, "", defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + public static String pointData(String baseUrl, String token) { + Map param = new HashMap<>(); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + + String res = HttpUtils.sendGet(baseUrl + pointDataUrl, param, token, defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + /** + * 登录数据加密 + * @param appId 加密id + * @param publicKey 公钥 + * @return + * @throws Exception + */ + public static String encrypt(String appId,String publicKey) throws Exception { + long ts = System.currentTimeMillis(); + return RSAUtils.encrypt(appId+"_"+ts,publicKey); + } + + +} diff --git a/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java new file mode 100644 index 0000000..9ba1e2a --- /dev/null +++ b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java @@ -0,0 +1,62 @@ +package com.casic.missiles.test; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.TypeReference; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.risk.SyncRiskDTO; +import com.casic.missiles.modular.device.util.AesUtil; +import com.casic.missiles.modular.util.RiskHttpUtil; +import com.casic.missiles.modular.util.WvpUtil; +import com.casic.missiles.modular.wvp.dto.MvpResponseDTO; + +import java.io.FileInputStream; +import java.security.MessageDigest; +import java.util.Date; +import java.util.HashMap; +import java.util.List; + +public class RiskTest { + public static void main(String[] args) throws Exception { +// File file = new File("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// String task = ZipFileUtil.getZipHandleTask("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(task); +// String md5 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(md5); +// String md52 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241122.zip"); +// System.out.println(md52); + + testDeviceLogin(); + System.out.println( DateUtil.offsetMinute(new Date(),-5)); + } + public static void testDeviceLogin() throws Exception { + Long time = System.currentTimeMillis(); + String str = "FXDDT_" + time; + String pubKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCynMBxzoNBemZKuxjlZzp04Lx/b0j1xRUznBKjlQSATwc+1DaxBpKdT4WfqAuFlSQLA7qLdntXw2cvUEvRxfdjJp2KfZLkEYRmYx3LT51WdCmouQREtMrR6j3mri8jV8TjktGCmBFMKX7eGeQM8O249yVjby6502bzZXehQ707JQIDAQAB"; + String sec = RSAUtils.encrypt(str, pubKey); + System.out.println(sec); + String priKey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALKcwHHOg0F6Zkq7GOVnOnTgvH9vSPXFFTOcEqOVBIBPBz7UNrEGkp1PhZ+oC4WVJAsDuot2e1fDZy9QS9HF92MmnYp9kuQRhGZjHctPnVZ0Kai5BES0ytHqPeauLyNXxOOS0YKYEUwpft4Z5Azw7bj3JWNvLrnTZvNld6FDvTslAgMBAAECgYAqN/kZLYpC+O6i7XSmDO95XwHPUXu6dDpdt5+EQR4OQh/hTwIaeAZB3uEj6vHGQomBfQEkI/5lsU97lIxHanbd+Hro7JyIhsGD5LR5XnZHVKzFiZW62OIU6FI9dlQNN8miiblnmyDwiMA3okaHl0O7qQjZ+IvY2csgmJc7AXpPpQJBAOhrhcfWFcgffj2O6HYNlBLFfbboc/ZzrEADDXKnxRSHlo5o8W+6gylG/L2NGtbag5S68B9VYzdkSQ1++5C+Ws8CQQDEu7h311PLEiKgqzGHpjzadQETmt/jMadaKQmT0TZwNVi6X8lR17U5hF8dAqZzUzr9kUC0HRIZhg4Uv1v3W3fLAkB4YPhxgJjXhjhEefg87Nt8vX1Xdx5Yz6CvpuUYNX0GHRQFvqUOUXQNtQ7CvorgLV1pc0lbcUZqMi8EJnj1hyJRAkEAjHXWm8GiMt+M15fCsi3vTq2xChVOekBuUsHv85iwvGZqJg7ThtpyqlEnM2g7/STUfkvhnXcQACclEI0blTy6BwJAPmFyhU+d0ejVpbc53TdrL2HqYYUHi/tTy/dtUa7lbypzdwwJ2M1Tv5PE8sQxr9tgMbebfxVb/RFKdiCCtzC4ng=="; + String s = RSAUtils.decrypt(sec,priKey); + System.out.println(s); + + + String appId = "5d7d4d81a64f4b8f"; + String publicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB"; + String secret = RiskHttpUtil.encrypt(appId,publicKey); + System.out.println(secret); + String res = RiskHttpUtil.login("http://101.201.36.107:12388",secret); + System.out.println(res); + JSONObject jsonObject = JSON.parseObject(res); + String token = jsonObject.getString("data"); + String resPoint = RiskHttpUtil.pointData("http://101.201.36.107:12388",token); + System.out.println(resPoint); + + + ResponseDataDTO> riskPointRes = JSON.parseObject(resPoint, new TypeReference>>() { + }); + + } + +} diff --git a/casic-web/src/main/resources/doc/20250609.md b/casic-web/src/main/resources/doc/20250609.md new file mode 100644 index 0000000..0cb3464 --- /dev/null +++ b/casic-web/src/main/resources/doc/20250609.md @@ -0,0 +1,30 @@ +## 一、数据库更新 + +1. 设备分组数据库增加 + +``` +ALTER TABLE bus_device_info ADD COLUMN GROUP_ID bigint; + +create table bus_device_group +( + id bigint not null comment '主键', + create_time datetime comment '创建时间', + update_time datetime comment '修改时间', + group_name varchar(255) comment '分组名称', + create_id bigint comment '创建人', + dept_id bigint comment '所属组织' +); + +alter table bus_device_group comment '设备分组管理信息'; + +``` + +casic.tenant.excludes 配置项中增加 bus_device_group + + +casic.no-login-urls 中增加如下配置 +,/sync/risk/dept,/sync/risk/user/list,/sync/risk/device/list + + + + diff --git a/casic-web/src/main/resources/doc/20250624.md b/casic-web/src/main/resources/doc/20250624.md new file mode 100644 index 0000000..7af561d --- /dev/null +++ b/casic-web/src/main/resources/doc/20250624.md @@ -0,0 +1,34 @@ +## 一、数据库更新 + +1. 风险点表添加同步ID + +``` +ALTER TABLE risk_point_info ADD COLUMN TARGET_ID VARCHAR(255); + +``` + +2. 风险点相关配置项 + +casic.risk.open 默认false 不开启 开启需配置true +casic.risk.corn 定时时间 默认0 */5 * * * * 5分钟 +casic.risk.appId 默认 5d7d4d81a64f4b8f 如变更需更改 +casic.risk.publicKey 公钥 默认MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB +casic.risk.host 风险点地址, 默认http://101.201.36.107:12388 生产需更改 + +3. 增加字典值 + hazardLevelName 风险危险等级(706映射) + 1 低风险 + 1 一般风险 + 2 较大风险 + 3 重大风险 + 以上字典值以706风险等级名称对应本系统风险点1 2 3 等级,如果706风险等级名称变更 修改对应字典值名称即可 + +4. 盒子代理服务模块添加 + 增加配置项 + casic.video.box.proxy 192.168.83.37:30064 此处需变更为部署代理nginx的ip及端口,具体配置参见国标级联及代理服务配置说明 + + + + + + diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" new file mode 100644 index 0000000..30cdcbd --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" new file mode 100644 index 0000000..6a0069c --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" new file mode 100644 index 0000000..f775124 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" new file mode 100644 index 0000000..9f65ff1 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" new file mode 100644 index 0000000..613ec69 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" new file mode 100644 index 0000000..1614b04 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" new file mode 100644 index 0000000..3f5083a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" new file mode 100644 index 0000000..134a604 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" new file mode 100644 index 0000000..7edeaa0 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" Binary files differ diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java new file mode 100644 index 0000000..77c14a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.device.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dictmap.DeviceGroupQueryDict; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.vo.BusDeviceGroupVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; + +/** + * 设备分组管理信息Controller + * + * @author lwh + * @date 2025-06-11 + */ +@Api(tags = "设备分组管理信息") +@RestController +@RequestMapping("/device/group") +public class BusDeviceGroupController extends BaseController { + + private final IBusDeviceGroupService busDeviceGroupService; + private final AbstractPermissionContext abstractPermissionContext; + + public BusDeviceGroupController(IBusDeviceGroupService busDeviceGroupService, AbstractPermissionContext abstractPermissionContext) { + this.busDeviceGroupService = busDeviceGroupService; + this.abstractPermissionContext = abstractPermissionContext; + } + + @ApiOperation(value = "列表查询") + @GetMapping(value = "/list") + public ResponseDataDTO> list(BusDeviceGroupVO busDeviceGroupVO) { + QueryWrapper query = busDeviceGroupVO.genQuery(); + return ResponseDataDTO.success(busDeviceGroupService.list(query)); + } + + @ApiOperation(value = "分组树结构查询") + @BussinessLog(value = "分组树结构查询") + @GetMapping(value = "/tree") + public ResponseDataDTO> groupTree() { + List groupDTOList = busDeviceGroupService.groupTree(); + return ResponseDataDTO.success(groupDTOList); + } + + @BussinessLog(value = "设备分组分页查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "分页查询") + @GetMapping(value = "/listPage") + public ResponseDataDTO> listPage(BusDeviceGroupVO busDeviceGroupVO) { + Page page = PageFactory.defaultPage(); + QueryWrapper query = busDeviceGroupVO.genQuery(); + List list = busDeviceGroupService.selectBusDeviceGroupPage(page, query); + page.setRecords(list); + return ResponseDataDTO.success(super.packForBT(page)); + } + + @BussinessLog(value = "设备分组新增", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "新增接口") + @PostMapping(value = "/add") + public ResponseDataDTO add(@RequestBody BusDeviceGroup busDeviceGroup) { + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + busDeviceGroup.setCreateId(user.getId()); + busDeviceGroup.setCreateTime(new Date()); + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.save(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组修改", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @PostMapping(value = "/update") + public ResponseDataDTO update(@RequestBody BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.updateById(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组删除", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "删除接口") + @GetMapping(value = "/delete") + public ResponseDataDTO delete(String id) { + busDeviceGroupService.removeById(id); + return ResponseDataDTO.success(); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { + busDeviceGroupService.removeByIds(ids.getIds()); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组详情查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "详情查询") + @GetMapping(value = "/detail") + public ResponseDataDTO detail(String id) { + return ResponseDataDTO.success(busDeviceGroupService.getById(id)); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java new file mode 100644 index 0000000..9d3726f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.device.dao; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import java.util.List; +/** + *

+ * 设备分组管理信息 Mapper 接口 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface BusDeviceGroupMapper extends BaseMapper { +/** +* 设备分组管理信息 分页检索 +*/ +List selectBusDeviceGroupPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml new file mode 100644 index 0000000..a6dd84f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + id + , + create_time as createTime , + update_time as updateTime , + group_name as groupName , + create_id as createId , + dept_id as deptId + + + a + . + id + , + a.create_time + as createTime , + a.update_time + as updateTime , + a.group_name + as groupName , + a.create_id + as createId , + a.dept_id + as deptId + + + + + + and group_name like concat('%',#{request.groupName},'%') + + + and dept_id = #{request.deptId} + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java new file mode 100644 index 0000000..a821e92 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dictmap; + +import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap; + +public class DeviceGroupQueryDict extends AbstractDictMap { + + @Override + public void init() { + put("id", "主键"); + put("deptId", "所属组织"); + put("groupName", "分组名称"); + + put("deptName", "所属单位"); + } + + @Override + protected void initBeWrapped() { + + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java new file mode 100644 index 0000000..d8d1712 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.device.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + + +/** + * 设备分组管理信息对象 bus_device_group + * + * @author lwh + * @date 2025-06-11 + */ +@Data +@TableName("bus_device_group") +public class BusDeviceGroup extends Model { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键", dataType = "Long") + @TableField("id") + private Long id; + + @ApiModelProperty(value = "创建时间", dataType = "Date") + @TableField("create_time") + private Date createTime; + + @ApiModelProperty(value = "修改时间", dataType = "Date") + @TableField("update_time") + private Date updateTime; + + @ApiModelProperty(value = "分组名称", dataType = "String") + @TableField("group_name") + private String groupName; + + @ApiModelProperty(value = "创建人", dataType = "Long") + @TableField("create_id") + private Long createId; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; + @TableField(exist = false) + private String deptName; + + @Override + public String toString() { + return "BusDeviceGroup{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "groupName=" + groupName + + "createId=" + createId + + "deptId=" + deptId + + "}"; + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java new file mode 100644 index 0000000..d2cee5c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; + +import java.util.List; + + +/** + *

+ * 设备分组管理信息 服务类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface IBusDeviceGroupService extends IService { + /** + * 设备分组管理信息 分页检索 + */ + List selectBusDeviceGroupPage(Page page, QueryWrapper query); + + /** + * 树结构查询 + * + * @return + */ + List groupTree(); + + DeptDTO convertDeptDTO(BusDeviceGroup group); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java new file mode 100644 index 0000000..a6f08b7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java @@ -0,0 +1,139 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractAuthService; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.modular.data.constants.DataConstants; +import com.casic.missiles.modular.device.dao.BusDeviceGroupMapper; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; +import com.casic.missiles.modular.system.model.Dept; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.data.constants.DataConstants.NODE_TYPE_DEPT; + + +/** + *

+ * 设备分组管理信息 服务实现类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +@Service +public class BusDeviceGroupServiceImpl extends ServiceImpl implements IBusDeviceGroupService { + @Resource + private AbstractDeptService deptService; + + @Override + public List selectBusDeviceGroupPage(Page page, QueryWrapper query) { + List list = this.baseMapper.selectBusDeviceGroupPage(page, query); + list.forEach(this::wrapperInfo); + return list; + } + + @Override + public List groupTree() { + List deptList = deviceDept(); + + List deptDTOS = new ArrayList<>(); + //树节点根 + List rootIds = new ArrayList<>(); + Set normalIds = new HashSet<>(); + + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setId(dept.getId()); + deptDTO.setPid(dept.getPid()); + deptDTO.setFullName(dept.getFullName()); + deptDTO.setName(dept.getSimpleName()); + deptDTO.setType(NODE_TYPE_DEPT); + + normalIds.add(dept.getId()); + deptDTOS.add(deptDTO); + + + //查询该组织下分组信息 + LambdaQueryWrapper deviceQuery = new LambdaQueryWrapper<>(); + deviceQuery.eq(BusDeviceGroup::getDeptId, deptDTO.getId()); + + deviceQuery.orderByAsc(BusDeviceGroup::getGroupName); + List deviceInfos = this.list(deviceQuery); + List deptDTOList = new ArrayList<>(); + for (BusDeviceGroup group : deviceInfos) { + DeptDTO deptDto = this.convertDeptDTO(group); + deptDTOList.add(deptDto); + } + deptDTO.setChildrenNodes(deptDTOList); + } + + for (DeptDTO deptDTO : deptDTOS) { + if (!normalIds.contains(deptDTO.getPid())) { + rootIds.add(deptDTO.getPid()); + } + } + + //过滤根节点 + DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); + List newTree = new ArrayList<>(); + rootIds = rootIds.stream().distinct().collect(Collectors.toList()); + for (Long rootId : rootIds) { + abstractTreeBuildFactory.setRootId(rootId + ""); + newTree.addAll(abstractTreeBuildFactory.doTreeBuild(deptDTOS)); + } + return newTree; + } + + public DeptDTO convertDeptDTO(BusDeviceGroup group) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setType(DataConstants.NODE_TYPE_GROUP); + deptDTO.setId(group.getId()); + deptDTO.setPid(group.getDeptId()); + deptDTO.setName(group.getGroupName()); + deptDTO.setGroup(group); + return deptDTO; + } + + @Resource + private AbstractAuthService authService; + + private List deviceDept() { + //查询可见组织 + DataScope scope = authService.getLoginUserDataScope(); + AuthUser user = authService.getLoginUser(); + + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); + deptQuery.inSql(Dept::getId, "select dept_id from bus_device_info "); + if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums().getCode())) { + deptQuery.in(Dept::getId, scope.getDeptIds()); + } + deptQuery.orderByAsc(Dept::getNum); + + List deptList = deptService.list(deptQuery); + return deptList; + } + + @Override + public List list() { + List list = super.list(); + list.forEach(this::wrapperInfo); + return list; + } + + private void wrapperInfo(BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setDeptName(deptService.getDeptName(busDeviceGroup.getDeptId())); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java new file mode 100644 index 0000000..413d7ac --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.device.vo; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 设备分组管理信息对象VO + * + * @author lwh + * @date 2025-06-11 + */ +@Data +public class BusDeviceGroupVO { + private static final long serialVersionUID = 1L; + + + @ApiModelProperty(value = "分组名称", dataType = "String") + private String groupName; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + private Long deptId; + + public QueryWrapper genQuery() { + QueryWrapper query = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(groupName)) { + query.like("group_name", groupName); + } + if (deptId != null) { + query.eq("dept_id", deptId); + } + return query; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java new file mode 100644 index 0000000..477435e --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java @@ -0,0 +1,163 @@ +package com.casic.missiles.modular.device.dto.risk; + +import cn.hutool.core.convert.Convert; +import com.casic.missiles.modular.device.model.RiskPointInfo; +import lombok.Data; + +@Data +public class SyncRiskDTO { + /** + * 主键 + */ + private String id; + private String name; + /** + * 重大风险 + * 风险等级 + */ + private String hazardLevel; + /** + * 危险因素 + */ + private String riskFactors; + /** + * 所属单位 + */ + private String affiliatedUnit; + /** + * 所属部门 + */ + private String department; + + /** + * 定员 + */ + private String staffing; + + /** + * 定量 + */ + private String ration; + + /** + * 地理位置 + */ + private String geographicalPosition; + + /** + * 责任人 + */ + private String personLiable; + + /** + * 现场负责人 + */ + private String siteLeader; + + /** + * 主要设备、设施设计制造单位 + */ + private String zysbZzdw; + + /** + * 所在单位 + */ + private String szdw; + + /** + * 作业人数 + */ + private String numberOperators; + + /** + * 主要性能参数 + */ + private String mainPerformanceParameters; + + /** + * 工作环境参数 + */ + private String workingEnvironmentParameters; + + /** + * 安装单位 + */ + private String installationUnit; + + /** + * 投产日期 + */ + private String productionDate; + + /** + * 设备总数 + */ + private String totalEquipment; + + /** + * 备注 + */ + private String note; + + /** + * 创建用户 + */ + private String createUser; + private String createTime; + private String updateUser; + private String updateTime; + /** + * 是否删除0:否;1:是(接口已过滤掉1的数据) + */ + private Integer isDel; + + /** + * 行政区域 + */ + private String xzqy; + /** + * 街道 + */ + private String jdxx; + + /** + * 楼房 + */ + private String loufang; + + /** + * 楼层 + */ + private String louceng; + + /** + * 房间 + */ + private String roomName; + /** + * 所属单位编码 + */ + private String affiliatedUnitsCode; + + /** + * 危险性质 + */ + private String hazardousNature; + + public RiskPointInfo convertToRisk(RiskPointInfo pointInfo) { + //风险点缺少密级 + pointInfo.setSecretLevel("1"); + // hazardLevel 是否有字典值? + + if (department != null) { + pointInfo.setDeptId(Convert.toLong(department)); + } + pointInfo.setNature(hazardousNature); + pointInfo.setRiskName(name); + pointInfo.setAddress(geographicalPosition); + pointInfo.setTargetId(id); + //默认类型为1 + pointInfo.setRiskType(1); + return pointInfo; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java new file mode 100644 index 0000000..08e89a0 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.device.handler; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class BoxDefaultHttpHeaderHandler extends DefaultHttpHeaderHandler { + /** + * 代理服务IP + */ + private String xTargetHost; + + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Access-Token", token); + } + if (StrUtil.isNotEmpty(xTargetHost)){ + base.addHeader("X-TARGET-HOST", xTargetHost); + } + } + + public String getXTargetHost() { + return xTargetHost; + } + + public void setXTargetHost(String XTargetHost) { + this.xTargetHost = XTargetHost; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java new file mode 100644 index 0000000..903e567 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.http; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class RiskHttpHandler extends DefaultHttpHeaderHandler { + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Authorization", token); + } + + } +} + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java new file mode 100644 index 0000000..9f75f42 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java @@ -0,0 +1,35 @@ +package com.casic.missiles.modular.task; + +import com.casic.missiles.modular.device.service.IRiskPointInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +@Slf4j +@Component +public class RiskTask { + + @Value("${casic.risk.open:false}") + private Boolean open; + + @Resource + private IRiskPointInfoService riskPointInfoService; + + /** + * 设备信息同步0 + * 每30分钟采集一次 + */ + @Scheduled(cron = "${casic.risk.corn:0 */1 * * * *}") + public void device() { + //风险点数据同步 + if (open) { + log.info("risk sync start...."); + riskPointInfoService.loadRiskInfo(); + log.info("risk sync end...."); + } + } + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java new file mode 100644 index 0000000..e4ca4f1 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.util; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.modular.http.RiskHttpHandler; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import com.casic.missiles.modular.system.utils.HttpUtils; + +import java.util.HashMap; +import java.util.Map; + +public class RiskHttpUtil { + public static final String loginUrl = "/rest/platform/systemLogin"; + public static final String pointDataUrl = "/rest/platform/dangerPointData"; + + public static String login(String baseUrl, String secret) { + Map param = new HashMap<>(); + param.put("secret", secret); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + defaultHeaderHandler.setJson(true); + String res = HttpUtils.sendPost(baseUrl + loginUrl, param, "", defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + public static String pointData(String baseUrl, String token) { + Map param = new HashMap<>(); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + + String res = HttpUtils.sendGet(baseUrl + pointDataUrl, param, token, defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + /** + * 登录数据加密 + * @param appId 加密id + * @param publicKey 公钥 + * @return + * @throws Exception + */ + public static String encrypt(String appId,String publicKey) throws Exception { + long ts = System.currentTimeMillis(); + return RSAUtils.encrypt(appId+"_"+ts,publicKey); + } + + +} diff --git a/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java new file mode 100644 index 0000000..9ba1e2a --- /dev/null +++ b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java @@ -0,0 +1,62 @@ +package com.casic.missiles.test; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.TypeReference; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.risk.SyncRiskDTO; +import com.casic.missiles.modular.device.util.AesUtil; +import com.casic.missiles.modular.util.RiskHttpUtil; +import com.casic.missiles.modular.util.WvpUtil; +import com.casic.missiles.modular.wvp.dto.MvpResponseDTO; + +import java.io.FileInputStream; +import java.security.MessageDigest; +import java.util.Date; +import java.util.HashMap; +import java.util.List; + +public class RiskTest { + public static void main(String[] args) throws Exception { +// File file = new File("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// String task = ZipFileUtil.getZipHandleTask("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(task); +// String md5 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(md5); +// String md52 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241122.zip"); +// System.out.println(md52); + + testDeviceLogin(); + System.out.println( DateUtil.offsetMinute(new Date(),-5)); + } + public static void testDeviceLogin() throws Exception { + Long time = System.currentTimeMillis(); + String str = "FXDDT_" + time; + String pubKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCynMBxzoNBemZKuxjlZzp04Lx/b0j1xRUznBKjlQSATwc+1DaxBpKdT4WfqAuFlSQLA7qLdntXw2cvUEvRxfdjJp2KfZLkEYRmYx3LT51WdCmouQREtMrR6j3mri8jV8TjktGCmBFMKX7eGeQM8O249yVjby6502bzZXehQ707JQIDAQAB"; + String sec = RSAUtils.encrypt(str, pubKey); + System.out.println(sec); + String priKey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALKcwHHOg0F6Zkq7GOVnOnTgvH9vSPXFFTOcEqOVBIBPBz7UNrEGkp1PhZ+oC4WVJAsDuot2e1fDZy9QS9HF92MmnYp9kuQRhGZjHctPnVZ0Kai5BES0ytHqPeauLyNXxOOS0YKYEUwpft4Z5Azw7bj3JWNvLrnTZvNld6FDvTslAgMBAAECgYAqN/kZLYpC+O6i7XSmDO95XwHPUXu6dDpdt5+EQR4OQh/hTwIaeAZB3uEj6vHGQomBfQEkI/5lsU97lIxHanbd+Hro7JyIhsGD5LR5XnZHVKzFiZW62OIU6FI9dlQNN8miiblnmyDwiMA3okaHl0O7qQjZ+IvY2csgmJc7AXpPpQJBAOhrhcfWFcgffj2O6HYNlBLFfbboc/ZzrEADDXKnxRSHlo5o8W+6gylG/L2NGtbag5S68B9VYzdkSQ1++5C+Ws8CQQDEu7h311PLEiKgqzGHpjzadQETmt/jMadaKQmT0TZwNVi6X8lR17U5hF8dAqZzUzr9kUC0HRIZhg4Uv1v3W3fLAkB4YPhxgJjXhjhEefg87Nt8vX1Xdx5Yz6CvpuUYNX0GHRQFvqUOUXQNtQ7CvorgLV1pc0lbcUZqMi8EJnj1hyJRAkEAjHXWm8GiMt+M15fCsi3vTq2xChVOekBuUsHv85iwvGZqJg7ThtpyqlEnM2g7/STUfkvhnXcQACclEI0blTy6BwJAPmFyhU+d0ejVpbc53TdrL2HqYYUHi/tTy/dtUa7lbypzdwwJ2M1Tv5PE8sQxr9tgMbebfxVb/RFKdiCCtzC4ng=="; + String s = RSAUtils.decrypt(sec,priKey); + System.out.println(s); + + + String appId = "5d7d4d81a64f4b8f"; + String publicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB"; + String secret = RiskHttpUtil.encrypt(appId,publicKey); + System.out.println(secret); + String res = RiskHttpUtil.login("http://101.201.36.107:12388",secret); + System.out.println(res); + JSONObject jsonObject = JSON.parseObject(res); + String token = jsonObject.getString("data"); + String resPoint = RiskHttpUtil.pointData("http://101.201.36.107:12388",token); + System.out.println(resPoint); + + + ResponseDataDTO> riskPointRes = JSON.parseObject(resPoint, new TypeReference>>() { + }); + + } + +} diff --git a/casic-web/src/main/resources/doc/20250609.md b/casic-web/src/main/resources/doc/20250609.md new file mode 100644 index 0000000..0cb3464 --- /dev/null +++ b/casic-web/src/main/resources/doc/20250609.md @@ -0,0 +1,30 @@ +## 一、数据库更新 + +1. 设备分组数据库增加 + +``` +ALTER TABLE bus_device_info ADD COLUMN GROUP_ID bigint; + +create table bus_device_group +( + id bigint not null comment '主键', + create_time datetime comment '创建时间', + update_time datetime comment '修改时间', + group_name varchar(255) comment '分组名称', + create_id bigint comment '创建人', + dept_id bigint comment '所属组织' +); + +alter table bus_device_group comment '设备分组管理信息'; + +``` + +casic.tenant.excludes 配置项中增加 bus_device_group + + +casic.no-login-urls 中增加如下配置 +,/sync/risk/dept,/sync/risk/user/list,/sync/risk/device/list + + + + diff --git a/casic-web/src/main/resources/doc/20250624.md b/casic-web/src/main/resources/doc/20250624.md new file mode 100644 index 0000000..7af561d --- /dev/null +++ b/casic-web/src/main/resources/doc/20250624.md @@ -0,0 +1,34 @@ +## 一、数据库更新 + +1. 风险点表添加同步ID + +``` +ALTER TABLE risk_point_info ADD COLUMN TARGET_ID VARCHAR(255); + +``` + +2. 风险点相关配置项 + +casic.risk.open 默认false 不开启 开启需配置true +casic.risk.corn 定时时间 默认0 */5 * * * * 5分钟 +casic.risk.appId 默认 5d7d4d81a64f4b8f 如变更需更改 +casic.risk.publicKey 公钥 默认MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB +casic.risk.host 风险点地址, 默认http://101.201.36.107:12388 生产需更改 + +3. 增加字典值 + hazardLevelName 风险危险等级(706映射) + 1 低风险 + 1 一般风险 + 2 较大风险 + 3 重大风险 + 以上字典值以706风险等级名称对应本系统风险点1 2 3 等级,如果706风险等级名称变更 修改对应字典值名称即可 + +4. 盒子代理服务模块添加 + 增加配置项 + casic.video.box.proxy 192.168.83.37:30064 此处需变更为部署代理nginx的ip及端口,具体配置参见国标级联及代理服务配置说明 + + + + + + diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" new file mode 100644 index 0000000..30cdcbd --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" new file mode 100644 index 0000000..6a0069c --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" new file mode 100644 index 0000000..f775124 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" new file mode 100644 index 0000000..9f65ff1 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" new file mode 100644 index 0000000..613ec69 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" new file mode 100644 index 0000000..1614b04 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" new file mode 100644 index 0000000..3f5083a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" new file mode 100644 index 0000000..134a604 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" new file mode 100644 index 0000000..7edeaa0 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" new file mode 100644 index 0000000..ccd0993 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" Binary files differ diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java new file mode 100644 index 0000000..77c14a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.device.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dictmap.DeviceGroupQueryDict; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.vo.BusDeviceGroupVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; + +/** + * 设备分组管理信息Controller + * + * @author lwh + * @date 2025-06-11 + */ +@Api(tags = "设备分组管理信息") +@RestController +@RequestMapping("/device/group") +public class BusDeviceGroupController extends BaseController { + + private final IBusDeviceGroupService busDeviceGroupService; + private final AbstractPermissionContext abstractPermissionContext; + + public BusDeviceGroupController(IBusDeviceGroupService busDeviceGroupService, AbstractPermissionContext abstractPermissionContext) { + this.busDeviceGroupService = busDeviceGroupService; + this.abstractPermissionContext = abstractPermissionContext; + } + + @ApiOperation(value = "列表查询") + @GetMapping(value = "/list") + public ResponseDataDTO> list(BusDeviceGroupVO busDeviceGroupVO) { + QueryWrapper query = busDeviceGroupVO.genQuery(); + return ResponseDataDTO.success(busDeviceGroupService.list(query)); + } + + @ApiOperation(value = "分组树结构查询") + @BussinessLog(value = "分组树结构查询") + @GetMapping(value = "/tree") + public ResponseDataDTO> groupTree() { + List groupDTOList = busDeviceGroupService.groupTree(); + return ResponseDataDTO.success(groupDTOList); + } + + @BussinessLog(value = "设备分组分页查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "分页查询") + @GetMapping(value = "/listPage") + public ResponseDataDTO> listPage(BusDeviceGroupVO busDeviceGroupVO) { + Page page = PageFactory.defaultPage(); + QueryWrapper query = busDeviceGroupVO.genQuery(); + List list = busDeviceGroupService.selectBusDeviceGroupPage(page, query); + page.setRecords(list); + return ResponseDataDTO.success(super.packForBT(page)); + } + + @BussinessLog(value = "设备分组新增", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "新增接口") + @PostMapping(value = "/add") + public ResponseDataDTO add(@RequestBody BusDeviceGroup busDeviceGroup) { + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + busDeviceGroup.setCreateId(user.getId()); + busDeviceGroup.setCreateTime(new Date()); + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.save(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组修改", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @PostMapping(value = "/update") + public ResponseDataDTO update(@RequestBody BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.updateById(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组删除", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "删除接口") + @GetMapping(value = "/delete") + public ResponseDataDTO delete(String id) { + busDeviceGroupService.removeById(id); + return ResponseDataDTO.success(); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { + busDeviceGroupService.removeByIds(ids.getIds()); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组详情查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "详情查询") + @GetMapping(value = "/detail") + public ResponseDataDTO detail(String id) { + return ResponseDataDTO.success(busDeviceGroupService.getById(id)); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java new file mode 100644 index 0000000..9d3726f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.device.dao; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import java.util.List; +/** + *

+ * 设备分组管理信息 Mapper 接口 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface BusDeviceGroupMapper extends BaseMapper { +/** +* 设备分组管理信息 分页检索 +*/ +List selectBusDeviceGroupPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml new file mode 100644 index 0000000..a6dd84f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + id + , + create_time as createTime , + update_time as updateTime , + group_name as groupName , + create_id as createId , + dept_id as deptId + + + a + . + id + , + a.create_time + as createTime , + a.update_time + as updateTime , + a.group_name + as groupName , + a.create_id + as createId , + a.dept_id + as deptId + + + + + + and group_name like concat('%',#{request.groupName},'%') + + + and dept_id = #{request.deptId} + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java new file mode 100644 index 0000000..a821e92 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dictmap; + +import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap; + +public class DeviceGroupQueryDict extends AbstractDictMap { + + @Override + public void init() { + put("id", "主键"); + put("deptId", "所属组织"); + put("groupName", "分组名称"); + + put("deptName", "所属单位"); + } + + @Override + protected void initBeWrapped() { + + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java new file mode 100644 index 0000000..d8d1712 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.device.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + + +/** + * 设备分组管理信息对象 bus_device_group + * + * @author lwh + * @date 2025-06-11 + */ +@Data +@TableName("bus_device_group") +public class BusDeviceGroup extends Model { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键", dataType = "Long") + @TableField("id") + private Long id; + + @ApiModelProperty(value = "创建时间", dataType = "Date") + @TableField("create_time") + private Date createTime; + + @ApiModelProperty(value = "修改时间", dataType = "Date") + @TableField("update_time") + private Date updateTime; + + @ApiModelProperty(value = "分组名称", dataType = "String") + @TableField("group_name") + private String groupName; + + @ApiModelProperty(value = "创建人", dataType = "Long") + @TableField("create_id") + private Long createId; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; + @TableField(exist = false) + private String deptName; + + @Override + public String toString() { + return "BusDeviceGroup{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "groupName=" + groupName + + "createId=" + createId + + "deptId=" + deptId + + "}"; + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java new file mode 100644 index 0000000..d2cee5c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; + +import java.util.List; + + +/** + *

+ * 设备分组管理信息 服务类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface IBusDeviceGroupService extends IService { + /** + * 设备分组管理信息 分页检索 + */ + List selectBusDeviceGroupPage(Page page, QueryWrapper query); + + /** + * 树结构查询 + * + * @return + */ + List groupTree(); + + DeptDTO convertDeptDTO(BusDeviceGroup group); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java new file mode 100644 index 0000000..a6f08b7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java @@ -0,0 +1,139 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractAuthService; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.modular.data.constants.DataConstants; +import com.casic.missiles.modular.device.dao.BusDeviceGroupMapper; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; +import com.casic.missiles.modular.system.model.Dept; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.data.constants.DataConstants.NODE_TYPE_DEPT; + + +/** + *

+ * 设备分组管理信息 服务实现类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +@Service +public class BusDeviceGroupServiceImpl extends ServiceImpl implements IBusDeviceGroupService { + @Resource + private AbstractDeptService deptService; + + @Override + public List selectBusDeviceGroupPage(Page page, QueryWrapper query) { + List list = this.baseMapper.selectBusDeviceGroupPage(page, query); + list.forEach(this::wrapperInfo); + return list; + } + + @Override + public List groupTree() { + List deptList = deviceDept(); + + List deptDTOS = new ArrayList<>(); + //树节点根 + List rootIds = new ArrayList<>(); + Set normalIds = new HashSet<>(); + + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setId(dept.getId()); + deptDTO.setPid(dept.getPid()); + deptDTO.setFullName(dept.getFullName()); + deptDTO.setName(dept.getSimpleName()); + deptDTO.setType(NODE_TYPE_DEPT); + + normalIds.add(dept.getId()); + deptDTOS.add(deptDTO); + + + //查询该组织下分组信息 + LambdaQueryWrapper deviceQuery = new LambdaQueryWrapper<>(); + deviceQuery.eq(BusDeviceGroup::getDeptId, deptDTO.getId()); + + deviceQuery.orderByAsc(BusDeviceGroup::getGroupName); + List deviceInfos = this.list(deviceQuery); + List deptDTOList = new ArrayList<>(); + for (BusDeviceGroup group : deviceInfos) { + DeptDTO deptDto = this.convertDeptDTO(group); + deptDTOList.add(deptDto); + } + deptDTO.setChildrenNodes(deptDTOList); + } + + for (DeptDTO deptDTO : deptDTOS) { + if (!normalIds.contains(deptDTO.getPid())) { + rootIds.add(deptDTO.getPid()); + } + } + + //过滤根节点 + DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); + List newTree = new ArrayList<>(); + rootIds = rootIds.stream().distinct().collect(Collectors.toList()); + for (Long rootId : rootIds) { + abstractTreeBuildFactory.setRootId(rootId + ""); + newTree.addAll(abstractTreeBuildFactory.doTreeBuild(deptDTOS)); + } + return newTree; + } + + public DeptDTO convertDeptDTO(BusDeviceGroup group) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setType(DataConstants.NODE_TYPE_GROUP); + deptDTO.setId(group.getId()); + deptDTO.setPid(group.getDeptId()); + deptDTO.setName(group.getGroupName()); + deptDTO.setGroup(group); + return deptDTO; + } + + @Resource + private AbstractAuthService authService; + + private List deviceDept() { + //查询可见组织 + DataScope scope = authService.getLoginUserDataScope(); + AuthUser user = authService.getLoginUser(); + + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); + deptQuery.inSql(Dept::getId, "select dept_id from bus_device_info "); + if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums().getCode())) { + deptQuery.in(Dept::getId, scope.getDeptIds()); + } + deptQuery.orderByAsc(Dept::getNum); + + List deptList = deptService.list(deptQuery); + return deptList; + } + + @Override + public List list() { + List list = super.list(); + list.forEach(this::wrapperInfo); + return list; + } + + private void wrapperInfo(BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setDeptName(deptService.getDeptName(busDeviceGroup.getDeptId())); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java new file mode 100644 index 0000000..413d7ac --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.device.vo; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 设备分组管理信息对象VO + * + * @author lwh + * @date 2025-06-11 + */ +@Data +public class BusDeviceGroupVO { + private static final long serialVersionUID = 1L; + + + @ApiModelProperty(value = "分组名称", dataType = "String") + private String groupName; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + private Long deptId; + + public QueryWrapper genQuery() { + QueryWrapper query = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(groupName)) { + query.like("group_name", groupName); + } + if (deptId != null) { + query.eq("dept_id", deptId); + } + return query; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java new file mode 100644 index 0000000..477435e --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java @@ -0,0 +1,163 @@ +package com.casic.missiles.modular.device.dto.risk; + +import cn.hutool.core.convert.Convert; +import com.casic.missiles.modular.device.model.RiskPointInfo; +import lombok.Data; + +@Data +public class SyncRiskDTO { + /** + * 主键 + */ + private String id; + private String name; + /** + * 重大风险 + * 风险等级 + */ + private String hazardLevel; + /** + * 危险因素 + */ + private String riskFactors; + /** + * 所属单位 + */ + private String affiliatedUnit; + /** + * 所属部门 + */ + private String department; + + /** + * 定员 + */ + private String staffing; + + /** + * 定量 + */ + private String ration; + + /** + * 地理位置 + */ + private String geographicalPosition; + + /** + * 责任人 + */ + private String personLiable; + + /** + * 现场负责人 + */ + private String siteLeader; + + /** + * 主要设备、设施设计制造单位 + */ + private String zysbZzdw; + + /** + * 所在单位 + */ + private String szdw; + + /** + * 作业人数 + */ + private String numberOperators; + + /** + * 主要性能参数 + */ + private String mainPerformanceParameters; + + /** + * 工作环境参数 + */ + private String workingEnvironmentParameters; + + /** + * 安装单位 + */ + private String installationUnit; + + /** + * 投产日期 + */ + private String productionDate; + + /** + * 设备总数 + */ + private String totalEquipment; + + /** + * 备注 + */ + private String note; + + /** + * 创建用户 + */ + private String createUser; + private String createTime; + private String updateUser; + private String updateTime; + /** + * 是否删除0:否;1:是(接口已过滤掉1的数据) + */ + private Integer isDel; + + /** + * 行政区域 + */ + private String xzqy; + /** + * 街道 + */ + private String jdxx; + + /** + * 楼房 + */ + private String loufang; + + /** + * 楼层 + */ + private String louceng; + + /** + * 房间 + */ + private String roomName; + /** + * 所属单位编码 + */ + private String affiliatedUnitsCode; + + /** + * 危险性质 + */ + private String hazardousNature; + + public RiskPointInfo convertToRisk(RiskPointInfo pointInfo) { + //风险点缺少密级 + pointInfo.setSecretLevel("1"); + // hazardLevel 是否有字典值? + + if (department != null) { + pointInfo.setDeptId(Convert.toLong(department)); + } + pointInfo.setNature(hazardousNature); + pointInfo.setRiskName(name); + pointInfo.setAddress(geographicalPosition); + pointInfo.setTargetId(id); + //默认类型为1 + pointInfo.setRiskType(1); + return pointInfo; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java new file mode 100644 index 0000000..08e89a0 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.device.handler; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class BoxDefaultHttpHeaderHandler extends DefaultHttpHeaderHandler { + /** + * 代理服务IP + */ + private String xTargetHost; + + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Access-Token", token); + } + if (StrUtil.isNotEmpty(xTargetHost)){ + base.addHeader("X-TARGET-HOST", xTargetHost); + } + } + + public String getXTargetHost() { + return xTargetHost; + } + + public void setXTargetHost(String XTargetHost) { + this.xTargetHost = XTargetHost; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java new file mode 100644 index 0000000..903e567 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.http; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class RiskHttpHandler extends DefaultHttpHeaderHandler { + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Authorization", token); + } + + } +} + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java new file mode 100644 index 0000000..9f75f42 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java @@ -0,0 +1,35 @@ +package com.casic.missiles.modular.task; + +import com.casic.missiles.modular.device.service.IRiskPointInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +@Slf4j +@Component +public class RiskTask { + + @Value("${casic.risk.open:false}") + private Boolean open; + + @Resource + private IRiskPointInfoService riskPointInfoService; + + /** + * 设备信息同步0 + * 每30分钟采集一次 + */ + @Scheduled(cron = "${casic.risk.corn:0 */1 * * * *}") + public void device() { + //风险点数据同步 + if (open) { + log.info("risk sync start...."); + riskPointInfoService.loadRiskInfo(); + log.info("risk sync end...."); + } + } + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java new file mode 100644 index 0000000..e4ca4f1 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.util; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.modular.http.RiskHttpHandler; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import com.casic.missiles.modular.system.utils.HttpUtils; + +import java.util.HashMap; +import java.util.Map; + +public class RiskHttpUtil { + public static final String loginUrl = "/rest/platform/systemLogin"; + public static final String pointDataUrl = "/rest/platform/dangerPointData"; + + public static String login(String baseUrl, String secret) { + Map param = new HashMap<>(); + param.put("secret", secret); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + defaultHeaderHandler.setJson(true); + String res = HttpUtils.sendPost(baseUrl + loginUrl, param, "", defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + public static String pointData(String baseUrl, String token) { + Map param = new HashMap<>(); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + + String res = HttpUtils.sendGet(baseUrl + pointDataUrl, param, token, defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + /** + * 登录数据加密 + * @param appId 加密id + * @param publicKey 公钥 + * @return + * @throws Exception + */ + public static String encrypt(String appId,String publicKey) throws Exception { + long ts = System.currentTimeMillis(); + return RSAUtils.encrypt(appId+"_"+ts,publicKey); + } + + +} diff --git a/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java new file mode 100644 index 0000000..9ba1e2a --- /dev/null +++ b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java @@ -0,0 +1,62 @@ +package com.casic.missiles.test; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.TypeReference; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.risk.SyncRiskDTO; +import com.casic.missiles.modular.device.util.AesUtil; +import com.casic.missiles.modular.util.RiskHttpUtil; +import com.casic.missiles.modular.util.WvpUtil; +import com.casic.missiles.modular.wvp.dto.MvpResponseDTO; + +import java.io.FileInputStream; +import java.security.MessageDigest; +import java.util.Date; +import java.util.HashMap; +import java.util.List; + +public class RiskTest { + public static void main(String[] args) throws Exception { +// File file = new File("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// String task = ZipFileUtil.getZipHandleTask("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(task); +// String md5 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(md5); +// String md52 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241122.zip"); +// System.out.println(md52); + + testDeviceLogin(); + System.out.println( DateUtil.offsetMinute(new Date(),-5)); + } + public static void testDeviceLogin() throws Exception { + Long time = System.currentTimeMillis(); + String str = "FXDDT_" + time; + String pubKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCynMBxzoNBemZKuxjlZzp04Lx/b0j1xRUznBKjlQSATwc+1DaxBpKdT4WfqAuFlSQLA7qLdntXw2cvUEvRxfdjJp2KfZLkEYRmYx3LT51WdCmouQREtMrR6j3mri8jV8TjktGCmBFMKX7eGeQM8O249yVjby6502bzZXehQ707JQIDAQAB"; + String sec = RSAUtils.encrypt(str, pubKey); + System.out.println(sec); + String priKey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALKcwHHOg0F6Zkq7GOVnOnTgvH9vSPXFFTOcEqOVBIBPBz7UNrEGkp1PhZ+oC4WVJAsDuot2e1fDZy9QS9HF92MmnYp9kuQRhGZjHctPnVZ0Kai5BES0ytHqPeauLyNXxOOS0YKYEUwpft4Z5Azw7bj3JWNvLrnTZvNld6FDvTslAgMBAAECgYAqN/kZLYpC+O6i7XSmDO95XwHPUXu6dDpdt5+EQR4OQh/hTwIaeAZB3uEj6vHGQomBfQEkI/5lsU97lIxHanbd+Hro7JyIhsGD5LR5XnZHVKzFiZW62OIU6FI9dlQNN8miiblnmyDwiMA3okaHl0O7qQjZ+IvY2csgmJc7AXpPpQJBAOhrhcfWFcgffj2O6HYNlBLFfbboc/ZzrEADDXKnxRSHlo5o8W+6gylG/L2NGtbag5S68B9VYzdkSQ1++5C+Ws8CQQDEu7h311PLEiKgqzGHpjzadQETmt/jMadaKQmT0TZwNVi6X8lR17U5hF8dAqZzUzr9kUC0HRIZhg4Uv1v3W3fLAkB4YPhxgJjXhjhEefg87Nt8vX1Xdx5Yz6CvpuUYNX0GHRQFvqUOUXQNtQ7CvorgLV1pc0lbcUZqMi8EJnj1hyJRAkEAjHXWm8GiMt+M15fCsi3vTq2xChVOekBuUsHv85iwvGZqJg7ThtpyqlEnM2g7/STUfkvhnXcQACclEI0blTy6BwJAPmFyhU+d0ejVpbc53TdrL2HqYYUHi/tTy/dtUa7lbypzdwwJ2M1Tv5PE8sQxr9tgMbebfxVb/RFKdiCCtzC4ng=="; + String s = RSAUtils.decrypt(sec,priKey); + System.out.println(s); + + + String appId = "5d7d4d81a64f4b8f"; + String publicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB"; + String secret = RiskHttpUtil.encrypt(appId,publicKey); + System.out.println(secret); + String res = RiskHttpUtil.login("http://101.201.36.107:12388",secret); + System.out.println(res); + JSONObject jsonObject = JSON.parseObject(res); + String token = jsonObject.getString("data"); + String resPoint = RiskHttpUtil.pointData("http://101.201.36.107:12388",token); + System.out.println(resPoint); + + + ResponseDataDTO> riskPointRes = JSON.parseObject(resPoint, new TypeReference>>() { + }); + + } + +} diff --git a/casic-web/src/main/resources/doc/20250609.md b/casic-web/src/main/resources/doc/20250609.md new file mode 100644 index 0000000..0cb3464 --- /dev/null +++ b/casic-web/src/main/resources/doc/20250609.md @@ -0,0 +1,30 @@ +## 一、数据库更新 + +1. 设备分组数据库增加 + +``` +ALTER TABLE bus_device_info ADD COLUMN GROUP_ID bigint; + +create table bus_device_group +( + id bigint not null comment '主键', + create_time datetime comment '创建时间', + update_time datetime comment '修改时间', + group_name varchar(255) comment '分组名称', + create_id bigint comment '创建人', + dept_id bigint comment '所属组织' +); + +alter table bus_device_group comment '设备分组管理信息'; + +``` + +casic.tenant.excludes 配置项中增加 bus_device_group + + +casic.no-login-urls 中增加如下配置 +,/sync/risk/dept,/sync/risk/user/list,/sync/risk/device/list + + + + diff --git a/casic-web/src/main/resources/doc/20250624.md b/casic-web/src/main/resources/doc/20250624.md new file mode 100644 index 0000000..7af561d --- /dev/null +++ b/casic-web/src/main/resources/doc/20250624.md @@ -0,0 +1,34 @@ +## 一、数据库更新 + +1. 风险点表添加同步ID + +``` +ALTER TABLE risk_point_info ADD COLUMN TARGET_ID VARCHAR(255); + +``` + +2. 风险点相关配置项 + +casic.risk.open 默认false 不开启 开启需配置true +casic.risk.corn 定时时间 默认0 */5 * * * * 5分钟 +casic.risk.appId 默认 5d7d4d81a64f4b8f 如变更需更改 +casic.risk.publicKey 公钥 默认MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB +casic.risk.host 风险点地址, 默认http://101.201.36.107:12388 生产需更改 + +3. 增加字典值 + hazardLevelName 风险危险等级(706映射) + 1 低风险 + 1 一般风险 + 2 较大风险 + 3 重大风险 + 以上字典值以706风险等级名称对应本系统风险点1 2 3 等级,如果706风险等级名称变更 修改对应字典值名称即可 + +4. 盒子代理服务模块添加 + 增加配置项 + casic.video.box.proxy 192.168.83.37:30064 此处需变更为部署代理nginx的ip及端口,具体配置参见国标级联及代理服务配置说明 + + + + + + diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" new file mode 100644 index 0000000..30cdcbd --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" new file mode 100644 index 0000000..6a0069c --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" new file mode 100644 index 0000000..f775124 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" new file mode 100644 index 0000000..9f65ff1 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" new file mode 100644 index 0000000..613ec69 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" new file mode 100644 index 0000000..1614b04 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" new file mode 100644 index 0000000..3f5083a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" new file mode 100644 index 0000000..134a604 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" new file mode 100644 index 0000000..7edeaa0 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" new file mode 100644 index 0000000..ccd0993 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" new file mode 100644 index 0000000..0cbf80d --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" Binary files differ diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java new file mode 100644 index 0000000..77c14a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.device.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dictmap.DeviceGroupQueryDict; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.vo.BusDeviceGroupVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; + +/** + * 设备分组管理信息Controller + * + * @author lwh + * @date 2025-06-11 + */ +@Api(tags = "设备分组管理信息") +@RestController +@RequestMapping("/device/group") +public class BusDeviceGroupController extends BaseController { + + private final IBusDeviceGroupService busDeviceGroupService; + private final AbstractPermissionContext abstractPermissionContext; + + public BusDeviceGroupController(IBusDeviceGroupService busDeviceGroupService, AbstractPermissionContext abstractPermissionContext) { + this.busDeviceGroupService = busDeviceGroupService; + this.abstractPermissionContext = abstractPermissionContext; + } + + @ApiOperation(value = "列表查询") + @GetMapping(value = "/list") + public ResponseDataDTO> list(BusDeviceGroupVO busDeviceGroupVO) { + QueryWrapper query = busDeviceGroupVO.genQuery(); + return ResponseDataDTO.success(busDeviceGroupService.list(query)); + } + + @ApiOperation(value = "分组树结构查询") + @BussinessLog(value = "分组树结构查询") + @GetMapping(value = "/tree") + public ResponseDataDTO> groupTree() { + List groupDTOList = busDeviceGroupService.groupTree(); + return ResponseDataDTO.success(groupDTOList); + } + + @BussinessLog(value = "设备分组分页查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "分页查询") + @GetMapping(value = "/listPage") + public ResponseDataDTO> listPage(BusDeviceGroupVO busDeviceGroupVO) { + Page page = PageFactory.defaultPage(); + QueryWrapper query = busDeviceGroupVO.genQuery(); + List list = busDeviceGroupService.selectBusDeviceGroupPage(page, query); + page.setRecords(list); + return ResponseDataDTO.success(super.packForBT(page)); + } + + @BussinessLog(value = "设备分组新增", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "新增接口") + @PostMapping(value = "/add") + public ResponseDataDTO add(@RequestBody BusDeviceGroup busDeviceGroup) { + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + busDeviceGroup.setCreateId(user.getId()); + busDeviceGroup.setCreateTime(new Date()); + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.save(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组修改", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @PostMapping(value = "/update") + public ResponseDataDTO update(@RequestBody BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.updateById(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组删除", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "删除接口") + @GetMapping(value = "/delete") + public ResponseDataDTO delete(String id) { + busDeviceGroupService.removeById(id); + return ResponseDataDTO.success(); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { + busDeviceGroupService.removeByIds(ids.getIds()); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组详情查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "详情查询") + @GetMapping(value = "/detail") + public ResponseDataDTO detail(String id) { + return ResponseDataDTO.success(busDeviceGroupService.getById(id)); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java new file mode 100644 index 0000000..9d3726f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.device.dao; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import java.util.List; +/** + *

+ * 设备分组管理信息 Mapper 接口 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface BusDeviceGroupMapper extends BaseMapper { +/** +* 设备分组管理信息 分页检索 +*/ +List selectBusDeviceGroupPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml new file mode 100644 index 0000000..a6dd84f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + id + , + create_time as createTime , + update_time as updateTime , + group_name as groupName , + create_id as createId , + dept_id as deptId + + + a + . + id + , + a.create_time + as createTime , + a.update_time + as updateTime , + a.group_name + as groupName , + a.create_id + as createId , + a.dept_id + as deptId + + + + + + and group_name like concat('%',#{request.groupName},'%') + + + and dept_id = #{request.deptId} + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java new file mode 100644 index 0000000..a821e92 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dictmap; + +import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap; + +public class DeviceGroupQueryDict extends AbstractDictMap { + + @Override + public void init() { + put("id", "主键"); + put("deptId", "所属组织"); + put("groupName", "分组名称"); + + put("deptName", "所属单位"); + } + + @Override + protected void initBeWrapped() { + + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java new file mode 100644 index 0000000..d8d1712 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.device.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + + +/** + * 设备分组管理信息对象 bus_device_group + * + * @author lwh + * @date 2025-06-11 + */ +@Data +@TableName("bus_device_group") +public class BusDeviceGroup extends Model { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键", dataType = "Long") + @TableField("id") + private Long id; + + @ApiModelProperty(value = "创建时间", dataType = "Date") + @TableField("create_time") + private Date createTime; + + @ApiModelProperty(value = "修改时间", dataType = "Date") + @TableField("update_time") + private Date updateTime; + + @ApiModelProperty(value = "分组名称", dataType = "String") + @TableField("group_name") + private String groupName; + + @ApiModelProperty(value = "创建人", dataType = "Long") + @TableField("create_id") + private Long createId; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; + @TableField(exist = false) + private String deptName; + + @Override + public String toString() { + return "BusDeviceGroup{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "groupName=" + groupName + + "createId=" + createId + + "deptId=" + deptId + + "}"; + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java new file mode 100644 index 0000000..d2cee5c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; + +import java.util.List; + + +/** + *

+ * 设备分组管理信息 服务类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface IBusDeviceGroupService extends IService { + /** + * 设备分组管理信息 分页检索 + */ + List selectBusDeviceGroupPage(Page page, QueryWrapper query); + + /** + * 树结构查询 + * + * @return + */ + List groupTree(); + + DeptDTO convertDeptDTO(BusDeviceGroup group); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java new file mode 100644 index 0000000..a6f08b7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java @@ -0,0 +1,139 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractAuthService; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.modular.data.constants.DataConstants; +import com.casic.missiles.modular.device.dao.BusDeviceGroupMapper; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; +import com.casic.missiles.modular.system.model.Dept; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.data.constants.DataConstants.NODE_TYPE_DEPT; + + +/** + *

+ * 设备分组管理信息 服务实现类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +@Service +public class BusDeviceGroupServiceImpl extends ServiceImpl implements IBusDeviceGroupService { + @Resource + private AbstractDeptService deptService; + + @Override + public List selectBusDeviceGroupPage(Page page, QueryWrapper query) { + List list = this.baseMapper.selectBusDeviceGroupPage(page, query); + list.forEach(this::wrapperInfo); + return list; + } + + @Override + public List groupTree() { + List deptList = deviceDept(); + + List deptDTOS = new ArrayList<>(); + //树节点根 + List rootIds = new ArrayList<>(); + Set normalIds = new HashSet<>(); + + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setId(dept.getId()); + deptDTO.setPid(dept.getPid()); + deptDTO.setFullName(dept.getFullName()); + deptDTO.setName(dept.getSimpleName()); + deptDTO.setType(NODE_TYPE_DEPT); + + normalIds.add(dept.getId()); + deptDTOS.add(deptDTO); + + + //查询该组织下分组信息 + LambdaQueryWrapper deviceQuery = new LambdaQueryWrapper<>(); + deviceQuery.eq(BusDeviceGroup::getDeptId, deptDTO.getId()); + + deviceQuery.orderByAsc(BusDeviceGroup::getGroupName); + List deviceInfos = this.list(deviceQuery); + List deptDTOList = new ArrayList<>(); + for (BusDeviceGroup group : deviceInfos) { + DeptDTO deptDto = this.convertDeptDTO(group); + deptDTOList.add(deptDto); + } + deptDTO.setChildrenNodes(deptDTOList); + } + + for (DeptDTO deptDTO : deptDTOS) { + if (!normalIds.contains(deptDTO.getPid())) { + rootIds.add(deptDTO.getPid()); + } + } + + //过滤根节点 + DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); + List newTree = new ArrayList<>(); + rootIds = rootIds.stream().distinct().collect(Collectors.toList()); + for (Long rootId : rootIds) { + abstractTreeBuildFactory.setRootId(rootId + ""); + newTree.addAll(abstractTreeBuildFactory.doTreeBuild(deptDTOS)); + } + return newTree; + } + + public DeptDTO convertDeptDTO(BusDeviceGroup group) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setType(DataConstants.NODE_TYPE_GROUP); + deptDTO.setId(group.getId()); + deptDTO.setPid(group.getDeptId()); + deptDTO.setName(group.getGroupName()); + deptDTO.setGroup(group); + return deptDTO; + } + + @Resource + private AbstractAuthService authService; + + private List deviceDept() { + //查询可见组织 + DataScope scope = authService.getLoginUserDataScope(); + AuthUser user = authService.getLoginUser(); + + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); + deptQuery.inSql(Dept::getId, "select dept_id from bus_device_info "); + if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums().getCode())) { + deptQuery.in(Dept::getId, scope.getDeptIds()); + } + deptQuery.orderByAsc(Dept::getNum); + + List deptList = deptService.list(deptQuery); + return deptList; + } + + @Override + public List list() { + List list = super.list(); + list.forEach(this::wrapperInfo); + return list; + } + + private void wrapperInfo(BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setDeptName(deptService.getDeptName(busDeviceGroup.getDeptId())); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java new file mode 100644 index 0000000..413d7ac --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.device.vo; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 设备分组管理信息对象VO + * + * @author lwh + * @date 2025-06-11 + */ +@Data +public class BusDeviceGroupVO { + private static final long serialVersionUID = 1L; + + + @ApiModelProperty(value = "分组名称", dataType = "String") + private String groupName; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + private Long deptId; + + public QueryWrapper genQuery() { + QueryWrapper query = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(groupName)) { + query.like("group_name", groupName); + } + if (deptId != null) { + query.eq("dept_id", deptId); + } + return query; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java new file mode 100644 index 0000000..477435e --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java @@ -0,0 +1,163 @@ +package com.casic.missiles.modular.device.dto.risk; + +import cn.hutool.core.convert.Convert; +import com.casic.missiles.modular.device.model.RiskPointInfo; +import lombok.Data; + +@Data +public class SyncRiskDTO { + /** + * 主键 + */ + private String id; + private String name; + /** + * 重大风险 + * 风险等级 + */ + private String hazardLevel; + /** + * 危险因素 + */ + private String riskFactors; + /** + * 所属单位 + */ + private String affiliatedUnit; + /** + * 所属部门 + */ + private String department; + + /** + * 定员 + */ + private String staffing; + + /** + * 定量 + */ + private String ration; + + /** + * 地理位置 + */ + private String geographicalPosition; + + /** + * 责任人 + */ + private String personLiable; + + /** + * 现场负责人 + */ + private String siteLeader; + + /** + * 主要设备、设施设计制造单位 + */ + private String zysbZzdw; + + /** + * 所在单位 + */ + private String szdw; + + /** + * 作业人数 + */ + private String numberOperators; + + /** + * 主要性能参数 + */ + private String mainPerformanceParameters; + + /** + * 工作环境参数 + */ + private String workingEnvironmentParameters; + + /** + * 安装单位 + */ + private String installationUnit; + + /** + * 投产日期 + */ + private String productionDate; + + /** + * 设备总数 + */ + private String totalEquipment; + + /** + * 备注 + */ + private String note; + + /** + * 创建用户 + */ + private String createUser; + private String createTime; + private String updateUser; + private String updateTime; + /** + * 是否删除0:否;1:是(接口已过滤掉1的数据) + */ + private Integer isDel; + + /** + * 行政区域 + */ + private String xzqy; + /** + * 街道 + */ + private String jdxx; + + /** + * 楼房 + */ + private String loufang; + + /** + * 楼层 + */ + private String louceng; + + /** + * 房间 + */ + private String roomName; + /** + * 所属单位编码 + */ + private String affiliatedUnitsCode; + + /** + * 危险性质 + */ + private String hazardousNature; + + public RiskPointInfo convertToRisk(RiskPointInfo pointInfo) { + //风险点缺少密级 + pointInfo.setSecretLevel("1"); + // hazardLevel 是否有字典值? + + if (department != null) { + pointInfo.setDeptId(Convert.toLong(department)); + } + pointInfo.setNature(hazardousNature); + pointInfo.setRiskName(name); + pointInfo.setAddress(geographicalPosition); + pointInfo.setTargetId(id); + //默认类型为1 + pointInfo.setRiskType(1); + return pointInfo; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java new file mode 100644 index 0000000..08e89a0 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.device.handler; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class BoxDefaultHttpHeaderHandler extends DefaultHttpHeaderHandler { + /** + * 代理服务IP + */ + private String xTargetHost; + + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Access-Token", token); + } + if (StrUtil.isNotEmpty(xTargetHost)){ + base.addHeader("X-TARGET-HOST", xTargetHost); + } + } + + public String getXTargetHost() { + return xTargetHost; + } + + public void setXTargetHost(String XTargetHost) { + this.xTargetHost = XTargetHost; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java new file mode 100644 index 0000000..903e567 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.http; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class RiskHttpHandler extends DefaultHttpHeaderHandler { + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Authorization", token); + } + + } +} + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java new file mode 100644 index 0000000..9f75f42 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java @@ -0,0 +1,35 @@ +package com.casic.missiles.modular.task; + +import com.casic.missiles.modular.device.service.IRiskPointInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +@Slf4j +@Component +public class RiskTask { + + @Value("${casic.risk.open:false}") + private Boolean open; + + @Resource + private IRiskPointInfoService riskPointInfoService; + + /** + * 设备信息同步0 + * 每30分钟采集一次 + */ + @Scheduled(cron = "${casic.risk.corn:0 */1 * * * *}") + public void device() { + //风险点数据同步 + if (open) { + log.info("risk sync start...."); + riskPointInfoService.loadRiskInfo(); + log.info("risk sync end...."); + } + } + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java new file mode 100644 index 0000000..e4ca4f1 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.util; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.modular.http.RiskHttpHandler; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import com.casic.missiles.modular.system.utils.HttpUtils; + +import java.util.HashMap; +import java.util.Map; + +public class RiskHttpUtil { + public static final String loginUrl = "/rest/platform/systemLogin"; + public static final String pointDataUrl = "/rest/platform/dangerPointData"; + + public static String login(String baseUrl, String secret) { + Map param = new HashMap<>(); + param.put("secret", secret); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + defaultHeaderHandler.setJson(true); + String res = HttpUtils.sendPost(baseUrl + loginUrl, param, "", defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + public static String pointData(String baseUrl, String token) { + Map param = new HashMap<>(); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + + String res = HttpUtils.sendGet(baseUrl + pointDataUrl, param, token, defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + /** + * 登录数据加密 + * @param appId 加密id + * @param publicKey 公钥 + * @return + * @throws Exception + */ + public static String encrypt(String appId,String publicKey) throws Exception { + long ts = System.currentTimeMillis(); + return RSAUtils.encrypt(appId+"_"+ts,publicKey); + } + + +} diff --git a/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java new file mode 100644 index 0000000..9ba1e2a --- /dev/null +++ b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java @@ -0,0 +1,62 @@ +package com.casic.missiles.test; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.TypeReference; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.risk.SyncRiskDTO; +import com.casic.missiles.modular.device.util.AesUtil; +import com.casic.missiles.modular.util.RiskHttpUtil; +import com.casic.missiles.modular.util.WvpUtil; +import com.casic.missiles.modular.wvp.dto.MvpResponseDTO; + +import java.io.FileInputStream; +import java.security.MessageDigest; +import java.util.Date; +import java.util.HashMap; +import java.util.List; + +public class RiskTest { + public static void main(String[] args) throws Exception { +// File file = new File("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// String task = ZipFileUtil.getZipHandleTask("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(task); +// String md5 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(md5); +// String md52 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241122.zip"); +// System.out.println(md52); + + testDeviceLogin(); + System.out.println( DateUtil.offsetMinute(new Date(),-5)); + } + public static void testDeviceLogin() throws Exception { + Long time = System.currentTimeMillis(); + String str = "FXDDT_" + time; + String pubKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCynMBxzoNBemZKuxjlZzp04Lx/b0j1xRUznBKjlQSATwc+1DaxBpKdT4WfqAuFlSQLA7qLdntXw2cvUEvRxfdjJp2KfZLkEYRmYx3LT51WdCmouQREtMrR6j3mri8jV8TjktGCmBFMKX7eGeQM8O249yVjby6502bzZXehQ707JQIDAQAB"; + String sec = RSAUtils.encrypt(str, pubKey); + System.out.println(sec); + String priKey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALKcwHHOg0F6Zkq7GOVnOnTgvH9vSPXFFTOcEqOVBIBPBz7UNrEGkp1PhZ+oC4WVJAsDuot2e1fDZy9QS9HF92MmnYp9kuQRhGZjHctPnVZ0Kai5BES0ytHqPeauLyNXxOOS0YKYEUwpft4Z5Azw7bj3JWNvLrnTZvNld6FDvTslAgMBAAECgYAqN/kZLYpC+O6i7XSmDO95XwHPUXu6dDpdt5+EQR4OQh/hTwIaeAZB3uEj6vHGQomBfQEkI/5lsU97lIxHanbd+Hro7JyIhsGD5LR5XnZHVKzFiZW62OIU6FI9dlQNN8miiblnmyDwiMA3okaHl0O7qQjZ+IvY2csgmJc7AXpPpQJBAOhrhcfWFcgffj2O6HYNlBLFfbboc/ZzrEADDXKnxRSHlo5o8W+6gylG/L2NGtbag5S68B9VYzdkSQ1++5C+Ws8CQQDEu7h311PLEiKgqzGHpjzadQETmt/jMadaKQmT0TZwNVi6X8lR17U5hF8dAqZzUzr9kUC0HRIZhg4Uv1v3W3fLAkB4YPhxgJjXhjhEefg87Nt8vX1Xdx5Yz6CvpuUYNX0GHRQFvqUOUXQNtQ7CvorgLV1pc0lbcUZqMi8EJnj1hyJRAkEAjHXWm8GiMt+M15fCsi3vTq2xChVOekBuUsHv85iwvGZqJg7ThtpyqlEnM2g7/STUfkvhnXcQACclEI0blTy6BwJAPmFyhU+d0ejVpbc53TdrL2HqYYUHi/tTy/dtUa7lbypzdwwJ2M1Tv5PE8sQxr9tgMbebfxVb/RFKdiCCtzC4ng=="; + String s = RSAUtils.decrypt(sec,priKey); + System.out.println(s); + + + String appId = "5d7d4d81a64f4b8f"; + String publicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB"; + String secret = RiskHttpUtil.encrypt(appId,publicKey); + System.out.println(secret); + String res = RiskHttpUtil.login("http://101.201.36.107:12388",secret); + System.out.println(res); + JSONObject jsonObject = JSON.parseObject(res); + String token = jsonObject.getString("data"); + String resPoint = RiskHttpUtil.pointData("http://101.201.36.107:12388",token); + System.out.println(resPoint); + + + ResponseDataDTO> riskPointRes = JSON.parseObject(resPoint, new TypeReference>>() { + }); + + } + +} diff --git a/casic-web/src/main/resources/doc/20250609.md b/casic-web/src/main/resources/doc/20250609.md new file mode 100644 index 0000000..0cb3464 --- /dev/null +++ b/casic-web/src/main/resources/doc/20250609.md @@ -0,0 +1,30 @@ +## 一、数据库更新 + +1. 设备分组数据库增加 + +``` +ALTER TABLE bus_device_info ADD COLUMN GROUP_ID bigint; + +create table bus_device_group +( + id bigint not null comment '主键', + create_time datetime comment '创建时间', + update_time datetime comment '修改时间', + group_name varchar(255) comment '分组名称', + create_id bigint comment '创建人', + dept_id bigint comment '所属组织' +); + +alter table bus_device_group comment '设备分组管理信息'; + +``` + +casic.tenant.excludes 配置项中增加 bus_device_group + + +casic.no-login-urls 中增加如下配置 +,/sync/risk/dept,/sync/risk/user/list,/sync/risk/device/list + + + + diff --git a/casic-web/src/main/resources/doc/20250624.md b/casic-web/src/main/resources/doc/20250624.md new file mode 100644 index 0000000..7af561d --- /dev/null +++ b/casic-web/src/main/resources/doc/20250624.md @@ -0,0 +1,34 @@ +## 一、数据库更新 + +1. 风险点表添加同步ID + +``` +ALTER TABLE risk_point_info ADD COLUMN TARGET_ID VARCHAR(255); + +``` + +2. 风险点相关配置项 + +casic.risk.open 默认false 不开启 开启需配置true +casic.risk.corn 定时时间 默认0 */5 * * * * 5分钟 +casic.risk.appId 默认 5d7d4d81a64f4b8f 如变更需更改 +casic.risk.publicKey 公钥 默认MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB +casic.risk.host 风险点地址, 默认http://101.201.36.107:12388 生产需更改 + +3. 增加字典值 + hazardLevelName 风险危险等级(706映射) + 1 低风险 + 1 一般风险 + 2 较大风险 + 3 重大风险 + 以上字典值以706风险等级名称对应本系统风险点1 2 3 等级,如果706风险等级名称变更 修改对应字典值名称即可 + +4. 盒子代理服务模块添加 + 增加配置项 + casic.video.box.proxy 192.168.83.37:30064 此处需变更为部署代理nginx的ip及端口,具体配置参见国标级联及代理服务配置说明 + + + + + + diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" new file mode 100644 index 0000000..30cdcbd --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" new file mode 100644 index 0000000..6a0069c --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" new file mode 100644 index 0000000..f775124 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" new file mode 100644 index 0000000..9f65ff1 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" new file mode 100644 index 0000000..613ec69 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" new file mode 100644 index 0000000..1614b04 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" new file mode 100644 index 0000000..3f5083a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" new file mode 100644 index 0000000..134a604 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" new file mode 100644 index 0000000..7edeaa0 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" new file mode 100644 index 0000000..ccd0993 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" new file mode 100644 index 0000000..0cbf80d --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" new file mode 100644 index 0000000..613ec69 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" Binary files differ diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java new file mode 100644 index 0000000..77c14a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.device.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dictmap.DeviceGroupQueryDict; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.vo.BusDeviceGroupVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; + +/** + * 设备分组管理信息Controller + * + * @author lwh + * @date 2025-06-11 + */ +@Api(tags = "设备分组管理信息") +@RestController +@RequestMapping("/device/group") +public class BusDeviceGroupController extends BaseController { + + private final IBusDeviceGroupService busDeviceGroupService; + private final AbstractPermissionContext abstractPermissionContext; + + public BusDeviceGroupController(IBusDeviceGroupService busDeviceGroupService, AbstractPermissionContext abstractPermissionContext) { + this.busDeviceGroupService = busDeviceGroupService; + this.abstractPermissionContext = abstractPermissionContext; + } + + @ApiOperation(value = "列表查询") + @GetMapping(value = "/list") + public ResponseDataDTO> list(BusDeviceGroupVO busDeviceGroupVO) { + QueryWrapper query = busDeviceGroupVO.genQuery(); + return ResponseDataDTO.success(busDeviceGroupService.list(query)); + } + + @ApiOperation(value = "分组树结构查询") + @BussinessLog(value = "分组树结构查询") + @GetMapping(value = "/tree") + public ResponseDataDTO> groupTree() { + List groupDTOList = busDeviceGroupService.groupTree(); + return ResponseDataDTO.success(groupDTOList); + } + + @BussinessLog(value = "设备分组分页查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "分页查询") + @GetMapping(value = "/listPage") + public ResponseDataDTO> listPage(BusDeviceGroupVO busDeviceGroupVO) { + Page page = PageFactory.defaultPage(); + QueryWrapper query = busDeviceGroupVO.genQuery(); + List list = busDeviceGroupService.selectBusDeviceGroupPage(page, query); + page.setRecords(list); + return ResponseDataDTO.success(super.packForBT(page)); + } + + @BussinessLog(value = "设备分组新增", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "新增接口") + @PostMapping(value = "/add") + public ResponseDataDTO add(@RequestBody BusDeviceGroup busDeviceGroup) { + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + busDeviceGroup.setCreateId(user.getId()); + busDeviceGroup.setCreateTime(new Date()); + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.save(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组修改", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @PostMapping(value = "/update") + public ResponseDataDTO update(@RequestBody BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.updateById(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组删除", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "删除接口") + @GetMapping(value = "/delete") + public ResponseDataDTO delete(String id) { + busDeviceGroupService.removeById(id); + return ResponseDataDTO.success(); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { + busDeviceGroupService.removeByIds(ids.getIds()); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组详情查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "详情查询") + @GetMapping(value = "/detail") + public ResponseDataDTO detail(String id) { + return ResponseDataDTO.success(busDeviceGroupService.getById(id)); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java new file mode 100644 index 0000000..9d3726f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.device.dao; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import java.util.List; +/** + *

+ * 设备分组管理信息 Mapper 接口 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface BusDeviceGroupMapper extends BaseMapper { +/** +* 设备分组管理信息 分页检索 +*/ +List selectBusDeviceGroupPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml new file mode 100644 index 0000000..a6dd84f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + id + , + create_time as createTime , + update_time as updateTime , + group_name as groupName , + create_id as createId , + dept_id as deptId + + + a + . + id + , + a.create_time + as createTime , + a.update_time + as updateTime , + a.group_name + as groupName , + a.create_id + as createId , + a.dept_id + as deptId + + + + + + and group_name like concat('%',#{request.groupName},'%') + + + and dept_id = #{request.deptId} + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java new file mode 100644 index 0000000..a821e92 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dictmap; + +import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap; + +public class DeviceGroupQueryDict extends AbstractDictMap { + + @Override + public void init() { + put("id", "主键"); + put("deptId", "所属组织"); + put("groupName", "分组名称"); + + put("deptName", "所属单位"); + } + + @Override + protected void initBeWrapped() { + + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java new file mode 100644 index 0000000..d8d1712 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.device.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + + +/** + * 设备分组管理信息对象 bus_device_group + * + * @author lwh + * @date 2025-06-11 + */ +@Data +@TableName("bus_device_group") +public class BusDeviceGroup extends Model { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键", dataType = "Long") + @TableField("id") + private Long id; + + @ApiModelProperty(value = "创建时间", dataType = "Date") + @TableField("create_time") + private Date createTime; + + @ApiModelProperty(value = "修改时间", dataType = "Date") + @TableField("update_time") + private Date updateTime; + + @ApiModelProperty(value = "分组名称", dataType = "String") + @TableField("group_name") + private String groupName; + + @ApiModelProperty(value = "创建人", dataType = "Long") + @TableField("create_id") + private Long createId; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; + @TableField(exist = false) + private String deptName; + + @Override + public String toString() { + return "BusDeviceGroup{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "groupName=" + groupName + + "createId=" + createId + + "deptId=" + deptId + + "}"; + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java new file mode 100644 index 0000000..d2cee5c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; + +import java.util.List; + + +/** + *

+ * 设备分组管理信息 服务类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface IBusDeviceGroupService extends IService { + /** + * 设备分组管理信息 分页检索 + */ + List selectBusDeviceGroupPage(Page page, QueryWrapper query); + + /** + * 树结构查询 + * + * @return + */ + List groupTree(); + + DeptDTO convertDeptDTO(BusDeviceGroup group); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java new file mode 100644 index 0000000..a6f08b7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java @@ -0,0 +1,139 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractAuthService; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.modular.data.constants.DataConstants; +import com.casic.missiles.modular.device.dao.BusDeviceGroupMapper; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; +import com.casic.missiles.modular.system.model.Dept; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.data.constants.DataConstants.NODE_TYPE_DEPT; + + +/** + *

+ * 设备分组管理信息 服务实现类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +@Service +public class BusDeviceGroupServiceImpl extends ServiceImpl implements IBusDeviceGroupService { + @Resource + private AbstractDeptService deptService; + + @Override + public List selectBusDeviceGroupPage(Page page, QueryWrapper query) { + List list = this.baseMapper.selectBusDeviceGroupPage(page, query); + list.forEach(this::wrapperInfo); + return list; + } + + @Override + public List groupTree() { + List deptList = deviceDept(); + + List deptDTOS = new ArrayList<>(); + //树节点根 + List rootIds = new ArrayList<>(); + Set normalIds = new HashSet<>(); + + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setId(dept.getId()); + deptDTO.setPid(dept.getPid()); + deptDTO.setFullName(dept.getFullName()); + deptDTO.setName(dept.getSimpleName()); + deptDTO.setType(NODE_TYPE_DEPT); + + normalIds.add(dept.getId()); + deptDTOS.add(deptDTO); + + + //查询该组织下分组信息 + LambdaQueryWrapper deviceQuery = new LambdaQueryWrapper<>(); + deviceQuery.eq(BusDeviceGroup::getDeptId, deptDTO.getId()); + + deviceQuery.orderByAsc(BusDeviceGroup::getGroupName); + List deviceInfos = this.list(deviceQuery); + List deptDTOList = new ArrayList<>(); + for (BusDeviceGroup group : deviceInfos) { + DeptDTO deptDto = this.convertDeptDTO(group); + deptDTOList.add(deptDto); + } + deptDTO.setChildrenNodes(deptDTOList); + } + + for (DeptDTO deptDTO : deptDTOS) { + if (!normalIds.contains(deptDTO.getPid())) { + rootIds.add(deptDTO.getPid()); + } + } + + //过滤根节点 + DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); + List newTree = new ArrayList<>(); + rootIds = rootIds.stream().distinct().collect(Collectors.toList()); + for (Long rootId : rootIds) { + abstractTreeBuildFactory.setRootId(rootId + ""); + newTree.addAll(abstractTreeBuildFactory.doTreeBuild(deptDTOS)); + } + return newTree; + } + + public DeptDTO convertDeptDTO(BusDeviceGroup group) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setType(DataConstants.NODE_TYPE_GROUP); + deptDTO.setId(group.getId()); + deptDTO.setPid(group.getDeptId()); + deptDTO.setName(group.getGroupName()); + deptDTO.setGroup(group); + return deptDTO; + } + + @Resource + private AbstractAuthService authService; + + private List deviceDept() { + //查询可见组织 + DataScope scope = authService.getLoginUserDataScope(); + AuthUser user = authService.getLoginUser(); + + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); + deptQuery.inSql(Dept::getId, "select dept_id from bus_device_info "); + if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums().getCode())) { + deptQuery.in(Dept::getId, scope.getDeptIds()); + } + deptQuery.orderByAsc(Dept::getNum); + + List deptList = deptService.list(deptQuery); + return deptList; + } + + @Override + public List list() { + List list = super.list(); + list.forEach(this::wrapperInfo); + return list; + } + + private void wrapperInfo(BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setDeptName(deptService.getDeptName(busDeviceGroup.getDeptId())); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java new file mode 100644 index 0000000..413d7ac --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.device.vo; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 设备分组管理信息对象VO + * + * @author lwh + * @date 2025-06-11 + */ +@Data +public class BusDeviceGroupVO { + private static final long serialVersionUID = 1L; + + + @ApiModelProperty(value = "分组名称", dataType = "String") + private String groupName; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + private Long deptId; + + public QueryWrapper genQuery() { + QueryWrapper query = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(groupName)) { + query.like("group_name", groupName); + } + if (deptId != null) { + query.eq("dept_id", deptId); + } + return query; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java new file mode 100644 index 0000000..477435e --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java @@ -0,0 +1,163 @@ +package com.casic.missiles.modular.device.dto.risk; + +import cn.hutool.core.convert.Convert; +import com.casic.missiles.modular.device.model.RiskPointInfo; +import lombok.Data; + +@Data +public class SyncRiskDTO { + /** + * 主键 + */ + private String id; + private String name; + /** + * 重大风险 + * 风险等级 + */ + private String hazardLevel; + /** + * 危险因素 + */ + private String riskFactors; + /** + * 所属单位 + */ + private String affiliatedUnit; + /** + * 所属部门 + */ + private String department; + + /** + * 定员 + */ + private String staffing; + + /** + * 定量 + */ + private String ration; + + /** + * 地理位置 + */ + private String geographicalPosition; + + /** + * 责任人 + */ + private String personLiable; + + /** + * 现场负责人 + */ + private String siteLeader; + + /** + * 主要设备、设施设计制造单位 + */ + private String zysbZzdw; + + /** + * 所在单位 + */ + private String szdw; + + /** + * 作业人数 + */ + private String numberOperators; + + /** + * 主要性能参数 + */ + private String mainPerformanceParameters; + + /** + * 工作环境参数 + */ + private String workingEnvironmentParameters; + + /** + * 安装单位 + */ + private String installationUnit; + + /** + * 投产日期 + */ + private String productionDate; + + /** + * 设备总数 + */ + private String totalEquipment; + + /** + * 备注 + */ + private String note; + + /** + * 创建用户 + */ + private String createUser; + private String createTime; + private String updateUser; + private String updateTime; + /** + * 是否删除0:否;1:是(接口已过滤掉1的数据) + */ + private Integer isDel; + + /** + * 行政区域 + */ + private String xzqy; + /** + * 街道 + */ + private String jdxx; + + /** + * 楼房 + */ + private String loufang; + + /** + * 楼层 + */ + private String louceng; + + /** + * 房间 + */ + private String roomName; + /** + * 所属单位编码 + */ + private String affiliatedUnitsCode; + + /** + * 危险性质 + */ + private String hazardousNature; + + public RiskPointInfo convertToRisk(RiskPointInfo pointInfo) { + //风险点缺少密级 + pointInfo.setSecretLevel("1"); + // hazardLevel 是否有字典值? + + if (department != null) { + pointInfo.setDeptId(Convert.toLong(department)); + } + pointInfo.setNature(hazardousNature); + pointInfo.setRiskName(name); + pointInfo.setAddress(geographicalPosition); + pointInfo.setTargetId(id); + //默认类型为1 + pointInfo.setRiskType(1); + return pointInfo; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java new file mode 100644 index 0000000..08e89a0 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.device.handler; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class BoxDefaultHttpHeaderHandler extends DefaultHttpHeaderHandler { + /** + * 代理服务IP + */ + private String xTargetHost; + + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Access-Token", token); + } + if (StrUtil.isNotEmpty(xTargetHost)){ + base.addHeader("X-TARGET-HOST", xTargetHost); + } + } + + public String getXTargetHost() { + return xTargetHost; + } + + public void setXTargetHost(String XTargetHost) { + this.xTargetHost = XTargetHost; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java new file mode 100644 index 0000000..903e567 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.http; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class RiskHttpHandler extends DefaultHttpHeaderHandler { + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Authorization", token); + } + + } +} + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java new file mode 100644 index 0000000..9f75f42 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java @@ -0,0 +1,35 @@ +package com.casic.missiles.modular.task; + +import com.casic.missiles.modular.device.service.IRiskPointInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +@Slf4j +@Component +public class RiskTask { + + @Value("${casic.risk.open:false}") + private Boolean open; + + @Resource + private IRiskPointInfoService riskPointInfoService; + + /** + * 设备信息同步0 + * 每30分钟采集一次 + */ + @Scheduled(cron = "${casic.risk.corn:0 */1 * * * *}") + public void device() { + //风险点数据同步 + if (open) { + log.info("risk sync start...."); + riskPointInfoService.loadRiskInfo(); + log.info("risk sync end...."); + } + } + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java new file mode 100644 index 0000000..e4ca4f1 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.util; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.modular.http.RiskHttpHandler; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import com.casic.missiles.modular.system.utils.HttpUtils; + +import java.util.HashMap; +import java.util.Map; + +public class RiskHttpUtil { + public static final String loginUrl = "/rest/platform/systemLogin"; + public static final String pointDataUrl = "/rest/platform/dangerPointData"; + + public static String login(String baseUrl, String secret) { + Map param = new HashMap<>(); + param.put("secret", secret); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + defaultHeaderHandler.setJson(true); + String res = HttpUtils.sendPost(baseUrl + loginUrl, param, "", defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + public static String pointData(String baseUrl, String token) { + Map param = new HashMap<>(); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + + String res = HttpUtils.sendGet(baseUrl + pointDataUrl, param, token, defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + /** + * 登录数据加密 + * @param appId 加密id + * @param publicKey 公钥 + * @return + * @throws Exception + */ + public static String encrypt(String appId,String publicKey) throws Exception { + long ts = System.currentTimeMillis(); + return RSAUtils.encrypt(appId+"_"+ts,publicKey); + } + + +} diff --git a/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java new file mode 100644 index 0000000..9ba1e2a --- /dev/null +++ b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java @@ -0,0 +1,62 @@ +package com.casic.missiles.test; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.TypeReference; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.risk.SyncRiskDTO; +import com.casic.missiles.modular.device.util.AesUtil; +import com.casic.missiles.modular.util.RiskHttpUtil; +import com.casic.missiles.modular.util.WvpUtil; +import com.casic.missiles.modular.wvp.dto.MvpResponseDTO; + +import java.io.FileInputStream; +import java.security.MessageDigest; +import java.util.Date; +import java.util.HashMap; +import java.util.List; + +public class RiskTest { + public static void main(String[] args) throws Exception { +// File file = new File("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// String task = ZipFileUtil.getZipHandleTask("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(task); +// String md5 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(md5); +// String md52 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241122.zip"); +// System.out.println(md52); + + testDeviceLogin(); + System.out.println( DateUtil.offsetMinute(new Date(),-5)); + } + public static void testDeviceLogin() throws Exception { + Long time = System.currentTimeMillis(); + String str = "FXDDT_" + time; + String pubKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCynMBxzoNBemZKuxjlZzp04Lx/b0j1xRUznBKjlQSATwc+1DaxBpKdT4WfqAuFlSQLA7qLdntXw2cvUEvRxfdjJp2KfZLkEYRmYx3LT51WdCmouQREtMrR6j3mri8jV8TjktGCmBFMKX7eGeQM8O249yVjby6502bzZXehQ707JQIDAQAB"; + String sec = RSAUtils.encrypt(str, pubKey); + System.out.println(sec); + String priKey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALKcwHHOg0F6Zkq7GOVnOnTgvH9vSPXFFTOcEqOVBIBPBz7UNrEGkp1PhZ+oC4WVJAsDuot2e1fDZy9QS9HF92MmnYp9kuQRhGZjHctPnVZ0Kai5BES0ytHqPeauLyNXxOOS0YKYEUwpft4Z5Azw7bj3JWNvLrnTZvNld6FDvTslAgMBAAECgYAqN/kZLYpC+O6i7XSmDO95XwHPUXu6dDpdt5+EQR4OQh/hTwIaeAZB3uEj6vHGQomBfQEkI/5lsU97lIxHanbd+Hro7JyIhsGD5LR5XnZHVKzFiZW62OIU6FI9dlQNN8miiblnmyDwiMA3okaHl0O7qQjZ+IvY2csgmJc7AXpPpQJBAOhrhcfWFcgffj2O6HYNlBLFfbboc/ZzrEADDXKnxRSHlo5o8W+6gylG/L2NGtbag5S68B9VYzdkSQ1++5C+Ws8CQQDEu7h311PLEiKgqzGHpjzadQETmt/jMadaKQmT0TZwNVi6X8lR17U5hF8dAqZzUzr9kUC0HRIZhg4Uv1v3W3fLAkB4YPhxgJjXhjhEefg87Nt8vX1Xdx5Yz6CvpuUYNX0GHRQFvqUOUXQNtQ7CvorgLV1pc0lbcUZqMi8EJnj1hyJRAkEAjHXWm8GiMt+M15fCsi3vTq2xChVOekBuUsHv85iwvGZqJg7ThtpyqlEnM2g7/STUfkvhnXcQACclEI0blTy6BwJAPmFyhU+d0ejVpbc53TdrL2HqYYUHi/tTy/dtUa7lbypzdwwJ2M1Tv5PE8sQxr9tgMbebfxVb/RFKdiCCtzC4ng=="; + String s = RSAUtils.decrypt(sec,priKey); + System.out.println(s); + + + String appId = "5d7d4d81a64f4b8f"; + String publicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB"; + String secret = RiskHttpUtil.encrypt(appId,publicKey); + System.out.println(secret); + String res = RiskHttpUtil.login("http://101.201.36.107:12388",secret); + System.out.println(res); + JSONObject jsonObject = JSON.parseObject(res); + String token = jsonObject.getString("data"); + String resPoint = RiskHttpUtil.pointData("http://101.201.36.107:12388",token); + System.out.println(resPoint); + + + ResponseDataDTO> riskPointRes = JSON.parseObject(resPoint, new TypeReference>>() { + }); + + } + +} diff --git a/casic-web/src/main/resources/doc/20250609.md b/casic-web/src/main/resources/doc/20250609.md new file mode 100644 index 0000000..0cb3464 --- /dev/null +++ b/casic-web/src/main/resources/doc/20250609.md @@ -0,0 +1,30 @@ +## 一、数据库更新 + +1. 设备分组数据库增加 + +``` +ALTER TABLE bus_device_info ADD COLUMN GROUP_ID bigint; + +create table bus_device_group +( + id bigint not null comment '主键', + create_time datetime comment '创建时间', + update_time datetime comment '修改时间', + group_name varchar(255) comment '分组名称', + create_id bigint comment '创建人', + dept_id bigint comment '所属组织' +); + +alter table bus_device_group comment '设备分组管理信息'; + +``` + +casic.tenant.excludes 配置项中增加 bus_device_group + + +casic.no-login-urls 中增加如下配置 +,/sync/risk/dept,/sync/risk/user/list,/sync/risk/device/list + + + + diff --git a/casic-web/src/main/resources/doc/20250624.md b/casic-web/src/main/resources/doc/20250624.md new file mode 100644 index 0000000..7af561d --- /dev/null +++ b/casic-web/src/main/resources/doc/20250624.md @@ -0,0 +1,34 @@ +## 一、数据库更新 + +1. 风险点表添加同步ID + +``` +ALTER TABLE risk_point_info ADD COLUMN TARGET_ID VARCHAR(255); + +``` + +2. 风险点相关配置项 + +casic.risk.open 默认false 不开启 开启需配置true +casic.risk.corn 定时时间 默认0 */5 * * * * 5分钟 +casic.risk.appId 默认 5d7d4d81a64f4b8f 如变更需更改 +casic.risk.publicKey 公钥 默认MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB +casic.risk.host 风险点地址, 默认http://101.201.36.107:12388 生产需更改 + +3. 增加字典值 + hazardLevelName 风险危险等级(706映射) + 1 低风险 + 1 一般风险 + 2 较大风险 + 3 重大风险 + 以上字典值以706风险等级名称对应本系统风险点1 2 3 等级,如果706风险等级名称变更 修改对应字典值名称即可 + +4. 盒子代理服务模块添加 + 增加配置项 + casic.video.box.proxy 192.168.83.37:30064 此处需变更为部署代理nginx的ip及端口,具体配置参见国标级联及代理服务配置说明 + + + + + + diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" new file mode 100644 index 0000000..30cdcbd --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" new file mode 100644 index 0000000..6a0069c --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" new file mode 100644 index 0000000..f775124 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" new file mode 100644 index 0000000..9f65ff1 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" new file mode 100644 index 0000000..613ec69 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" new file mode 100644 index 0000000..1614b04 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" new file mode 100644 index 0000000..3f5083a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" new file mode 100644 index 0000000..134a604 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" new file mode 100644 index 0000000..7edeaa0 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" new file mode 100644 index 0000000..ccd0993 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" new file mode 100644 index 0000000..0cbf80d --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" new file mode 100644 index 0000000..613ec69 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" new file mode 100644 index 0000000..3f5083a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" Binary files differ diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java new file mode 100644 index 0000000..77c14a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.device.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dictmap.DeviceGroupQueryDict; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.vo.BusDeviceGroupVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; + +/** + * 设备分组管理信息Controller + * + * @author lwh + * @date 2025-06-11 + */ +@Api(tags = "设备分组管理信息") +@RestController +@RequestMapping("/device/group") +public class BusDeviceGroupController extends BaseController { + + private final IBusDeviceGroupService busDeviceGroupService; + private final AbstractPermissionContext abstractPermissionContext; + + public BusDeviceGroupController(IBusDeviceGroupService busDeviceGroupService, AbstractPermissionContext abstractPermissionContext) { + this.busDeviceGroupService = busDeviceGroupService; + this.abstractPermissionContext = abstractPermissionContext; + } + + @ApiOperation(value = "列表查询") + @GetMapping(value = "/list") + public ResponseDataDTO> list(BusDeviceGroupVO busDeviceGroupVO) { + QueryWrapper query = busDeviceGroupVO.genQuery(); + return ResponseDataDTO.success(busDeviceGroupService.list(query)); + } + + @ApiOperation(value = "分组树结构查询") + @BussinessLog(value = "分组树结构查询") + @GetMapping(value = "/tree") + public ResponseDataDTO> groupTree() { + List groupDTOList = busDeviceGroupService.groupTree(); + return ResponseDataDTO.success(groupDTOList); + } + + @BussinessLog(value = "设备分组分页查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "分页查询") + @GetMapping(value = "/listPage") + public ResponseDataDTO> listPage(BusDeviceGroupVO busDeviceGroupVO) { + Page page = PageFactory.defaultPage(); + QueryWrapper query = busDeviceGroupVO.genQuery(); + List list = busDeviceGroupService.selectBusDeviceGroupPage(page, query); + page.setRecords(list); + return ResponseDataDTO.success(super.packForBT(page)); + } + + @BussinessLog(value = "设备分组新增", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "新增接口") + @PostMapping(value = "/add") + public ResponseDataDTO add(@RequestBody BusDeviceGroup busDeviceGroup) { + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + busDeviceGroup.setCreateId(user.getId()); + busDeviceGroup.setCreateTime(new Date()); + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.save(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组修改", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @PostMapping(value = "/update") + public ResponseDataDTO update(@RequestBody BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.updateById(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组删除", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "删除接口") + @GetMapping(value = "/delete") + public ResponseDataDTO delete(String id) { + busDeviceGroupService.removeById(id); + return ResponseDataDTO.success(); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { + busDeviceGroupService.removeByIds(ids.getIds()); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组详情查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "详情查询") + @GetMapping(value = "/detail") + public ResponseDataDTO detail(String id) { + return ResponseDataDTO.success(busDeviceGroupService.getById(id)); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java new file mode 100644 index 0000000..9d3726f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.device.dao; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import java.util.List; +/** + *

+ * 设备分组管理信息 Mapper 接口 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface BusDeviceGroupMapper extends BaseMapper { +/** +* 设备分组管理信息 分页检索 +*/ +List selectBusDeviceGroupPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml new file mode 100644 index 0000000..a6dd84f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + id + , + create_time as createTime , + update_time as updateTime , + group_name as groupName , + create_id as createId , + dept_id as deptId + + + a + . + id + , + a.create_time + as createTime , + a.update_time + as updateTime , + a.group_name + as groupName , + a.create_id + as createId , + a.dept_id + as deptId + + + + + + and group_name like concat('%',#{request.groupName},'%') + + + and dept_id = #{request.deptId} + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java new file mode 100644 index 0000000..a821e92 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dictmap; + +import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap; + +public class DeviceGroupQueryDict extends AbstractDictMap { + + @Override + public void init() { + put("id", "主键"); + put("deptId", "所属组织"); + put("groupName", "分组名称"); + + put("deptName", "所属单位"); + } + + @Override + protected void initBeWrapped() { + + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java new file mode 100644 index 0000000..d8d1712 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.device.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + + +/** + * 设备分组管理信息对象 bus_device_group + * + * @author lwh + * @date 2025-06-11 + */ +@Data +@TableName("bus_device_group") +public class BusDeviceGroup extends Model { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键", dataType = "Long") + @TableField("id") + private Long id; + + @ApiModelProperty(value = "创建时间", dataType = "Date") + @TableField("create_time") + private Date createTime; + + @ApiModelProperty(value = "修改时间", dataType = "Date") + @TableField("update_time") + private Date updateTime; + + @ApiModelProperty(value = "分组名称", dataType = "String") + @TableField("group_name") + private String groupName; + + @ApiModelProperty(value = "创建人", dataType = "Long") + @TableField("create_id") + private Long createId; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; + @TableField(exist = false) + private String deptName; + + @Override + public String toString() { + return "BusDeviceGroup{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "groupName=" + groupName + + "createId=" + createId + + "deptId=" + deptId + + "}"; + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java new file mode 100644 index 0000000..d2cee5c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; + +import java.util.List; + + +/** + *

+ * 设备分组管理信息 服务类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface IBusDeviceGroupService extends IService { + /** + * 设备分组管理信息 分页检索 + */ + List selectBusDeviceGroupPage(Page page, QueryWrapper query); + + /** + * 树结构查询 + * + * @return + */ + List groupTree(); + + DeptDTO convertDeptDTO(BusDeviceGroup group); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java new file mode 100644 index 0000000..a6f08b7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java @@ -0,0 +1,139 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractAuthService; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.modular.data.constants.DataConstants; +import com.casic.missiles.modular.device.dao.BusDeviceGroupMapper; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; +import com.casic.missiles.modular.system.model.Dept; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.data.constants.DataConstants.NODE_TYPE_DEPT; + + +/** + *

+ * 设备分组管理信息 服务实现类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +@Service +public class BusDeviceGroupServiceImpl extends ServiceImpl implements IBusDeviceGroupService { + @Resource + private AbstractDeptService deptService; + + @Override + public List selectBusDeviceGroupPage(Page page, QueryWrapper query) { + List list = this.baseMapper.selectBusDeviceGroupPage(page, query); + list.forEach(this::wrapperInfo); + return list; + } + + @Override + public List groupTree() { + List deptList = deviceDept(); + + List deptDTOS = new ArrayList<>(); + //树节点根 + List rootIds = new ArrayList<>(); + Set normalIds = new HashSet<>(); + + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setId(dept.getId()); + deptDTO.setPid(dept.getPid()); + deptDTO.setFullName(dept.getFullName()); + deptDTO.setName(dept.getSimpleName()); + deptDTO.setType(NODE_TYPE_DEPT); + + normalIds.add(dept.getId()); + deptDTOS.add(deptDTO); + + + //查询该组织下分组信息 + LambdaQueryWrapper deviceQuery = new LambdaQueryWrapper<>(); + deviceQuery.eq(BusDeviceGroup::getDeptId, deptDTO.getId()); + + deviceQuery.orderByAsc(BusDeviceGroup::getGroupName); + List deviceInfos = this.list(deviceQuery); + List deptDTOList = new ArrayList<>(); + for (BusDeviceGroup group : deviceInfos) { + DeptDTO deptDto = this.convertDeptDTO(group); + deptDTOList.add(deptDto); + } + deptDTO.setChildrenNodes(deptDTOList); + } + + for (DeptDTO deptDTO : deptDTOS) { + if (!normalIds.contains(deptDTO.getPid())) { + rootIds.add(deptDTO.getPid()); + } + } + + //过滤根节点 + DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); + List newTree = new ArrayList<>(); + rootIds = rootIds.stream().distinct().collect(Collectors.toList()); + for (Long rootId : rootIds) { + abstractTreeBuildFactory.setRootId(rootId + ""); + newTree.addAll(abstractTreeBuildFactory.doTreeBuild(deptDTOS)); + } + return newTree; + } + + public DeptDTO convertDeptDTO(BusDeviceGroup group) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setType(DataConstants.NODE_TYPE_GROUP); + deptDTO.setId(group.getId()); + deptDTO.setPid(group.getDeptId()); + deptDTO.setName(group.getGroupName()); + deptDTO.setGroup(group); + return deptDTO; + } + + @Resource + private AbstractAuthService authService; + + private List deviceDept() { + //查询可见组织 + DataScope scope = authService.getLoginUserDataScope(); + AuthUser user = authService.getLoginUser(); + + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); + deptQuery.inSql(Dept::getId, "select dept_id from bus_device_info "); + if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums().getCode())) { + deptQuery.in(Dept::getId, scope.getDeptIds()); + } + deptQuery.orderByAsc(Dept::getNum); + + List deptList = deptService.list(deptQuery); + return deptList; + } + + @Override + public List list() { + List list = super.list(); + list.forEach(this::wrapperInfo); + return list; + } + + private void wrapperInfo(BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setDeptName(deptService.getDeptName(busDeviceGroup.getDeptId())); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java new file mode 100644 index 0000000..413d7ac --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.device.vo; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 设备分组管理信息对象VO + * + * @author lwh + * @date 2025-06-11 + */ +@Data +public class BusDeviceGroupVO { + private static final long serialVersionUID = 1L; + + + @ApiModelProperty(value = "分组名称", dataType = "String") + private String groupName; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + private Long deptId; + + public QueryWrapper genQuery() { + QueryWrapper query = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(groupName)) { + query.like("group_name", groupName); + } + if (deptId != null) { + query.eq("dept_id", deptId); + } + return query; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java new file mode 100644 index 0000000..477435e --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java @@ -0,0 +1,163 @@ +package com.casic.missiles.modular.device.dto.risk; + +import cn.hutool.core.convert.Convert; +import com.casic.missiles.modular.device.model.RiskPointInfo; +import lombok.Data; + +@Data +public class SyncRiskDTO { + /** + * 主键 + */ + private String id; + private String name; + /** + * 重大风险 + * 风险等级 + */ + private String hazardLevel; + /** + * 危险因素 + */ + private String riskFactors; + /** + * 所属单位 + */ + private String affiliatedUnit; + /** + * 所属部门 + */ + private String department; + + /** + * 定员 + */ + private String staffing; + + /** + * 定量 + */ + private String ration; + + /** + * 地理位置 + */ + private String geographicalPosition; + + /** + * 责任人 + */ + private String personLiable; + + /** + * 现场负责人 + */ + private String siteLeader; + + /** + * 主要设备、设施设计制造单位 + */ + private String zysbZzdw; + + /** + * 所在单位 + */ + private String szdw; + + /** + * 作业人数 + */ + private String numberOperators; + + /** + * 主要性能参数 + */ + private String mainPerformanceParameters; + + /** + * 工作环境参数 + */ + private String workingEnvironmentParameters; + + /** + * 安装单位 + */ + private String installationUnit; + + /** + * 投产日期 + */ + private String productionDate; + + /** + * 设备总数 + */ + private String totalEquipment; + + /** + * 备注 + */ + private String note; + + /** + * 创建用户 + */ + private String createUser; + private String createTime; + private String updateUser; + private String updateTime; + /** + * 是否删除0:否;1:是(接口已过滤掉1的数据) + */ + private Integer isDel; + + /** + * 行政区域 + */ + private String xzqy; + /** + * 街道 + */ + private String jdxx; + + /** + * 楼房 + */ + private String loufang; + + /** + * 楼层 + */ + private String louceng; + + /** + * 房间 + */ + private String roomName; + /** + * 所属单位编码 + */ + private String affiliatedUnitsCode; + + /** + * 危险性质 + */ + private String hazardousNature; + + public RiskPointInfo convertToRisk(RiskPointInfo pointInfo) { + //风险点缺少密级 + pointInfo.setSecretLevel("1"); + // hazardLevel 是否有字典值? + + if (department != null) { + pointInfo.setDeptId(Convert.toLong(department)); + } + pointInfo.setNature(hazardousNature); + pointInfo.setRiskName(name); + pointInfo.setAddress(geographicalPosition); + pointInfo.setTargetId(id); + //默认类型为1 + pointInfo.setRiskType(1); + return pointInfo; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java new file mode 100644 index 0000000..08e89a0 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.device.handler; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class BoxDefaultHttpHeaderHandler extends DefaultHttpHeaderHandler { + /** + * 代理服务IP + */ + private String xTargetHost; + + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Access-Token", token); + } + if (StrUtil.isNotEmpty(xTargetHost)){ + base.addHeader("X-TARGET-HOST", xTargetHost); + } + } + + public String getXTargetHost() { + return xTargetHost; + } + + public void setXTargetHost(String XTargetHost) { + this.xTargetHost = XTargetHost; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java new file mode 100644 index 0000000..903e567 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.http; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class RiskHttpHandler extends DefaultHttpHeaderHandler { + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Authorization", token); + } + + } +} + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java new file mode 100644 index 0000000..9f75f42 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java @@ -0,0 +1,35 @@ +package com.casic.missiles.modular.task; + +import com.casic.missiles.modular.device.service.IRiskPointInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +@Slf4j +@Component +public class RiskTask { + + @Value("${casic.risk.open:false}") + private Boolean open; + + @Resource + private IRiskPointInfoService riskPointInfoService; + + /** + * 设备信息同步0 + * 每30分钟采集一次 + */ + @Scheduled(cron = "${casic.risk.corn:0 */1 * * * *}") + public void device() { + //风险点数据同步 + if (open) { + log.info("risk sync start...."); + riskPointInfoService.loadRiskInfo(); + log.info("risk sync end...."); + } + } + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java new file mode 100644 index 0000000..e4ca4f1 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.util; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.modular.http.RiskHttpHandler; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import com.casic.missiles.modular.system.utils.HttpUtils; + +import java.util.HashMap; +import java.util.Map; + +public class RiskHttpUtil { + public static final String loginUrl = "/rest/platform/systemLogin"; + public static final String pointDataUrl = "/rest/platform/dangerPointData"; + + public static String login(String baseUrl, String secret) { + Map param = new HashMap<>(); + param.put("secret", secret); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + defaultHeaderHandler.setJson(true); + String res = HttpUtils.sendPost(baseUrl + loginUrl, param, "", defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + public static String pointData(String baseUrl, String token) { + Map param = new HashMap<>(); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + + String res = HttpUtils.sendGet(baseUrl + pointDataUrl, param, token, defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + /** + * 登录数据加密 + * @param appId 加密id + * @param publicKey 公钥 + * @return + * @throws Exception + */ + public static String encrypt(String appId,String publicKey) throws Exception { + long ts = System.currentTimeMillis(); + return RSAUtils.encrypt(appId+"_"+ts,publicKey); + } + + +} diff --git a/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java new file mode 100644 index 0000000..9ba1e2a --- /dev/null +++ b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java @@ -0,0 +1,62 @@ +package com.casic.missiles.test; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.TypeReference; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.risk.SyncRiskDTO; +import com.casic.missiles.modular.device.util.AesUtil; +import com.casic.missiles.modular.util.RiskHttpUtil; +import com.casic.missiles.modular.util.WvpUtil; +import com.casic.missiles.modular.wvp.dto.MvpResponseDTO; + +import java.io.FileInputStream; +import java.security.MessageDigest; +import java.util.Date; +import java.util.HashMap; +import java.util.List; + +public class RiskTest { + public static void main(String[] args) throws Exception { +// File file = new File("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// String task = ZipFileUtil.getZipHandleTask("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(task); +// String md5 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(md5); +// String md52 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241122.zip"); +// System.out.println(md52); + + testDeviceLogin(); + System.out.println( DateUtil.offsetMinute(new Date(),-5)); + } + public static void testDeviceLogin() throws Exception { + Long time = System.currentTimeMillis(); + String str = "FXDDT_" + time; + String pubKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCynMBxzoNBemZKuxjlZzp04Lx/b0j1xRUznBKjlQSATwc+1DaxBpKdT4WfqAuFlSQLA7qLdntXw2cvUEvRxfdjJp2KfZLkEYRmYx3LT51WdCmouQREtMrR6j3mri8jV8TjktGCmBFMKX7eGeQM8O249yVjby6502bzZXehQ707JQIDAQAB"; + String sec = RSAUtils.encrypt(str, pubKey); + System.out.println(sec); + String priKey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALKcwHHOg0F6Zkq7GOVnOnTgvH9vSPXFFTOcEqOVBIBPBz7UNrEGkp1PhZ+oC4WVJAsDuot2e1fDZy9QS9HF92MmnYp9kuQRhGZjHctPnVZ0Kai5BES0ytHqPeauLyNXxOOS0YKYEUwpft4Z5Azw7bj3JWNvLrnTZvNld6FDvTslAgMBAAECgYAqN/kZLYpC+O6i7XSmDO95XwHPUXu6dDpdt5+EQR4OQh/hTwIaeAZB3uEj6vHGQomBfQEkI/5lsU97lIxHanbd+Hro7JyIhsGD5LR5XnZHVKzFiZW62OIU6FI9dlQNN8miiblnmyDwiMA3okaHl0O7qQjZ+IvY2csgmJc7AXpPpQJBAOhrhcfWFcgffj2O6HYNlBLFfbboc/ZzrEADDXKnxRSHlo5o8W+6gylG/L2NGtbag5S68B9VYzdkSQ1++5C+Ws8CQQDEu7h311PLEiKgqzGHpjzadQETmt/jMadaKQmT0TZwNVi6X8lR17U5hF8dAqZzUzr9kUC0HRIZhg4Uv1v3W3fLAkB4YPhxgJjXhjhEefg87Nt8vX1Xdx5Yz6CvpuUYNX0GHRQFvqUOUXQNtQ7CvorgLV1pc0lbcUZqMi8EJnj1hyJRAkEAjHXWm8GiMt+M15fCsi3vTq2xChVOekBuUsHv85iwvGZqJg7ThtpyqlEnM2g7/STUfkvhnXcQACclEI0blTy6BwJAPmFyhU+d0ejVpbc53TdrL2HqYYUHi/tTy/dtUa7lbypzdwwJ2M1Tv5PE8sQxr9tgMbebfxVb/RFKdiCCtzC4ng=="; + String s = RSAUtils.decrypt(sec,priKey); + System.out.println(s); + + + String appId = "5d7d4d81a64f4b8f"; + String publicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB"; + String secret = RiskHttpUtil.encrypt(appId,publicKey); + System.out.println(secret); + String res = RiskHttpUtil.login("http://101.201.36.107:12388",secret); + System.out.println(res); + JSONObject jsonObject = JSON.parseObject(res); + String token = jsonObject.getString("data"); + String resPoint = RiskHttpUtil.pointData("http://101.201.36.107:12388",token); + System.out.println(resPoint); + + + ResponseDataDTO> riskPointRes = JSON.parseObject(resPoint, new TypeReference>>() { + }); + + } + +} diff --git a/casic-web/src/main/resources/doc/20250609.md b/casic-web/src/main/resources/doc/20250609.md new file mode 100644 index 0000000..0cb3464 --- /dev/null +++ b/casic-web/src/main/resources/doc/20250609.md @@ -0,0 +1,30 @@ +## 一、数据库更新 + +1. 设备分组数据库增加 + +``` +ALTER TABLE bus_device_info ADD COLUMN GROUP_ID bigint; + +create table bus_device_group +( + id bigint not null comment '主键', + create_time datetime comment '创建时间', + update_time datetime comment '修改时间', + group_name varchar(255) comment '分组名称', + create_id bigint comment '创建人', + dept_id bigint comment '所属组织' +); + +alter table bus_device_group comment '设备分组管理信息'; + +``` + +casic.tenant.excludes 配置项中增加 bus_device_group + + +casic.no-login-urls 中增加如下配置 +,/sync/risk/dept,/sync/risk/user/list,/sync/risk/device/list + + + + diff --git a/casic-web/src/main/resources/doc/20250624.md b/casic-web/src/main/resources/doc/20250624.md new file mode 100644 index 0000000..7af561d --- /dev/null +++ b/casic-web/src/main/resources/doc/20250624.md @@ -0,0 +1,34 @@ +## 一、数据库更新 + +1. 风险点表添加同步ID + +``` +ALTER TABLE risk_point_info ADD COLUMN TARGET_ID VARCHAR(255); + +``` + +2. 风险点相关配置项 + +casic.risk.open 默认false 不开启 开启需配置true +casic.risk.corn 定时时间 默认0 */5 * * * * 5分钟 +casic.risk.appId 默认 5d7d4d81a64f4b8f 如变更需更改 +casic.risk.publicKey 公钥 默认MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB +casic.risk.host 风险点地址, 默认http://101.201.36.107:12388 生产需更改 + +3. 增加字典值 + hazardLevelName 风险危险等级(706映射) + 1 低风险 + 1 一般风险 + 2 较大风险 + 3 重大风险 + 以上字典值以706风险等级名称对应本系统风险点1 2 3 等级,如果706风险等级名称变更 修改对应字典值名称即可 + +4. 盒子代理服务模块添加 + 增加配置项 + casic.video.box.proxy 192.168.83.37:30064 此处需变更为部署代理nginx的ip及端口,具体配置参见国标级联及代理服务配置说明 + + + + + + diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" new file mode 100644 index 0000000..30cdcbd --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" new file mode 100644 index 0000000..6a0069c --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" new file mode 100644 index 0000000..f775124 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" new file mode 100644 index 0000000..9f65ff1 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" new file mode 100644 index 0000000..613ec69 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" new file mode 100644 index 0000000..1614b04 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" new file mode 100644 index 0000000..3f5083a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" new file mode 100644 index 0000000..134a604 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" new file mode 100644 index 0000000..7edeaa0 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" new file mode 100644 index 0000000..ccd0993 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" new file mode 100644 index 0000000..0cbf80d --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" new file mode 100644 index 0000000..613ec69 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" new file mode 100644 index 0000000..3f5083a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" new file mode 100644 index 0000000..7edeaa0 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" Binary files differ diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java new file mode 100644 index 0000000..77c14a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.device.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dictmap.DeviceGroupQueryDict; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.vo.BusDeviceGroupVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; + +/** + * 设备分组管理信息Controller + * + * @author lwh + * @date 2025-06-11 + */ +@Api(tags = "设备分组管理信息") +@RestController +@RequestMapping("/device/group") +public class BusDeviceGroupController extends BaseController { + + private final IBusDeviceGroupService busDeviceGroupService; + private final AbstractPermissionContext abstractPermissionContext; + + public BusDeviceGroupController(IBusDeviceGroupService busDeviceGroupService, AbstractPermissionContext abstractPermissionContext) { + this.busDeviceGroupService = busDeviceGroupService; + this.abstractPermissionContext = abstractPermissionContext; + } + + @ApiOperation(value = "列表查询") + @GetMapping(value = "/list") + public ResponseDataDTO> list(BusDeviceGroupVO busDeviceGroupVO) { + QueryWrapper query = busDeviceGroupVO.genQuery(); + return ResponseDataDTO.success(busDeviceGroupService.list(query)); + } + + @ApiOperation(value = "分组树结构查询") + @BussinessLog(value = "分组树结构查询") + @GetMapping(value = "/tree") + public ResponseDataDTO> groupTree() { + List groupDTOList = busDeviceGroupService.groupTree(); + return ResponseDataDTO.success(groupDTOList); + } + + @BussinessLog(value = "设备分组分页查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "分页查询") + @GetMapping(value = "/listPage") + public ResponseDataDTO> listPage(BusDeviceGroupVO busDeviceGroupVO) { + Page page = PageFactory.defaultPage(); + QueryWrapper query = busDeviceGroupVO.genQuery(); + List list = busDeviceGroupService.selectBusDeviceGroupPage(page, query); + page.setRecords(list); + return ResponseDataDTO.success(super.packForBT(page)); + } + + @BussinessLog(value = "设备分组新增", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "新增接口") + @PostMapping(value = "/add") + public ResponseDataDTO add(@RequestBody BusDeviceGroup busDeviceGroup) { + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + busDeviceGroup.setCreateId(user.getId()); + busDeviceGroup.setCreateTime(new Date()); + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.save(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组修改", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @PostMapping(value = "/update") + public ResponseDataDTO update(@RequestBody BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.updateById(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组删除", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "删除接口") + @GetMapping(value = "/delete") + public ResponseDataDTO delete(String id) { + busDeviceGroupService.removeById(id); + return ResponseDataDTO.success(); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { + busDeviceGroupService.removeByIds(ids.getIds()); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组详情查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "详情查询") + @GetMapping(value = "/detail") + public ResponseDataDTO detail(String id) { + return ResponseDataDTO.success(busDeviceGroupService.getById(id)); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java new file mode 100644 index 0000000..9d3726f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.device.dao; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import java.util.List; +/** + *

+ * 设备分组管理信息 Mapper 接口 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface BusDeviceGroupMapper extends BaseMapper { +/** +* 设备分组管理信息 分页检索 +*/ +List selectBusDeviceGroupPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml new file mode 100644 index 0000000..a6dd84f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + id + , + create_time as createTime , + update_time as updateTime , + group_name as groupName , + create_id as createId , + dept_id as deptId + + + a + . + id + , + a.create_time + as createTime , + a.update_time + as updateTime , + a.group_name + as groupName , + a.create_id + as createId , + a.dept_id + as deptId + + + + + + and group_name like concat('%',#{request.groupName},'%') + + + and dept_id = #{request.deptId} + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java new file mode 100644 index 0000000..a821e92 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dictmap; + +import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap; + +public class DeviceGroupQueryDict extends AbstractDictMap { + + @Override + public void init() { + put("id", "主键"); + put("deptId", "所属组织"); + put("groupName", "分组名称"); + + put("deptName", "所属单位"); + } + + @Override + protected void initBeWrapped() { + + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java new file mode 100644 index 0000000..d8d1712 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.device.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + + +/** + * 设备分组管理信息对象 bus_device_group + * + * @author lwh + * @date 2025-06-11 + */ +@Data +@TableName("bus_device_group") +public class BusDeviceGroup extends Model { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键", dataType = "Long") + @TableField("id") + private Long id; + + @ApiModelProperty(value = "创建时间", dataType = "Date") + @TableField("create_time") + private Date createTime; + + @ApiModelProperty(value = "修改时间", dataType = "Date") + @TableField("update_time") + private Date updateTime; + + @ApiModelProperty(value = "分组名称", dataType = "String") + @TableField("group_name") + private String groupName; + + @ApiModelProperty(value = "创建人", dataType = "Long") + @TableField("create_id") + private Long createId; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; + @TableField(exist = false) + private String deptName; + + @Override + public String toString() { + return "BusDeviceGroup{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "groupName=" + groupName + + "createId=" + createId + + "deptId=" + deptId + + "}"; + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java new file mode 100644 index 0000000..d2cee5c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; + +import java.util.List; + + +/** + *

+ * 设备分组管理信息 服务类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface IBusDeviceGroupService extends IService { + /** + * 设备分组管理信息 分页检索 + */ + List selectBusDeviceGroupPage(Page page, QueryWrapper query); + + /** + * 树结构查询 + * + * @return + */ + List groupTree(); + + DeptDTO convertDeptDTO(BusDeviceGroup group); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java new file mode 100644 index 0000000..a6f08b7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java @@ -0,0 +1,139 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractAuthService; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.modular.data.constants.DataConstants; +import com.casic.missiles.modular.device.dao.BusDeviceGroupMapper; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; +import com.casic.missiles.modular.system.model.Dept; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.data.constants.DataConstants.NODE_TYPE_DEPT; + + +/** + *

+ * 设备分组管理信息 服务实现类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +@Service +public class BusDeviceGroupServiceImpl extends ServiceImpl implements IBusDeviceGroupService { + @Resource + private AbstractDeptService deptService; + + @Override + public List selectBusDeviceGroupPage(Page page, QueryWrapper query) { + List list = this.baseMapper.selectBusDeviceGroupPage(page, query); + list.forEach(this::wrapperInfo); + return list; + } + + @Override + public List groupTree() { + List deptList = deviceDept(); + + List deptDTOS = new ArrayList<>(); + //树节点根 + List rootIds = new ArrayList<>(); + Set normalIds = new HashSet<>(); + + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setId(dept.getId()); + deptDTO.setPid(dept.getPid()); + deptDTO.setFullName(dept.getFullName()); + deptDTO.setName(dept.getSimpleName()); + deptDTO.setType(NODE_TYPE_DEPT); + + normalIds.add(dept.getId()); + deptDTOS.add(deptDTO); + + + //查询该组织下分组信息 + LambdaQueryWrapper deviceQuery = new LambdaQueryWrapper<>(); + deviceQuery.eq(BusDeviceGroup::getDeptId, deptDTO.getId()); + + deviceQuery.orderByAsc(BusDeviceGroup::getGroupName); + List deviceInfos = this.list(deviceQuery); + List deptDTOList = new ArrayList<>(); + for (BusDeviceGroup group : deviceInfos) { + DeptDTO deptDto = this.convertDeptDTO(group); + deptDTOList.add(deptDto); + } + deptDTO.setChildrenNodes(deptDTOList); + } + + for (DeptDTO deptDTO : deptDTOS) { + if (!normalIds.contains(deptDTO.getPid())) { + rootIds.add(deptDTO.getPid()); + } + } + + //过滤根节点 + DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); + List newTree = new ArrayList<>(); + rootIds = rootIds.stream().distinct().collect(Collectors.toList()); + for (Long rootId : rootIds) { + abstractTreeBuildFactory.setRootId(rootId + ""); + newTree.addAll(abstractTreeBuildFactory.doTreeBuild(deptDTOS)); + } + return newTree; + } + + public DeptDTO convertDeptDTO(BusDeviceGroup group) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setType(DataConstants.NODE_TYPE_GROUP); + deptDTO.setId(group.getId()); + deptDTO.setPid(group.getDeptId()); + deptDTO.setName(group.getGroupName()); + deptDTO.setGroup(group); + return deptDTO; + } + + @Resource + private AbstractAuthService authService; + + private List deviceDept() { + //查询可见组织 + DataScope scope = authService.getLoginUserDataScope(); + AuthUser user = authService.getLoginUser(); + + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); + deptQuery.inSql(Dept::getId, "select dept_id from bus_device_info "); + if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums().getCode())) { + deptQuery.in(Dept::getId, scope.getDeptIds()); + } + deptQuery.orderByAsc(Dept::getNum); + + List deptList = deptService.list(deptQuery); + return deptList; + } + + @Override + public List list() { + List list = super.list(); + list.forEach(this::wrapperInfo); + return list; + } + + private void wrapperInfo(BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setDeptName(deptService.getDeptName(busDeviceGroup.getDeptId())); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java new file mode 100644 index 0000000..413d7ac --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.device.vo; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 设备分组管理信息对象VO + * + * @author lwh + * @date 2025-06-11 + */ +@Data +public class BusDeviceGroupVO { + private static final long serialVersionUID = 1L; + + + @ApiModelProperty(value = "分组名称", dataType = "String") + private String groupName; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + private Long deptId; + + public QueryWrapper genQuery() { + QueryWrapper query = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(groupName)) { + query.like("group_name", groupName); + } + if (deptId != null) { + query.eq("dept_id", deptId); + } + return query; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java new file mode 100644 index 0000000..477435e --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java @@ -0,0 +1,163 @@ +package com.casic.missiles.modular.device.dto.risk; + +import cn.hutool.core.convert.Convert; +import com.casic.missiles.modular.device.model.RiskPointInfo; +import lombok.Data; + +@Data +public class SyncRiskDTO { + /** + * 主键 + */ + private String id; + private String name; + /** + * 重大风险 + * 风险等级 + */ + private String hazardLevel; + /** + * 危险因素 + */ + private String riskFactors; + /** + * 所属单位 + */ + private String affiliatedUnit; + /** + * 所属部门 + */ + private String department; + + /** + * 定员 + */ + private String staffing; + + /** + * 定量 + */ + private String ration; + + /** + * 地理位置 + */ + private String geographicalPosition; + + /** + * 责任人 + */ + private String personLiable; + + /** + * 现场负责人 + */ + private String siteLeader; + + /** + * 主要设备、设施设计制造单位 + */ + private String zysbZzdw; + + /** + * 所在单位 + */ + private String szdw; + + /** + * 作业人数 + */ + private String numberOperators; + + /** + * 主要性能参数 + */ + private String mainPerformanceParameters; + + /** + * 工作环境参数 + */ + private String workingEnvironmentParameters; + + /** + * 安装单位 + */ + private String installationUnit; + + /** + * 投产日期 + */ + private String productionDate; + + /** + * 设备总数 + */ + private String totalEquipment; + + /** + * 备注 + */ + private String note; + + /** + * 创建用户 + */ + private String createUser; + private String createTime; + private String updateUser; + private String updateTime; + /** + * 是否删除0:否;1:是(接口已过滤掉1的数据) + */ + private Integer isDel; + + /** + * 行政区域 + */ + private String xzqy; + /** + * 街道 + */ + private String jdxx; + + /** + * 楼房 + */ + private String loufang; + + /** + * 楼层 + */ + private String louceng; + + /** + * 房间 + */ + private String roomName; + /** + * 所属单位编码 + */ + private String affiliatedUnitsCode; + + /** + * 危险性质 + */ + private String hazardousNature; + + public RiskPointInfo convertToRisk(RiskPointInfo pointInfo) { + //风险点缺少密级 + pointInfo.setSecretLevel("1"); + // hazardLevel 是否有字典值? + + if (department != null) { + pointInfo.setDeptId(Convert.toLong(department)); + } + pointInfo.setNature(hazardousNature); + pointInfo.setRiskName(name); + pointInfo.setAddress(geographicalPosition); + pointInfo.setTargetId(id); + //默认类型为1 + pointInfo.setRiskType(1); + return pointInfo; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java new file mode 100644 index 0000000..08e89a0 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.device.handler; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class BoxDefaultHttpHeaderHandler extends DefaultHttpHeaderHandler { + /** + * 代理服务IP + */ + private String xTargetHost; + + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Access-Token", token); + } + if (StrUtil.isNotEmpty(xTargetHost)){ + base.addHeader("X-TARGET-HOST", xTargetHost); + } + } + + public String getXTargetHost() { + return xTargetHost; + } + + public void setXTargetHost(String XTargetHost) { + this.xTargetHost = XTargetHost; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java new file mode 100644 index 0000000..903e567 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.http; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class RiskHttpHandler extends DefaultHttpHeaderHandler { + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Authorization", token); + } + + } +} + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java new file mode 100644 index 0000000..9f75f42 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java @@ -0,0 +1,35 @@ +package com.casic.missiles.modular.task; + +import com.casic.missiles.modular.device.service.IRiskPointInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +@Slf4j +@Component +public class RiskTask { + + @Value("${casic.risk.open:false}") + private Boolean open; + + @Resource + private IRiskPointInfoService riskPointInfoService; + + /** + * 设备信息同步0 + * 每30分钟采集一次 + */ + @Scheduled(cron = "${casic.risk.corn:0 */1 * * * *}") + public void device() { + //风险点数据同步 + if (open) { + log.info("risk sync start...."); + riskPointInfoService.loadRiskInfo(); + log.info("risk sync end...."); + } + } + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java new file mode 100644 index 0000000..e4ca4f1 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.util; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.modular.http.RiskHttpHandler; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import com.casic.missiles.modular.system.utils.HttpUtils; + +import java.util.HashMap; +import java.util.Map; + +public class RiskHttpUtil { + public static final String loginUrl = "/rest/platform/systemLogin"; + public static final String pointDataUrl = "/rest/platform/dangerPointData"; + + public static String login(String baseUrl, String secret) { + Map param = new HashMap<>(); + param.put("secret", secret); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + defaultHeaderHandler.setJson(true); + String res = HttpUtils.sendPost(baseUrl + loginUrl, param, "", defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + public static String pointData(String baseUrl, String token) { + Map param = new HashMap<>(); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + + String res = HttpUtils.sendGet(baseUrl + pointDataUrl, param, token, defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + /** + * 登录数据加密 + * @param appId 加密id + * @param publicKey 公钥 + * @return + * @throws Exception + */ + public static String encrypt(String appId,String publicKey) throws Exception { + long ts = System.currentTimeMillis(); + return RSAUtils.encrypt(appId+"_"+ts,publicKey); + } + + +} diff --git a/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java new file mode 100644 index 0000000..9ba1e2a --- /dev/null +++ b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java @@ -0,0 +1,62 @@ +package com.casic.missiles.test; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.TypeReference; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.risk.SyncRiskDTO; +import com.casic.missiles.modular.device.util.AesUtil; +import com.casic.missiles.modular.util.RiskHttpUtil; +import com.casic.missiles.modular.util.WvpUtil; +import com.casic.missiles.modular.wvp.dto.MvpResponseDTO; + +import java.io.FileInputStream; +import java.security.MessageDigest; +import java.util.Date; +import java.util.HashMap; +import java.util.List; + +public class RiskTest { + public static void main(String[] args) throws Exception { +// File file = new File("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// String task = ZipFileUtil.getZipHandleTask("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(task); +// String md5 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(md5); +// String md52 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241122.zip"); +// System.out.println(md52); + + testDeviceLogin(); + System.out.println( DateUtil.offsetMinute(new Date(),-5)); + } + public static void testDeviceLogin() throws Exception { + Long time = System.currentTimeMillis(); + String str = "FXDDT_" + time; + String pubKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCynMBxzoNBemZKuxjlZzp04Lx/b0j1xRUznBKjlQSATwc+1DaxBpKdT4WfqAuFlSQLA7qLdntXw2cvUEvRxfdjJp2KfZLkEYRmYx3LT51WdCmouQREtMrR6j3mri8jV8TjktGCmBFMKX7eGeQM8O249yVjby6502bzZXehQ707JQIDAQAB"; + String sec = RSAUtils.encrypt(str, pubKey); + System.out.println(sec); + String priKey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALKcwHHOg0F6Zkq7GOVnOnTgvH9vSPXFFTOcEqOVBIBPBz7UNrEGkp1PhZ+oC4WVJAsDuot2e1fDZy9QS9HF92MmnYp9kuQRhGZjHctPnVZ0Kai5BES0ytHqPeauLyNXxOOS0YKYEUwpft4Z5Azw7bj3JWNvLrnTZvNld6FDvTslAgMBAAECgYAqN/kZLYpC+O6i7XSmDO95XwHPUXu6dDpdt5+EQR4OQh/hTwIaeAZB3uEj6vHGQomBfQEkI/5lsU97lIxHanbd+Hro7JyIhsGD5LR5XnZHVKzFiZW62OIU6FI9dlQNN8miiblnmyDwiMA3okaHl0O7qQjZ+IvY2csgmJc7AXpPpQJBAOhrhcfWFcgffj2O6HYNlBLFfbboc/ZzrEADDXKnxRSHlo5o8W+6gylG/L2NGtbag5S68B9VYzdkSQ1++5C+Ws8CQQDEu7h311PLEiKgqzGHpjzadQETmt/jMadaKQmT0TZwNVi6X8lR17U5hF8dAqZzUzr9kUC0HRIZhg4Uv1v3W3fLAkB4YPhxgJjXhjhEefg87Nt8vX1Xdx5Yz6CvpuUYNX0GHRQFvqUOUXQNtQ7CvorgLV1pc0lbcUZqMi8EJnj1hyJRAkEAjHXWm8GiMt+M15fCsi3vTq2xChVOekBuUsHv85iwvGZqJg7ThtpyqlEnM2g7/STUfkvhnXcQACclEI0blTy6BwJAPmFyhU+d0ejVpbc53TdrL2HqYYUHi/tTy/dtUa7lbypzdwwJ2M1Tv5PE8sQxr9tgMbebfxVb/RFKdiCCtzC4ng=="; + String s = RSAUtils.decrypt(sec,priKey); + System.out.println(s); + + + String appId = "5d7d4d81a64f4b8f"; + String publicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB"; + String secret = RiskHttpUtil.encrypt(appId,publicKey); + System.out.println(secret); + String res = RiskHttpUtil.login("http://101.201.36.107:12388",secret); + System.out.println(res); + JSONObject jsonObject = JSON.parseObject(res); + String token = jsonObject.getString("data"); + String resPoint = RiskHttpUtil.pointData("http://101.201.36.107:12388",token); + System.out.println(resPoint); + + + ResponseDataDTO> riskPointRes = JSON.parseObject(resPoint, new TypeReference>>() { + }); + + } + +} diff --git a/casic-web/src/main/resources/doc/20250609.md b/casic-web/src/main/resources/doc/20250609.md new file mode 100644 index 0000000..0cb3464 --- /dev/null +++ b/casic-web/src/main/resources/doc/20250609.md @@ -0,0 +1,30 @@ +## 一、数据库更新 + +1. 设备分组数据库增加 + +``` +ALTER TABLE bus_device_info ADD COLUMN GROUP_ID bigint; + +create table bus_device_group +( + id bigint not null comment '主键', + create_time datetime comment '创建时间', + update_time datetime comment '修改时间', + group_name varchar(255) comment '分组名称', + create_id bigint comment '创建人', + dept_id bigint comment '所属组织' +); + +alter table bus_device_group comment '设备分组管理信息'; + +``` + +casic.tenant.excludes 配置项中增加 bus_device_group + + +casic.no-login-urls 中增加如下配置 +,/sync/risk/dept,/sync/risk/user/list,/sync/risk/device/list + + + + diff --git a/casic-web/src/main/resources/doc/20250624.md b/casic-web/src/main/resources/doc/20250624.md new file mode 100644 index 0000000..7af561d --- /dev/null +++ b/casic-web/src/main/resources/doc/20250624.md @@ -0,0 +1,34 @@ +## 一、数据库更新 + +1. 风险点表添加同步ID + +``` +ALTER TABLE risk_point_info ADD COLUMN TARGET_ID VARCHAR(255); + +``` + +2. 风险点相关配置项 + +casic.risk.open 默认false 不开启 开启需配置true +casic.risk.corn 定时时间 默认0 */5 * * * * 5分钟 +casic.risk.appId 默认 5d7d4d81a64f4b8f 如变更需更改 +casic.risk.publicKey 公钥 默认MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB +casic.risk.host 风险点地址, 默认http://101.201.36.107:12388 生产需更改 + +3. 增加字典值 + hazardLevelName 风险危险等级(706映射) + 1 低风险 + 1 一般风险 + 2 较大风险 + 3 重大风险 + 以上字典值以706风险等级名称对应本系统风险点1 2 3 等级,如果706风险等级名称变更 修改对应字典值名称即可 + +4. 盒子代理服务模块添加 + 增加配置项 + casic.video.box.proxy 192.168.83.37:30064 此处需变更为部署代理nginx的ip及端口,具体配置参见国标级联及代理服务配置说明 + + + + + + diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" new file mode 100644 index 0000000..30cdcbd --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" new file mode 100644 index 0000000..6a0069c --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" new file mode 100644 index 0000000..f775124 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" new file mode 100644 index 0000000..9f65ff1 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" new file mode 100644 index 0000000..613ec69 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" new file mode 100644 index 0000000..1614b04 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" new file mode 100644 index 0000000..3f5083a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" new file mode 100644 index 0000000..134a604 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" new file mode 100644 index 0000000..7edeaa0 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" new file mode 100644 index 0000000..ccd0993 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" new file mode 100644 index 0000000..0cbf80d --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" new file mode 100644 index 0000000..613ec69 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" new file mode 100644 index 0000000..3f5083a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" new file mode 100644 index 0000000..7edeaa0 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image012.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image012.jpg" new file mode 100644 index 0000000..0cbf80d --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image012.jpg" Binary files differ diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java new file mode 100644 index 0000000..77c14a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.device.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dictmap.DeviceGroupQueryDict; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.vo.BusDeviceGroupVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; + +/** + * 设备分组管理信息Controller + * + * @author lwh + * @date 2025-06-11 + */ +@Api(tags = "设备分组管理信息") +@RestController +@RequestMapping("/device/group") +public class BusDeviceGroupController extends BaseController { + + private final IBusDeviceGroupService busDeviceGroupService; + private final AbstractPermissionContext abstractPermissionContext; + + public BusDeviceGroupController(IBusDeviceGroupService busDeviceGroupService, AbstractPermissionContext abstractPermissionContext) { + this.busDeviceGroupService = busDeviceGroupService; + this.abstractPermissionContext = abstractPermissionContext; + } + + @ApiOperation(value = "列表查询") + @GetMapping(value = "/list") + public ResponseDataDTO> list(BusDeviceGroupVO busDeviceGroupVO) { + QueryWrapper query = busDeviceGroupVO.genQuery(); + return ResponseDataDTO.success(busDeviceGroupService.list(query)); + } + + @ApiOperation(value = "分组树结构查询") + @BussinessLog(value = "分组树结构查询") + @GetMapping(value = "/tree") + public ResponseDataDTO> groupTree() { + List groupDTOList = busDeviceGroupService.groupTree(); + return ResponseDataDTO.success(groupDTOList); + } + + @BussinessLog(value = "设备分组分页查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "分页查询") + @GetMapping(value = "/listPage") + public ResponseDataDTO> listPage(BusDeviceGroupVO busDeviceGroupVO) { + Page page = PageFactory.defaultPage(); + QueryWrapper query = busDeviceGroupVO.genQuery(); + List list = busDeviceGroupService.selectBusDeviceGroupPage(page, query); + page.setRecords(list); + return ResponseDataDTO.success(super.packForBT(page)); + } + + @BussinessLog(value = "设备分组新增", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "新增接口") + @PostMapping(value = "/add") + public ResponseDataDTO add(@RequestBody BusDeviceGroup busDeviceGroup) { + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + busDeviceGroup.setCreateId(user.getId()); + busDeviceGroup.setCreateTime(new Date()); + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.save(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组修改", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @PostMapping(value = "/update") + public ResponseDataDTO update(@RequestBody BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.updateById(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组删除", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "删除接口") + @GetMapping(value = "/delete") + public ResponseDataDTO delete(String id) { + busDeviceGroupService.removeById(id); + return ResponseDataDTO.success(); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { + busDeviceGroupService.removeByIds(ids.getIds()); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组详情查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "详情查询") + @GetMapping(value = "/detail") + public ResponseDataDTO detail(String id) { + return ResponseDataDTO.success(busDeviceGroupService.getById(id)); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java new file mode 100644 index 0000000..9d3726f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.device.dao; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import java.util.List; +/** + *

+ * 设备分组管理信息 Mapper 接口 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface BusDeviceGroupMapper extends BaseMapper { +/** +* 设备分组管理信息 分页检索 +*/ +List selectBusDeviceGroupPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml new file mode 100644 index 0000000..a6dd84f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + id + , + create_time as createTime , + update_time as updateTime , + group_name as groupName , + create_id as createId , + dept_id as deptId + + + a + . + id + , + a.create_time + as createTime , + a.update_time + as updateTime , + a.group_name + as groupName , + a.create_id + as createId , + a.dept_id + as deptId + + + + + + and group_name like concat('%',#{request.groupName},'%') + + + and dept_id = #{request.deptId} + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java new file mode 100644 index 0000000..a821e92 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dictmap; + +import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap; + +public class DeviceGroupQueryDict extends AbstractDictMap { + + @Override + public void init() { + put("id", "主键"); + put("deptId", "所属组织"); + put("groupName", "分组名称"); + + put("deptName", "所属单位"); + } + + @Override + protected void initBeWrapped() { + + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java new file mode 100644 index 0000000..d8d1712 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.device.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + + +/** + * 设备分组管理信息对象 bus_device_group + * + * @author lwh + * @date 2025-06-11 + */ +@Data +@TableName("bus_device_group") +public class BusDeviceGroup extends Model { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键", dataType = "Long") + @TableField("id") + private Long id; + + @ApiModelProperty(value = "创建时间", dataType = "Date") + @TableField("create_time") + private Date createTime; + + @ApiModelProperty(value = "修改时间", dataType = "Date") + @TableField("update_time") + private Date updateTime; + + @ApiModelProperty(value = "分组名称", dataType = "String") + @TableField("group_name") + private String groupName; + + @ApiModelProperty(value = "创建人", dataType = "Long") + @TableField("create_id") + private Long createId; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; + @TableField(exist = false) + private String deptName; + + @Override + public String toString() { + return "BusDeviceGroup{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "groupName=" + groupName + + "createId=" + createId + + "deptId=" + deptId + + "}"; + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java new file mode 100644 index 0000000..d2cee5c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; + +import java.util.List; + + +/** + *

+ * 设备分组管理信息 服务类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface IBusDeviceGroupService extends IService { + /** + * 设备分组管理信息 分页检索 + */ + List selectBusDeviceGroupPage(Page page, QueryWrapper query); + + /** + * 树结构查询 + * + * @return + */ + List groupTree(); + + DeptDTO convertDeptDTO(BusDeviceGroup group); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java new file mode 100644 index 0000000..a6f08b7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java @@ -0,0 +1,139 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractAuthService; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.modular.data.constants.DataConstants; +import com.casic.missiles.modular.device.dao.BusDeviceGroupMapper; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; +import com.casic.missiles.modular.system.model.Dept; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.data.constants.DataConstants.NODE_TYPE_DEPT; + + +/** + *

+ * 设备分组管理信息 服务实现类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +@Service +public class BusDeviceGroupServiceImpl extends ServiceImpl implements IBusDeviceGroupService { + @Resource + private AbstractDeptService deptService; + + @Override + public List selectBusDeviceGroupPage(Page page, QueryWrapper query) { + List list = this.baseMapper.selectBusDeviceGroupPage(page, query); + list.forEach(this::wrapperInfo); + return list; + } + + @Override + public List groupTree() { + List deptList = deviceDept(); + + List deptDTOS = new ArrayList<>(); + //树节点根 + List rootIds = new ArrayList<>(); + Set normalIds = new HashSet<>(); + + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setId(dept.getId()); + deptDTO.setPid(dept.getPid()); + deptDTO.setFullName(dept.getFullName()); + deptDTO.setName(dept.getSimpleName()); + deptDTO.setType(NODE_TYPE_DEPT); + + normalIds.add(dept.getId()); + deptDTOS.add(deptDTO); + + + //查询该组织下分组信息 + LambdaQueryWrapper deviceQuery = new LambdaQueryWrapper<>(); + deviceQuery.eq(BusDeviceGroup::getDeptId, deptDTO.getId()); + + deviceQuery.orderByAsc(BusDeviceGroup::getGroupName); + List deviceInfos = this.list(deviceQuery); + List deptDTOList = new ArrayList<>(); + for (BusDeviceGroup group : deviceInfos) { + DeptDTO deptDto = this.convertDeptDTO(group); + deptDTOList.add(deptDto); + } + deptDTO.setChildrenNodes(deptDTOList); + } + + for (DeptDTO deptDTO : deptDTOS) { + if (!normalIds.contains(deptDTO.getPid())) { + rootIds.add(deptDTO.getPid()); + } + } + + //过滤根节点 + DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); + List newTree = new ArrayList<>(); + rootIds = rootIds.stream().distinct().collect(Collectors.toList()); + for (Long rootId : rootIds) { + abstractTreeBuildFactory.setRootId(rootId + ""); + newTree.addAll(abstractTreeBuildFactory.doTreeBuild(deptDTOS)); + } + return newTree; + } + + public DeptDTO convertDeptDTO(BusDeviceGroup group) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setType(DataConstants.NODE_TYPE_GROUP); + deptDTO.setId(group.getId()); + deptDTO.setPid(group.getDeptId()); + deptDTO.setName(group.getGroupName()); + deptDTO.setGroup(group); + return deptDTO; + } + + @Resource + private AbstractAuthService authService; + + private List deviceDept() { + //查询可见组织 + DataScope scope = authService.getLoginUserDataScope(); + AuthUser user = authService.getLoginUser(); + + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); + deptQuery.inSql(Dept::getId, "select dept_id from bus_device_info "); + if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums().getCode())) { + deptQuery.in(Dept::getId, scope.getDeptIds()); + } + deptQuery.orderByAsc(Dept::getNum); + + List deptList = deptService.list(deptQuery); + return deptList; + } + + @Override + public List list() { + List list = super.list(); + list.forEach(this::wrapperInfo); + return list; + } + + private void wrapperInfo(BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setDeptName(deptService.getDeptName(busDeviceGroup.getDeptId())); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java new file mode 100644 index 0000000..413d7ac --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.device.vo; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 设备分组管理信息对象VO + * + * @author lwh + * @date 2025-06-11 + */ +@Data +public class BusDeviceGroupVO { + private static final long serialVersionUID = 1L; + + + @ApiModelProperty(value = "分组名称", dataType = "String") + private String groupName; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + private Long deptId; + + public QueryWrapper genQuery() { + QueryWrapper query = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(groupName)) { + query.like("group_name", groupName); + } + if (deptId != null) { + query.eq("dept_id", deptId); + } + return query; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java new file mode 100644 index 0000000..477435e --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java @@ -0,0 +1,163 @@ +package com.casic.missiles.modular.device.dto.risk; + +import cn.hutool.core.convert.Convert; +import com.casic.missiles.modular.device.model.RiskPointInfo; +import lombok.Data; + +@Data +public class SyncRiskDTO { + /** + * 主键 + */ + private String id; + private String name; + /** + * 重大风险 + * 风险等级 + */ + private String hazardLevel; + /** + * 危险因素 + */ + private String riskFactors; + /** + * 所属单位 + */ + private String affiliatedUnit; + /** + * 所属部门 + */ + private String department; + + /** + * 定员 + */ + private String staffing; + + /** + * 定量 + */ + private String ration; + + /** + * 地理位置 + */ + private String geographicalPosition; + + /** + * 责任人 + */ + private String personLiable; + + /** + * 现场负责人 + */ + private String siteLeader; + + /** + * 主要设备、设施设计制造单位 + */ + private String zysbZzdw; + + /** + * 所在单位 + */ + private String szdw; + + /** + * 作业人数 + */ + private String numberOperators; + + /** + * 主要性能参数 + */ + private String mainPerformanceParameters; + + /** + * 工作环境参数 + */ + private String workingEnvironmentParameters; + + /** + * 安装单位 + */ + private String installationUnit; + + /** + * 投产日期 + */ + private String productionDate; + + /** + * 设备总数 + */ + private String totalEquipment; + + /** + * 备注 + */ + private String note; + + /** + * 创建用户 + */ + private String createUser; + private String createTime; + private String updateUser; + private String updateTime; + /** + * 是否删除0:否;1:是(接口已过滤掉1的数据) + */ + private Integer isDel; + + /** + * 行政区域 + */ + private String xzqy; + /** + * 街道 + */ + private String jdxx; + + /** + * 楼房 + */ + private String loufang; + + /** + * 楼层 + */ + private String louceng; + + /** + * 房间 + */ + private String roomName; + /** + * 所属单位编码 + */ + private String affiliatedUnitsCode; + + /** + * 危险性质 + */ + private String hazardousNature; + + public RiskPointInfo convertToRisk(RiskPointInfo pointInfo) { + //风险点缺少密级 + pointInfo.setSecretLevel("1"); + // hazardLevel 是否有字典值? + + if (department != null) { + pointInfo.setDeptId(Convert.toLong(department)); + } + pointInfo.setNature(hazardousNature); + pointInfo.setRiskName(name); + pointInfo.setAddress(geographicalPosition); + pointInfo.setTargetId(id); + //默认类型为1 + pointInfo.setRiskType(1); + return pointInfo; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java new file mode 100644 index 0000000..08e89a0 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.device.handler; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class BoxDefaultHttpHeaderHandler extends DefaultHttpHeaderHandler { + /** + * 代理服务IP + */ + private String xTargetHost; + + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Access-Token", token); + } + if (StrUtil.isNotEmpty(xTargetHost)){ + base.addHeader("X-TARGET-HOST", xTargetHost); + } + } + + public String getXTargetHost() { + return xTargetHost; + } + + public void setXTargetHost(String XTargetHost) { + this.xTargetHost = XTargetHost; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java new file mode 100644 index 0000000..903e567 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.http; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class RiskHttpHandler extends DefaultHttpHeaderHandler { + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Authorization", token); + } + + } +} + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java new file mode 100644 index 0000000..9f75f42 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java @@ -0,0 +1,35 @@ +package com.casic.missiles.modular.task; + +import com.casic.missiles.modular.device.service.IRiskPointInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +@Slf4j +@Component +public class RiskTask { + + @Value("${casic.risk.open:false}") + private Boolean open; + + @Resource + private IRiskPointInfoService riskPointInfoService; + + /** + * 设备信息同步0 + * 每30分钟采集一次 + */ + @Scheduled(cron = "${casic.risk.corn:0 */1 * * * *}") + public void device() { + //风险点数据同步 + if (open) { + log.info("risk sync start...."); + riskPointInfoService.loadRiskInfo(); + log.info("risk sync end...."); + } + } + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java new file mode 100644 index 0000000..e4ca4f1 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.util; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.modular.http.RiskHttpHandler; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import com.casic.missiles.modular.system.utils.HttpUtils; + +import java.util.HashMap; +import java.util.Map; + +public class RiskHttpUtil { + public static final String loginUrl = "/rest/platform/systemLogin"; + public static final String pointDataUrl = "/rest/platform/dangerPointData"; + + public static String login(String baseUrl, String secret) { + Map param = new HashMap<>(); + param.put("secret", secret); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + defaultHeaderHandler.setJson(true); + String res = HttpUtils.sendPost(baseUrl + loginUrl, param, "", defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + public static String pointData(String baseUrl, String token) { + Map param = new HashMap<>(); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + + String res = HttpUtils.sendGet(baseUrl + pointDataUrl, param, token, defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + /** + * 登录数据加密 + * @param appId 加密id + * @param publicKey 公钥 + * @return + * @throws Exception + */ + public static String encrypt(String appId,String publicKey) throws Exception { + long ts = System.currentTimeMillis(); + return RSAUtils.encrypt(appId+"_"+ts,publicKey); + } + + +} diff --git a/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java new file mode 100644 index 0000000..9ba1e2a --- /dev/null +++ b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java @@ -0,0 +1,62 @@ +package com.casic.missiles.test; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.TypeReference; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.risk.SyncRiskDTO; +import com.casic.missiles.modular.device.util.AesUtil; +import com.casic.missiles.modular.util.RiskHttpUtil; +import com.casic.missiles.modular.util.WvpUtil; +import com.casic.missiles.modular.wvp.dto.MvpResponseDTO; + +import java.io.FileInputStream; +import java.security.MessageDigest; +import java.util.Date; +import java.util.HashMap; +import java.util.List; + +public class RiskTest { + public static void main(String[] args) throws Exception { +// File file = new File("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// String task = ZipFileUtil.getZipHandleTask("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(task); +// String md5 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(md5); +// String md52 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241122.zip"); +// System.out.println(md52); + + testDeviceLogin(); + System.out.println( DateUtil.offsetMinute(new Date(),-5)); + } + public static void testDeviceLogin() throws Exception { + Long time = System.currentTimeMillis(); + String str = "FXDDT_" + time; + String pubKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCynMBxzoNBemZKuxjlZzp04Lx/b0j1xRUznBKjlQSATwc+1DaxBpKdT4WfqAuFlSQLA7qLdntXw2cvUEvRxfdjJp2KfZLkEYRmYx3LT51WdCmouQREtMrR6j3mri8jV8TjktGCmBFMKX7eGeQM8O249yVjby6502bzZXehQ707JQIDAQAB"; + String sec = RSAUtils.encrypt(str, pubKey); + System.out.println(sec); + String priKey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALKcwHHOg0F6Zkq7GOVnOnTgvH9vSPXFFTOcEqOVBIBPBz7UNrEGkp1PhZ+oC4WVJAsDuot2e1fDZy9QS9HF92MmnYp9kuQRhGZjHctPnVZ0Kai5BES0ytHqPeauLyNXxOOS0YKYEUwpft4Z5Azw7bj3JWNvLrnTZvNld6FDvTslAgMBAAECgYAqN/kZLYpC+O6i7XSmDO95XwHPUXu6dDpdt5+EQR4OQh/hTwIaeAZB3uEj6vHGQomBfQEkI/5lsU97lIxHanbd+Hro7JyIhsGD5LR5XnZHVKzFiZW62OIU6FI9dlQNN8miiblnmyDwiMA3okaHl0O7qQjZ+IvY2csgmJc7AXpPpQJBAOhrhcfWFcgffj2O6HYNlBLFfbboc/ZzrEADDXKnxRSHlo5o8W+6gylG/L2NGtbag5S68B9VYzdkSQ1++5C+Ws8CQQDEu7h311PLEiKgqzGHpjzadQETmt/jMadaKQmT0TZwNVi6X8lR17U5hF8dAqZzUzr9kUC0HRIZhg4Uv1v3W3fLAkB4YPhxgJjXhjhEefg87Nt8vX1Xdx5Yz6CvpuUYNX0GHRQFvqUOUXQNtQ7CvorgLV1pc0lbcUZqMi8EJnj1hyJRAkEAjHXWm8GiMt+M15fCsi3vTq2xChVOekBuUsHv85iwvGZqJg7ThtpyqlEnM2g7/STUfkvhnXcQACclEI0blTy6BwJAPmFyhU+d0ejVpbc53TdrL2HqYYUHi/tTy/dtUa7lbypzdwwJ2M1Tv5PE8sQxr9tgMbebfxVb/RFKdiCCtzC4ng=="; + String s = RSAUtils.decrypt(sec,priKey); + System.out.println(s); + + + String appId = "5d7d4d81a64f4b8f"; + String publicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB"; + String secret = RiskHttpUtil.encrypt(appId,publicKey); + System.out.println(secret); + String res = RiskHttpUtil.login("http://101.201.36.107:12388",secret); + System.out.println(res); + JSONObject jsonObject = JSON.parseObject(res); + String token = jsonObject.getString("data"); + String resPoint = RiskHttpUtil.pointData("http://101.201.36.107:12388",token); + System.out.println(resPoint); + + + ResponseDataDTO> riskPointRes = JSON.parseObject(resPoint, new TypeReference>>() { + }); + + } + +} diff --git a/casic-web/src/main/resources/doc/20250609.md b/casic-web/src/main/resources/doc/20250609.md new file mode 100644 index 0000000..0cb3464 --- /dev/null +++ b/casic-web/src/main/resources/doc/20250609.md @@ -0,0 +1,30 @@ +## 一、数据库更新 + +1. 设备分组数据库增加 + +``` +ALTER TABLE bus_device_info ADD COLUMN GROUP_ID bigint; + +create table bus_device_group +( + id bigint not null comment '主键', + create_time datetime comment '创建时间', + update_time datetime comment '修改时间', + group_name varchar(255) comment '分组名称', + create_id bigint comment '创建人', + dept_id bigint comment '所属组织' +); + +alter table bus_device_group comment '设备分组管理信息'; + +``` + +casic.tenant.excludes 配置项中增加 bus_device_group + + +casic.no-login-urls 中增加如下配置 +,/sync/risk/dept,/sync/risk/user/list,/sync/risk/device/list + + + + diff --git a/casic-web/src/main/resources/doc/20250624.md b/casic-web/src/main/resources/doc/20250624.md new file mode 100644 index 0000000..7af561d --- /dev/null +++ b/casic-web/src/main/resources/doc/20250624.md @@ -0,0 +1,34 @@ +## 一、数据库更新 + +1. 风险点表添加同步ID + +``` +ALTER TABLE risk_point_info ADD COLUMN TARGET_ID VARCHAR(255); + +``` + +2. 风险点相关配置项 + +casic.risk.open 默认false 不开启 开启需配置true +casic.risk.corn 定时时间 默认0 */5 * * * * 5分钟 +casic.risk.appId 默认 5d7d4d81a64f4b8f 如变更需更改 +casic.risk.publicKey 公钥 默认MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB +casic.risk.host 风险点地址, 默认http://101.201.36.107:12388 生产需更改 + +3. 增加字典值 + hazardLevelName 风险危险等级(706映射) + 1 低风险 + 1 一般风险 + 2 较大风险 + 3 重大风险 + 以上字典值以706风险等级名称对应本系统风险点1 2 3 等级,如果706风险等级名称变更 修改对应字典值名称即可 + +4. 盒子代理服务模块添加 + 增加配置项 + casic.video.box.proxy 192.168.83.37:30064 此处需变更为部署代理nginx的ip及端口,具体配置参见国标级联及代理服务配置说明 + + + + + + diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" new file mode 100644 index 0000000..30cdcbd --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" new file mode 100644 index 0000000..6a0069c --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" new file mode 100644 index 0000000..f775124 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" new file mode 100644 index 0000000..9f65ff1 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" new file mode 100644 index 0000000..613ec69 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" new file mode 100644 index 0000000..1614b04 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" new file mode 100644 index 0000000..3f5083a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" new file mode 100644 index 0000000..134a604 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" new file mode 100644 index 0000000..7edeaa0 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" new file mode 100644 index 0000000..ccd0993 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" new file mode 100644 index 0000000..0cbf80d --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" new file mode 100644 index 0000000..613ec69 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" new file mode 100644 index 0000000..3f5083a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" new file mode 100644 index 0000000..7edeaa0 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image012.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image012.jpg" new file mode 100644 index 0000000..0cbf80d --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image012.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/themedata.thmx" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/themedata.thmx" new file mode 100644 index 0000000..67aae0a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/themedata.thmx" Binary files differ diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java new file mode 100644 index 0000000..77c14a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.device.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dictmap.DeviceGroupQueryDict; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.vo.BusDeviceGroupVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; + +/** + * 设备分组管理信息Controller + * + * @author lwh + * @date 2025-06-11 + */ +@Api(tags = "设备分组管理信息") +@RestController +@RequestMapping("/device/group") +public class BusDeviceGroupController extends BaseController { + + private final IBusDeviceGroupService busDeviceGroupService; + private final AbstractPermissionContext abstractPermissionContext; + + public BusDeviceGroupController(IBusDeviceGroupService busDeviceGroupService, AbstractPermissionContext abstractPermissionContext) { + this.busDeviceGroupService = busDeviceGroupService; + this.abstractPermissionContext = abstractPermissionContext; + } + + @ApiOperation(value = "列表查询") + @GetMapping(value = "/list") + public ResponseDataDTO> list(BusDeviceGroupVO busDeviceGroupVO) { + QueryWrapper query = busDeviceGroupVO.genQuery(); + return ResponseDataDTO.success(busDeviceGroupService.list(query)); + } + + @ApiOperation(value = "分组树结构查询") + @BussinessLog(value = "分组树结构查询") + @GetMapping(value = "/tree") + public ResponseDataDTO> groupTree() { + List groupDTOList = busDeviceGroupService.groupTree(); + return ResponseDataDTO.success(groupDTOList); + } + + @BussinessLog(value = "设备分组分页查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "分页查询") + @GetMapping(value = "/listPage") + public ResponseDataDTO> listPage(BusDeviceGroupVO busDeviceGroupVO) { + Page page = PageFactory.defaultPage(); + QueryWrapper query = busDeviceGroupVO.genQuery(); + List list = busDeviceGroupService.selectBusDeviceGroupPage(page, query); + page.setRecords(list); + return ResponseDataDTO.success(super.packForBT(page)); + } + + @BussinessLog(value = "设备分组新增", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "新增接口") + @PostMapping(value = "/add") + public ResponseDataDTO add(@RequestBody BusDeviceGroup busDeviceGroup) { + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + busDeviceGroup.setCreateId(user.getId()); + busDeviceGroup.setCreateTime(new Date()); + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.save(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组修改", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @PostMapping(value = "/update") + public ResponseDataDTO update(@RequestBody BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.updateById(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组删除", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "删除接口") + @GetMapping(value = "/delete") + public ResponseDataDTO delete(String id) { + busDeviceGroupService.removeById(id); + return ResponseDataDTO.success(); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { + busDeviceGroupService.removeByIds(ids.getIds()); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组详情查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "详情查询") + @GetMapping(value = "/detail") + public ResponseDataDTO detail(String id) { + return ResponseDataDTO.success(busDeviceGroupService.getById(id)); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java new file mode 100644 index 0000000..9d3726f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.device.dao; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import java.util.List; +/** + *

+ * 设备分组管理信息 Mapper 接口 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface BusDeviceGroupMapper extends BaseMapper { +/** +* 设备分组管理信息 分页检索 +*/ +List selectBusDeviceGroupPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml new file mode 100644 index 0000000..a6dd84f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + id + , + create_time as createTime , + update_time as updateTime , + group_name as groupName , + create_id as createId , + dept_id as deptId + + + a + . + id + , + a.create_time + as createTime , + a.update_time + as updateTime , + a.group_name + as groupName , + a.create_id + as createId , + a.dept_id + as deptId + + + + + + and group_name like concat('%',#{request.groupName},'%') + + + and dept_id = #{request.deptId} + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java new file mode 100644 index 0000000..a821e92 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dictmap; + +import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap; + +public class DeviceGroupQueryDict extends AbstractDictMap { + + @Override + public void init() { + put("id", "主键"); + put("deptId", "所属组织"); + put("groupName", "分组名称"); + + put("deptName", "所属单位"); + } + + @Override + protected void initBeWrapped() { + + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java new file mode 100644 index 0000000..d8d1712 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.device.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + + +/** + * 设备分组管理信息对象 bus_device_group + * + * @author lwh + * @date 2025-06-11 + */ +@Data +@TableName("bus_device_group") +public class BusDeviceGroup extends Model { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键", dataType = "Long") + @TableField("id") + private Long id; + + @ApiModelProperty(value = "创建时间", dataType = "Date") + @TableField("create_time") + private Date createTime; + + @ApiModelProperty(value = "修改时间", dataType = "Date") + @TableField("update_time") + private Date updateTime; + + @ApiModelProperty(value = "分组名称", dataType = "String") + @TableField("group_name") + private String groupName; + + @ApiModelProperty(value = "创建人", dataType = "Long") + @TableField("create_id") + private Long createId; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; + @TableField(exist = false) + private String deptName; + + @Override + public String toString() { + return "BusDeviceGroup{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "groupName=" + groupName + + "createId=" + createId + + "deptId=" + deptId + + "}"; + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java new file mode 100644 index 0000000..d2cee5c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; + +import java.util.List; + + +/** + *

+ * 设备分组管理信息 服务类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface IBusDeviceGroupService extends IService { + /** + * 设备分组管理信息 分页检索 + */ + List selectBusDeviceGroupPage(Page page, QueryWrapper query); + + /** + * 树结构查询 + * + * @return + */ + List groupTree(); + + DeptDTO convertDeptDTO(BusDeviceGroup group); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java new file mode 100644 index 0000000..a6f08b7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java @@ -0,0 +1,139 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractAuthService; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.modular.data.constants.DataConstants; +import com.casic.missiles.modular.device.dao.BusDeviceGroupMapper; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; +import com.casic.missiles.modular.system.model.Dept; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.data.constants.DataConstants.NODE_TYPE_DEPT; + + +/** + *

+ * 设备分组管理信息 服务实现类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +@Service +public class BusDeviceGroupServiceImpl extends ServiceImpl implements IBusDeviceGroupService { + @Resource + private AbstractDeptService deptService; + + @Override + public List selectBusDeviceGroupPage(Page page, QueryWrapper query) { + List list = this.baseMapper.selectBusDeviceGroupPage(page, query); + list.forEach(this::wrapperInfo); + return list; + } + + @Override + public List groupTree() { + List deptList = deviceDept(); + + List deptDTOS = new ArrayList<>(); + //树节点根 + List rootIds = new ArrayList<>(); + Set normalIds = new HashSet<>(); + + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setId(dept.getId()); + deptDTO.setPid(dept.getPid()); + deptDTO.setFullName(dept.getFullName()); + deptDTO.setName(dept.getSimpleName()); + deptDTO.setType(NODE_TYPE_DEPT); + + normalIds.add(dept.getId()); + deptDTOS.add(deptDTO); + + + //查询该组织下分组信息 + LambdaQueryWrapper deviceQuery = new LambdaQueryWrapper<>(); + deviceQuery.eq(BusDeviceGroup::getDeptId, deptDTO.getId()); + + deviceQuery.orderByAsc(BusDeviceGroup::getGroupName); + List deviceInfos = this.list(deviceQuery); + List deptDTOList = new ArrayList<>(); + for (BusDeviceGroup group : deviceInfos) { + DeptDTO deptDto = this.convertDeptDTO(group); + deptDTOList.add(deptDto); + } + deptDTO.setChildrenNodes(deptDTOList); + } + + for (DeptDTO deptDTO : deptDTOS) { + if (!normalIds.contains(deptDTO.getPid())) { + rootIds.add(deptDTO.getPid()); + } + } + + //过滤根节点 + DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); + List newTree = new ArrayList<>(); + rootIds = rootIds.stream().distinct().collect(Collectors.toList()); + for (Long rootId : rootIds) { + abstractTreeBuildFactory.setRootId(rootId + ""); + newTree.addAll(abstractTreeBuildFactory.doTreeBuild(deptDTOS)); + } + return newTree; + } + + public DeptDTO convertDeptDTO(BusDeviceGroup group) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setType(DataConstants.NODE_TYPE_GROUP); + deptDTO.setId(group.getId()); + deptDTO.setPid(group.getDeptId()); + deptDTO.setName(group.getGroupName()); + deptDTO.setGroup(group); + return deptDTO; + } + + @Resource + private AbstractAuthService authService; + + private List deviceDept() { + //查询可见组织 + DataScope scope = authService.getLoginUserDataScope(); + AuthUser user = authService.getLoginUser(); + + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); + deptQuery.inSql(Dept::getId, "select dept_id from bus_device_info "); + if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums().getCode())) { + deptQuery.in(Dept::getId, scope.getDeptIds()); + } + deptQuery.orderByAsc(Dept::getNum); + + List deptList = deptService.list(deptQuery); + return deptList; + } + + @Override + public List list() { + List list = super.list(); + list.forEach(this::wrapperInfo); + return list; + } + + private void wrapperInfo(BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setDeptName(deptService.getDeptName(busDeviceGroup.getDeptId())); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java new file mode 100644 index 0000000..413d7ac --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.device.vo; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 设备分组管理信息对象VO + * + * @author lwh + * @date 2025-06-11 + */ +@Data +public class BusDeviceGroupVO { + private static final long serialVersionUID = 1L; + + + @ApiModelProperty(value = "分组名称", dataType = "String") + private String groupName; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + private Long deptId; + + public QueryWrapper genQuery() { + QueryWrapper query = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(groupName)) { + query.like("group_name", groupName); + } + if (deptId != null) { + query.eq("dept_id", deptId); + } + return query; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java new file mode 100644 index 0000000..477435e --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java @@ -0,0 +1,163 @@ +package com.casic.missiles.modular.device.dto.risk; + +import cn.hutool.core.convert.Convert; +import com.casic.missiles.modular.device.model.RiskPointInfo; +import lombok.Data; + +@Data +public class SyncRiskDTO { + /** + * 主键 + */ + private String id; + private String name; + /** + * 重大风险 + * 风险等级 + */ + private String hazardLevel; + /** + * 危险因素 + */ + private String riskFactors; + /** + * 所属单位 + */ + private String affiliatedUnit; + /** + * 所属部门 + */ + private String department; + + /** + * 定员 + */ + private String staffing; + + /** + * 定量 + */ + private String ration; + + /** + * 地理位置 + */ + private String geographicalPosition; + + /** + * 责任人 + */ + private String personLiable; + + /** + * 现场负责人 + */ + private String siteLeader; + + /** + * 主要设备、设施设计制造单位 + */ + private String zysbZzdw; + + /** + * 所在单位 + */ + private String szdw; + + /** + * 作业人数 + */ + private String numberOperators; + + /** + * 主要性能参数 + */ + private String mainPerformanceParameters; + + /** + * 工作环境参数 + */ + private String workingEnvironmentParameters; + + /** + * 安装单位 + */ + private String installationUnit; + + /** + * 投产日期 + */ + private String productionDate; + + /** + * 设备总数 + */ + private String totalEquipment; + + /** + * 备注 + */ + private String note; + + /** + * 创建用户 + */ + private String createUser; + private String createTime; + private String updateUser; + private String updateTime; + /** + * 是否删除0:否;1:是(接口已过滤掉1的数据) + */ + private Integer isDel; + + /** + * 行政区域 + */ + private String xzqy; + /** + * 街道 + */ + private String jdxx; + + /** + * 楼房 + */ + private String loufang; + + /** + * 楼层 + */ + private String louceng; + + /** + * 房间 + */ + private String roomName; + /** + * 所属单位编码 + */ + private String affiliatedUnitsCode; + + /** + * 危险性质 + */ + private String hazardousNature; + + public RiskPointInfo convertToRisk(RiskPointInfo pointInfo) { + //风险点缺少密级 + pointInfo.setSecretLevel("1"); + // hazardLevel 是否有字典值? + + if (department != null) { + pointInfo.setDeptId(Convert.toLong(department)); + } + pointInfo.setNature(hazardousNature); + pointInfo.setRiskName(name); + pointInfo.setAddress(geographicalPosition); + pointInfo.setTargetId(id); + //默认类型为1 + pointInfo.setRiskType(1); + return pointInfo; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java new file mode 100644 index 0000000..08e89a0 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.device.handler; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class BoxDefaultHttpHeaderHandler extends DefaultHttpHeaderHandler { + /** + * 代理服务IP + */ + private String xTargetHost; + + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Access-Token", token); + } + if (StrUtil.isNotEmpty(xTargetHost)){ + base.addHeader("X-TARGET-HOST", xTargetHost); + } + } + + public String getXTargetHost() { + return xTargetHost; + } + + public void setXTargetHost(String XTargetHost) { + this.xTargetHost = XTargetHost; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java new file mode 100644 index 0000000..903e567 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.http; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class RiskHttpHandler extends DefaultHttpHeaderHandler { + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Authorization", token); + } + + } +} + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java new file mode 100644 index 0000000..9f75f42 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java @@ -0,0 +1,35 @@ +package com.casic.missiles.modular.task; + +import com.casic.missiles.modular.device.service.IRiskPointInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +@Slf4j +@Component +public class RiskTask { + + @Value("${casic.risk.open:false}") + private Boolean open; + + @Resource + private IRiskPointInfoService riskPointInfoService; + + /** + * 设备信息同步0 + * 每30分钟采集一次 + */ + @Scheduled(cron = "${casic.risk.corn:0 */1 * * * *}") + public void device() { + //风险点数据同步 + if (open) { + log.info("risk sync start...."); + riskPointInfoService.loadRiskInfo(); + log.info("risk sync end...."); + } + } + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java new file mode 100644 index 0000000..e4ca4f1 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.util; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.modular.http.RiskHttpHandler; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import com.casic.missiles.modular.system.utils.HttpUtils; + +import java.util.HashMap; +import java.util.Map; + +public class RiskHttpUtil { + public static final String loginUrl = "/rest/platform/systemLogin"; + public static final String pointDataUrl = "/rest/platform/dangerPointData"; + + public static String login(String baseUrl, String secret) { + Map param = new HashMap<>(); + param.put("secret", secret); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + defaultHeaderHandler.setJson(true); + String res = HttpUtils.sendPost(baseUrl + loginUrl, param, "", defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + public static String pointData(String baseUrl, String token) { + Map param = new HashMap<>(); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + + String res = HttpUtils.sendGet(baseUrl + pointDataUrl, param, token, defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + /** + * 登录数据加密 + * @param appId 加密id + * @param publicKey 公钥 + * @return + * @throws Exception + */ + public static String encrypt(String appId,String publicKey) throws Exception { + long ts = System.currentTimeMillis(); + return RSAUtils.encrypt(appId+"_"+ts,publicKey); + } + + +} diff --git a/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java new file mode 100644 index 0000000..9ba1e2a --- /dev/null +++ b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java @@ -0,0 +1,62 @@ +package com.casic.missiles.test; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.TypeReference; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.risk.SyncRiskDTO; +import com.casic.missiles.modular.device.util.AesUtil; +import com.casic.missiles.modular.util.RiskHttpUtil; +import com.casic.missiles.modular.util.WvpUtil; +import com.casic.missiles.modular.wvp.dto.MvpResponseDTO; + +import java.io.FileInputStream; +import java.security.MessageDigest; +import java.util.Date; +import java.util.HashMap; +import java.util.List; + +public class RiskTest { + public static void main(String[] args) throws Exception { +// File file = new File("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// String task = ZipFileUtil.getZipHandleTask("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(task); +// String md5 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(md5); +// String md52 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241122.zip"); +// System.out.println(md52); + + testDeviceLogin(); + System.out.println( DateUtil.offsetMinute(new Date(),-5)); + } + public static void testDeviceLogin() throws Exception { + Long time = System.currentTimeMillis(); + String str = "FXDDT_" + time; + String pubKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCynMBxzoNBemZKuxjlZzp04Lx/b0j1xRUznBKjlQSATwc+1DaxBpKdT4WfqAuFlSQLA7qLdntXw2cvUEvRxfdjJp2KfZLkEYRmYx3LT51WdCmouQREtMrR6j3mri8jV8TjktGCmBFMKX7eGeQM8O249yVjby6502bzZXehQ707JQIDAQAB"; + String sec = RSAUtils.encrypt(str, pubKey); + System.out.println(sec); + String priKey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALKcwHHOg0F6Zkq7GOVnOnTgvH9vSPXFFTOcEqOVBIBPBz7UNrEGkp1PhZ+oC4WVJAsDuot2e1fDZy9QS9HF92MmnYp9kuQRhGZjHctPnVZ0Kai5BES0ytHqPeauLyNXxOOS0YKYEUwpft4Z5Azw7bj3JWNvLrnTZvNld6FDvTslAgMBAAECgYAqN/kZLYpC+O6i7XSmDO95XwHPUXu6dDpdt5+EQR4OQh/hTwIaeAZB3uEj6vHGQomBfQEkI/5lsU97lIxHanbd+Hro7JyIhsGD5LR5XnZHVKzFiZW62OIU6FI9dlQNN8miiblnmyDwiMA3okaHl0O7qQjZ+IvY2csgmJc7AXpPpQJBAOhrhcfWFcgffj2O6HYNlBLFfbboc/ZzrEADDXKnxRSHlo5o8W+6gylG/L2NGtbag5S68B9VYzdkSQ1++5C+Ws8CQQDEu7h311PLEiKgqzGHpjzadQETmt/jMadaKQmT0TZwNVi6X8lR17U5hF8dAqZzUzr9kUC0HRIZhg4Uv1v3W3fLAkB4YPhxgJjXhjhEefg87Nt8vX1Xdx5Yz6CvpuUYNX0GHRQFvqUOUXQNtQ7CvorgLV1pc0lbcUZqMi8EJnj1hyJRAkEAjHXWm8GiMt+M15fCsi3vTq2xChVOekBuUsHv85iwvGZqJg7ThtpyqlEnM2g7/STUfkvhnXcQACclEI0blTy6BwJAPmFyhU+d0ejVpbc53TdrL2HqYYUHi/tTy/dtUa7lbypzdwwJ2M1Tv5PE8sQxr9tgMbebfxVb/RFKdiCCtzC4ng=="; + String s = RSAUtils.decrypt(sec,priKey); + System.out.println(s); + + + String appId = "5d7d4d81a64f4b8f"; + String publicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB"; + String secret = RiskHttpUtil.encrypt(appId,publicKey); + System.out.println(secret); + String res = RiskHttpUtil.login("http://101.201.36.107:12388",secret); + System.out.println(res); + JSONObject jsonObject = JSON.parseObject(res); + String token = jsonObject.getString("data"); + String resPoint = RiskHttpUtil.pointData("http://101.201.36.107:12388",token); + System.out.println(resPoint); + + + ResponseDataDTO> riskPointRes = JSON.parseObject(resPoint, new TypeReference>>() { + }); + + } + +} diff --git a/casic-web/src/main/resources/doc/20250609.md b/casic-web/src/main/resources/doc/20250609.md new file mode 100644 index 0000000..0cb3464 --- /dev/null +++ b/casic-web/src/main/resources/doc/20250609.md @@ -0,0 +1,30 @@ +## 一、数据库更新 + +1. 设备分组数据库增加 + +``` +ALTER TABLE bus_device_info ADD COLUMN GROUP_ID bigint; + +create table bus_device_group +( + id bigint not null comment '主键', + create_time datetime comment '创建时间', + update_time datetime comment '修改时间', + group_name varchar(255) comment '分组名称', + create_id bigint comment '创建人', + dept_id bigint comment '所属组织' +); + +alter table bus_device_group comment '设备分组管理信息'; + +``` + +casic.tenant.excludes 配置项中增加 bus_device_group + + +casic.no-login-urls 中增加如下配置 +,/sync/risk/dept,/sync/risk/user/list,/sync/risk/device/list + + + + diff --git a/casic-web/src/main/resources/doc/20250624.md b/casic-web/src/main/resources/doc/20250624.md new file mode 100644 index 0000000..7af561d --- /dev/null +++ b/casic-web/src/main/resources/doc/20250624.md @@ -0,0 +1,34 @@ +## 一、数据库更新 + +1. 风险点表添加同步ID + +``` +ALTER TABLE risk_point_info ADD COLUMN TARGET_ID VARCHAR(255); + +``` + +2. 风险点相关配置项 + +casic.risk.open 默认false 不开启 开启需配置true +casic.risk.corn 定时时间 默认0 */5 * * * * 5分钟 +casic.risk.appId 默认 5d7d4d81a64f4b8f 如变更需更改 +casic.risk.publicKey 公钥 默认MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB +casic.risk.host 风险点地址, 默认http://101.201.36.107:12388 生产需更改 + +3. 增加字典值 + hazardLevelName 风险危险等级(706映射) + 1 低风险 + 1 一般风险 + 2 较大风险 + 3 重大风险 + 以上字典值以706风险等级名称对应本系统风险点1 2 3 等级,如果706风险等级名称变更 修改对应字典值名称即可 + +4. 盒子代理服务模块添加 + 增加配置项 + casic.video.box.proxy 192.168.83.37:30064 此处需变更为部署代理nginx的ip及端口,具体配置参见国标级联及代理服务配置说明 + + + + + + diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" new file mode 100644 index 0000000..30cdcbd --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" new file mode 100644 index 0000000..6a0069c --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" new file mode 100644 index 0000000..f775124 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" new file mode 100644 index 0000000..9f65ff1 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" new file mode 100644 index 0000000..613ec69 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" new file mode 100644 index 0000000..1614b04 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" new file mode 100644 index 0000000..3f5083a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" new file mode 100644 index 0000000..134a604 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" new file mode 100644 index 0000000..7edeaa0 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" new file mode 100644 index 0000000..ccd0993 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" new file mode 100644 index 0000000..0cbf80d --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" new file mode 100644 index 0000000..613ec69 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" new file mode 100644 index 0000000..3f5083a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" new file mode 100644 index 0000000..7edeaa0 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image012.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image012.jpg" new file mode 100644 index 0000000..0cbf80d --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image012.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/themedata.thmx" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/themedata.thmx" new file mode 100644 index 0000000..67aae0a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/themedata.thmx" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/colorschememapping.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/colorschememapping.xml" new file mode 100644 index 0000000..6a0069c --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/colorschememapping.xml" @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java new file mode 100644 index 0000000..77c14a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.device.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dictmap.DeviceGroupQueryDict; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.vo.BusDeviceGroupVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; + +/** + * 设备分组管理信息Controller + * + * @author lwh + * @date 2025-06-11 + */ +@Api(tags = "设备分组管理信息") +@RestController +@RequestMapping("/device/group") +public class BusDeviceGroupController extends BaseController { + + private final IBusDeviceGroupService busDeviceGroupService; + private final AbstractPermissionContext abstractPermissionContext; + + public BusDeviceGroupController(IBusDeviceGroupService busDeviceGroupService, AbstractPermissionContext abstractPermissionContext) { + this.busDeviceGroupService = busDeviceGroupService; + this.abstractPermissionContext = abstractPermissionContext; + } + + @ApiOperation(value = "列表查询") + @GetMapping(value = "/list") + public ResponseDataDTO> list(BusDeviceGroupVO busDeviceGroupVO) { + QueryWrapper query = busDeviceGroupVO.genQuery(); + return ResponseDataDTO.success(busDeviceGroupService.list(query)); + } + + @ApiOperation(value = "分组树结构查询") + @BussinessLog(value = "分组树结构查询") + @GetMapping(value = "/tree") + public ResponseDataDTO> groupTree() { + List groupDTOList = busDeviceGroupService.groupTree(); + return ResponseDataDTO.success(groupDTOList); + } + + @BussinessLog(value = "设备分组分页查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "分页查询") + @GetMapping(value = "/listPage") + public ResponseDataDTO> listPage(BusDeviceGroupVO busDeviceGroupVO) { + Page page = PageFactory.defaultPage(); + QueryWrapper query = busDeviceGroupVO.genQuery(); + List list = busDeviceGroupService.selectBusDeviceGroupPage(page, query); + page.setRecords(list); + return ResponseDataDTO.success(super.packForBT(page)); + } + + @BussinessLog(value = "设备分组新增", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "新增接口") + @PostMapping(value = "/add") + public ResponseDataDTO add(@RequestBody BusDeviceGroup busDeviceGroup) { + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + busDeviceGroup.setCreateId(user.getId()); + busDeviceGroup.setCreateTime(new Date()); + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.save(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组修改", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @PostMapping(value = "/update") + public ResponseDataDTO update(@RequestBody BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.updateById(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组删除", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "删除接口") + @GetMapping(value = "/delete") + public ResponseDataDTO delete(String id) { + busDeviceGroupService.removeById(id); + return ResponseDataDTO.success(); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { + busDeviceGroupService.removeByIds(ids.getIds()); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组详情查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "详情查询") + @GetMapping(value = "/detail") + public ResponseDataDTO detail(String id) { + return ResponseDataDTO.success(busDeviceGroupService.getById(id)); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java new file mode 100644 index 0000000..9d3726f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.device.dao; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import java.util.List; +/** + *

+ * 设备分组管理信息 Mapper 接口 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface BusDeviceGroupMapper extends BaseMapper { +/** +* 设备分组管理信息 分页检索 +*/ +List selectBusDeviceGroupPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml new file mode 100644 index 0000000..a6dd84f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + id + , + create_time as createTime , + update_time as updateTime , + group_name as groupName , + create_id as createId , + dept_id as deptId + + + a + . + id + , + a.create_time + as createTime , + a.update_time + as updateTime , + a.group_name + as groupName , + a.create_id + as createId , + a.dept_id + as deptId + + + + + + and group_name like concat('%',#{request.groupName},'%') + + + and dept_id = #{request.deptId} + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java new file mode 100644 index 0000000..a821e92 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dictmap; + +import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap; + +public class DeviceGroupQueryDict extends AbstractDictMap { + + @Override + public void init() { + put("id", "主键"); + put("deptId", "所属组织"); + put("groupName", "分组名称"); + + put("deptName", "所属单位"); + } + + @Override + protected void initBeWrapped() { + + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java new file mode 100644 index 0000000..d8d1712 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.device.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + + +/** + * 设备分组管理信息对象 bus_device_group + * + * @author lwh + * @date 2025-06-11 + */ +@Data +@TableName("bus_device_group") +public class BusDeviceGroup extends Model { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键", dataType = "Long") + @TableField("id") + private Long id; + + @ApiModelProperty(value = "创建时间", dataType = "Date") + @TableField("create_time") + private Date createTime; + + @ApiModelProperty(value = "修改时间", dataType = "Date") + @TableField("update_time") + private Date updateTime; + + @ApiModelProperty(value = "分组名称", dataType = "String") + @TableField("group_name") + private String groupName; + + @ApiModelProperty(value = "创建人", dataType = "Long") + @TableField("create_id") + private Long createId; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; + @TableField(exist = false) + private String deptName; + + @Override + public String toString() { + return "BusDeviceGroup{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "groupName=" + groupName + + "createId=" + createId + + "deptId=" + deptId + + "}"; + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java new file mode 100644 index 0000000..d2cee5c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; + +import java.util.List; + + +/** + *

+ * 设备分组管理信息 服务类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface IBusDeviceGroupService extends IService { + /** + * 设备分组管理信息 分页检索 + */ + List selectBusDeviceGroupPage(Page page, QueryWrapper query); + + /** + * 树结构查询 + * + * @return + */ + List groupTree(); + + DeptDTO convertDeptDTO(BusDeviceGroup group); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java new file mode 100644 index 0000000..a6f08b7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java @@ -0,0 +1,139 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractAuthService; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.modular.data.constants.DataConstants; +import com.casic.missiles.modular.device.dao.BusDeviceGroupMapper; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; +import com.casic.missiles.modular.system.model.Dept; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.data.constants.DataConstants.NODE_TYPE_DEPT; + + +/** + *

+ * 设备分组管理信息 服务实现类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +@Service +public class BusDeviceGroupServiceImpl extends ServiceImpl implements IBusDeviceGroupService { + @Resource + private AbstractDeptService deptService; + + @Override + public List selectBusDeviceGroupPage(Page page, QueryWrapper query) { + List list = this.baseMapper.selectBusDeviceGroupPage(page, query); + list.forEach(this::wrapperInfo); + return list; + } + + @Override + public List groupTree() { + List deptList = deviceDept(); + + List deptDTOS = new ArrayList<>(); + //树节点根 + List rootIds = new ArrayList<>(); + Set normalIds = new HashSet<>(); + + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setId(dept.getId()); + deptDTO.setPid(dept.getPid()); + deptDTO.setFullName(dept.getFullName()); + deptDTO.setName(dept.getSimpleName()); + deptDTO.setType(NODE_TYPE_DEPT); + + normalIds.add(dept.getId()); + deptDTOS.add(deptDTO); + + + //查询该组织下分组信息 + LambdaQueryWrapper deviceQuery = new LambdaQueryWrapper<>(); + deviceQuery.eq(BusDeviceGroup::getDeptId, deptDTO.getId()); + + deviceQuery.orderByAsc(BusDeviceGroup::getGroupName); + List deviceInfos = this.list(deviceQuery); + List deptDTOList = new ArrayList<>(); + for (BusDeviceGroup group : deviceInfos) { + DeptDTO deptDto = this.convertDeptDTO(group); + deptDTOList.add(deptDto); + } + deptDTO.setChildrenNodes(deptDTOList); + } + + for (DeptDTO deptDTO : deptDTOS) { + if (!normalIds.contains(deptDTO.getPid())) { + rootIds.add(deptDTO.getPid()); + } + } + + //过滤根节点 + DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); + List newTree = new ArrayList<>(); + rootIds = rootIds.stream().distinct().collect(Collectors.toList()); + for (Long rootId : rootIds) { + abstractTreeBuildFactory.setRootId(rootId + ""); + newTree.addAll(abstractTreeBuildFactory.doTreeBuild(deptDTOS)); + } + return newTree; + } + + public DeptDTO convertDeptDTO(BusDeviceGroup group) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setType(DataConstants.NODE_TYPE_GROUP); + deptDTO.setId(group.getId()); + deptDTO.setPid(group.getDeptId()); + deptDTO.setName(group.getGroupName()); + deptDTO.setGroup(group); + return deptDTO; + } + + @Resource + private AbstractAuthService authService; + + private List deviceDept() { + //查询可见组织 + DataScope scope = authService.getLoginUserDataScope(); + AuthUser user = authService.getLoginUser(); + + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); + deptQuery.inSql(Dept::getId, "select dept_id from bus_device_info "); + if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums().getCode())) { + deptQuery.in(Dept::getId, scope.getDeptIds()); + } + deptQuery.orderByAsc(Dept::getNum); + + List deptList = deptService.list(deptQuery); + return deptList; + } + + @Override + public List list() { + List list = super.list(); + list.forEach(this::wrapperInfo); + return list; + } + + private void wrapperInfo(BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setDeptName(deptService.getDeptName(busDeviceGroup.getDeptId())); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java new file mode 100644 index 0000000..413d7ac --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.device.vo; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 设备分组管理信息对象VO + * + * @author lwh + * @date 2025-06-11 + */ +@Data +public class BusDeviceGroupVO { + private static final long serialVersionUID = 1L; + + + @ApiModelProperty(value = "分组名称", dataType = "String") + private String groupName; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + private Long deptId; + + public QueryWrapper genQuery() { + QueryWrapper query = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(groupName)) { + query.like("group_name", groupName); + } + if (deptId != null) { + query.eq("dept_id", deptId); + } + return query; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java new file mode 100644 index 0000000..477435e --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java @@ -0,0 +1,163 @@ +package com.casic.missiles.modular.device.dto.risk; + +import cn.hutool.core.convert.Convert; +import com.casic.missiles.modular.device.model.RiskPointInfo; +import lombok.Data; + +@Data +public class SyncRiskDTO { + /** + * 主键 + */ + private String id; + private String name; + /** + * 重大风险 + * 风险等级 + */ + private String hazardLevel; + /** + * 危险因素 + */ + private String riskFactors; + /** + * 所属单位 + */ + private String affiliatedUnit; + /** + * 所属部门 + */ + private String department; + + /** + * 定员 + */ + private String staffing; + + /** + * 定量 + */ + private String ration; + + /** + * 地理位置 + */ + private String geographicalPosition; + + /** + * 责任人 + */ + private String personLiable; + + /** + * 现场负责人 + */ + private String siteLeader; + + /** + * 主要设备、设施设计制造单位 + */ + private String zysbZzdw; + + /** + * 所在单位 + */ + private String szdw; + + /** + * 作业人数 + */ + private String numberOperators; + + /** + * 主要性能参数 + */ + private String mainPerformanceParameters; + + /** + * 工作环境参数 + */ + private String workingEnvironmentParameters; + + /** + * 安装单位 + */ + private String installationUnit; + + /** + * 投产日期 + */ + private String productionDate; + + /** + * 设备总数 + */ + private String totalEquipment; + + /** + * 备注 + */ + private String note; + + /** + * 创建用户 + */ + private String createUser; + private String createTime; + private String updateUser; + private String updateTime; + /** + * 是否删除0:否;1:是(接口已过滤掉1的数据) + */ + private Integer isDel; + + /** + * 行政区域 + */ + private String xzqy; + /** + * 街道 + */ + private String jdxx; + + /** + * 楼房 + */ + private String loufang; + + /** + * 楼层 + */ + private String louceng; + + /** + * 房间 + */ + private String roomName; + /** + * 所属单位编码 + */ + private String affiliatedUnitsCode; + + /** + * 危险性质 + */ + private String hazardousNature; + + public RiskPointInfo convertToRisk(RiskPointInfo pointInfo) { + //风险点缺少密级 + pointInfo.setSecretLevel("1"); + // hazardLevel 是否有字典值? + + if (department != null) { + pointInfo.setDeptId(Convert.toLong(department)); + } + pointInfo.setNature(hazardousNature); + pointInfo.setRiskName(name); + pointInfo.setAddress(geographicalPosition); + pointInfo.setTargetId(id); + //默认类型为1 + pointInfo.setRiskType(1); + return pointInfo; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java new file mode 100644 index 0000000..08e89a0 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.device.handler; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class BoxDefaultHttpHeaderHandler extends DefaultHttpHeaderHandler { + /** + * 代理服务IP + */ + private String xTargetHost; + + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Access-Token", token); + } + if (StrUtil.isNotEmpty(xTargetHost)){ + base.addHeader("X-TARGET-HOST", xTargetHost); + } + } + + public String getXTargetHost() { + return xTargetHost; + } + + public void setXTargetHost(String XTargetHost) { + this.xTargetHost = XTargetHost; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java new file mode 100644 index 0000000..903e567 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.http; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class RiskHttpHandler extends DefaultHttpHeaderHandler { + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Authorization", token); + } + + } +} + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java new file mode 100644 index 0000000..9f75f42 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java @@ -0,0 +1,35 @@ +package com.casic.missiles.modular.task; + +import com.casic.missiles.modular.device.service.IRiskPointInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +@Slf4j +@Component +public class RiskTask { + + @Value("${casic.risk.open:false}") + private Boolean open; + + @Resource + private IRiskPointInfoService riskPointInfoService; + + /** + * 设备信息同步0 + * 每30分钟采集一次 + */ + @Scheduled(cron = "${casic.risk.corn:0 */1 * * * *}") + public void device() { + //风险点数据同步 + if (open) { + log.info("risk sync start...."); + riskPointInfoService.loadRiskInfo(); + log.info("risk sync end...."); + } + } + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java new file mode 100644 index 0000000..e4ca4f1 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.util; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.modular.http.RiskHttpHandler; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import com.casic.missiles.modular.system.utils.HttpUtils; + +import java.util.HashMap; +import java.util.Map; + +public class RiskHttpUtil { + public static final String loginUrl = "/rest/platform/systemLogin"; + public static final String pointDataUrl = "/rest/platform/dangerPointData"; + + public static String login(String baseUrl, String secret) { + Map param = new HashMap<>(); + param.put("secret", secret); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + defaultHeaderHandler.setJson(true); + String res = HttpUtils.sendPost(baseUrl + loginUrl, param, "", defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + public static String pointData(String baseUrl, String token) { + Map param = new HashMap<>(); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + + String res = HttpUtils.sendGet(baseUrl + pointDataUrl, param, token, defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + /** + * 登录数据加密 + * @param appId 加密id + * @param publicKey 公钥 + * @return + * @throws Exception + */ + public static String encrypt(String appId,String publicKey) throws Exception { + long ts = System.currentTimeMillis(); + return RSAUtils.encrypt(appId+"_"+ts,publicKey); + } + + +} diff --git a/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java new file mode 100644 index 0000000..9ba1e2a --- /dev/null +++ b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java @@ -0,0 +1,62 @@ +package com.casic.missiles.test; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.TypeReference; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.risk.SyncRiskDTO; +import com.casic.missiles.modular.device.util.AesUtil; +import com.casic.missiles.modular.util.RiskHttpUtil; +import com.casic.missiles.modular.util.WvpUtil; +import com.casic.missiles.modular.wvp.dto.MvpResponseDTO; + +import java.io.FileInputStream; +import java.security.MessageDigest; +import java.util.Date; +import java.util.HashMap; +import java.util.List; + +public class RiskTest { + public static void main(String[] args) throws Exception { +// File file = new File("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// String task = ZipFileUtil.getZipHandleTask("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(task); +// String md5 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(md5); +// String md52 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241122.zip"); +// System.out.println(md52); + + testDeviceLogin(); + System.out.println( DateUtil.offsetMinute(new Date(),-5)); + } + public static void testDeviceLogin() throws Exception { + Long time = System.currentTimeMillis(); + String str = "FXDDT_" + time; + String pubKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCynMBxzoNBemZKuxjlZzp04Lx/b0j1xRUznBKjlQSATwc+1DaxBpKdT4WfqAuFlSQLA7qLdntXw2cvUEvRxfdjJp2KfZLkEYRmYx3LT51WdCmouQREtMrR6j3mri8jV8TjktGCmBFMKX7eGeQM8O249yVjby6502bzZXehQ707JQIDAQAB"; + String sec = RSAUtils.encrypt(str, pubKey); + System.out.println(sec); + String priKey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALKcwHHOg0F6Zkq7GOVnOnTgvH9vSPXFFTOcEqOVBIBPBz7UNrEGkp1PhZ+oC4WVJAsDuot2e1fDZy9QS9HF92MmnYp9kuQRhGZjHctPnVZ0Kai5BES0ytHqPeauLyNXxOOS0YKYEUwpft4Z5Azw7bj3JWNvLrnTZvNld6FDvTslAgMBAAECgYAqN/kZLYpC+O6i7XSmDO95XwHPUXu6dDpdt5+EQR4OQh/hTwIaeAZB3uEj6vHGQomBfQEkI/5lsU97lIxHanbd+Hro7JyIhsGD5LR5XnZHVKzFiZW62OIU6FI9dlQNN8miiblnmyDwiMA3okaHl0O7qQjZ+IvY2csgmJc7AXpPpQJBAOhrhcfWFcgffj2O6HYNlBLFfbboc/ZzrEADDXKnxRSHlo5o8W+6gylG/L2NGtbag5S68B9VYzdkSQ1++5C+Ws8CQQDEu7h311PLEiKgqzGHpjzadQETmt/jMadaKQmT0TZwNVi6X8lR17U5hF8dAqZzUzr9kUC0HRIZhg4Uv1v3W3fLAkB4YPhxgJjXhjhEefg87Nt8vX1Xdx5Yz6CvpuUYNX0GHRQFvqUOUXQNtQ7CvorgLV1pc0lbcUZqMi8EJnj1hyJRAkEAjHXWm8GiMt+M15fCsi3vTq2xChVOekBuUsHv85iwvGZqJg7ThtpyqlEnM2g7/STUfkvhnXcQACclEI0blTy6BwJAPmFyhU+d0ejVpbc53TdrL2HqYYUHi/tTy/dtUa7lbypzdwwJ2M1Tv5PE8sQxr9tgMbebfxVb/RFKdiCCtzC4ng=="; + String s = RSAUtils.decrypt(sec,priKey); + System.out.println(s); + + + String appId = "5d7d4d81a64f4b8f"; + String publicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB"; + String secret = RiskHttpUtil.encrypt(appId,publicKey); + System.out.println(secret); + String res = RiskHttpUtil.login("http://101.201.36.107:12388",secret); + System.out.println(res); + JSONObject jsonObject = JSON.parseObject(res); + String token = jsonObject.getString("data"); + String resPoint = RiskHttpUtil.pointData("http://101.201.36.107:12388",token); + System.out.println(resPoint); + + + ResponseDataDTO> riskPointRes = JSON.parseObject(resPoint, new TypeReference>>() { + }); + + } + +} diff --git a/casic-web/src/main/resources/doc/20250609.md b/casic-web/src/main/resources/doc/20250609.md new file mode 100644 index 0000000..0cb3464 --- /dev/null +++ b/casic-web/src/main/resources/doc/20250609.md @@ -0,0 +1,30 @@ +## 一、数据库更新 + +1. 设备分组数据库增加 + +``` +ALTER TABLE bus_device_info ADD COLUMN GROUP_ID bigint; + +create table bus_device_group +( + id bigint not null comment '主键', + create_time datetime comment '创建时间', + update_time datetime comment '修改时间', + group_name varchar(255) comment '分组名称', + create_id bigint comment '创建人', + dept_id bigint comment '所属组织' +); + +alter table bus_device_group comment '设备分组管理信息'; + +``` + +casic.tenant.excludes 配置项中增加 bus_device_group + + +casic.no-login-urls 中增加如下配置 +,/sync/risk/dept,/sync/risk/user/list,/sync/risk/device/list + + + + diff --git a/casic-web/src/main/resources/doc/20250624.md b/casic-web/src/main/resources/doc/20250624.md new file mode 100644 index 0000000..7af561d --- /dev/null +++ b/casic-web/src/main/resources/doc/20250624.md @@ -0,0 +1,34 @@ +## 一、数据库更新 + +1. 风险点表添加同步ID + +``` +ALTER TABLE risk_point_info ADD COLUMN TARGET_ID VARCHAR(255); + +``` + +2. 风险点相关配置项 + +casic.risk.open 默认false 不开启 开启需配置true +casic.risk.corn 定时时间 默认0 */5 * * * * 5分钟 +casic.risk.appId 默认 5d7d4d81a64f4b8f 如变更需更改 +casic.risk.publicKey 公钥 默认MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB +casic.risk.host 风险点地址, 默认http://101.201.36.107:12388 生产需更改 + +3. 增加字典值 + hazardLevelName 风险危险等级(706映射) + 1 低风险 + 1 一般风险 + 2 较大风险 + 3 重大风险 + 以上字典值以706风险等级名称对应本系统风险点1 2 3 等级,如果706风险等级名称变更 修改对应字典值名称即可 + +4. 盒子代理服务模块添加 + 增加配置项 + casic.video.box.proxy 192.168.83.37:30064 此处需变更为部署代理nginx的ip及端口,具体配置参见国标级联及代理服务配置说明 + + + + + + diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" new file mode 100644 index 0000000..30cdcbd --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" new file mode 100644 index 0000000..6a0069c --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" new file mode 100644 index 0000000..f775124 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" new file mode 100644 index 0000000..9f65ff1 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" new file mode 100644 index 0000000..613ec69 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" new file mode 100644 index 0000000..1614b04 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" new file mode 100644 index 0000000..3f5083a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" new file mode 100644 index 0000000..134a604 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" new file mode 100644 index 0000000..7edeaa0 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" new file mode 100644 index 0000000..ccd0993 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" new file mode 100644 index 0000000..0cbf80d --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" new file mode 100644 index 0000000..613ec69 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" new file mode 100644 index 0000000..3f5083a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" new file mode 100644 index 0000000..7edeaa0 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image012.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image012.jpg" new file mode 100644 index 0000000..0cbf80d --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image012.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/themedata.thmx" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/themedata.thmx" new file mode 100644 index 0000000..67aae0a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/themedata.thmx" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/colorschememapping.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/colorschememapping.xml" new file mode 100644 index 0000000..6a0069c --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/colorschememapping.xml" @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image001.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image001.png" new file mode 100644 index 0000000..1614b04 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image001.png" Binary files differ diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java new file mode 100644 index 0000000..77c14a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.device.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dictmap.DeviceGroupQueryDict; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.vo.BusDeviceGroupVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; + +/** + * 设备分组管理信息Controller + * + * @author lwh + * @date 2025-06-11 + */ +@Api(tags = "设备分组管理信息") +@RestController +@RequestMapping("/device/group") +public class BusDeviceGroupController extends BaseController { + + private final IBusDeviceGroupService busDeviceGroupService; + private final AbstractPermissionContext abstractPermissionContext; + + public BusDeviceGroupController(IBusDeviceGroupService busDeviceGroupService, AbstractPermissionContext abstractPermissionContext) { + this.busDeviceGroupService = busDeviceGroupService; + this.abstractPermissionContext = abstractPermissionContext; + } + + @ApiOperation(value = "列表查询") + @GetMapping(value = "/list") + public ResponseDataDTO> list(BusDeviceGroupVO busDeviceGroupVO) { + QueryWrapper query = busDeviceGroupVO.genQuery(); + return ResponseDataDTO.success(busDeviceGroupService.list(query)); + } + + @ApiOperation(value = "分组树结构查询") + @BussinessLog(value = "分组树结构查询") + @GetMapping(value = "/tree") + public ResponseDataDTO> groupTree() { + List groupDTOList = busDeviceGroupService.groupTree(); + return ResponseDataDTO.success(groupDTOList); + } + + @BussinessLog(value = "设备分组分页查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "分页查询") + @GetMapping(value = "/listPage") + public ResponseDataDTO> listPage(BusDeviceGroupVO busDeviceGroupVO) { + Page page = PageFactory.defaultPage(); + QueryWrapper query = busDeviceGroupVO.genQuery(); + List list = busDeviceGroupService.selectBusDeviceGroupPage(page, query); + page.setRecords(list); + return ResponseDataDTO.success(super.packForBT(page)); + } + + @BussinessLog(value = "设备分组新增", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "新增接口") + @PostMapping(value = "/add") + public ResponseDataDTO add(@RequestBody BusDeviceGroup busDeviceGroup) { + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + busDeviceGroup.setCreateId(user.getId()); + busDeviceGroup.setCreateTime(new Date()); + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.save(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组修改", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @PostMapping(value = "/update") + public ResponseDataDTO update(@RequestBody BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.updateById(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组删除", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "删除接口") + @GetMapping(value = "/delete") + public ResponseDataDTO delete(String id) { + busDeviceGroupService.removeById(id); + return ResponseDataDTO.success(); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { + busDeviceGroupService.removeByIds(ids.getIds()); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组详情查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "详情查询") + @GetMapping(value = "/detail") + public ResponseDataDTO detail(String id) { + return ResponseDataDTO.success(busDeviceGroupService.getById(id)); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java new file mode 100644 index 0000000..9d3726f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.device.dao; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import java.util.List; +/** + *

+ * 设备分组管理信息 Mapper 接口 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface BusDeviceGroupMapper extends BaseMapper { +/** +* 设备分组管理信息 分页检索 +*/ +List selectBusDeviceGroupPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml new file mode 100644 index 0000000..a6dd84f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + id + , + create_time as createTime , + update_time as updateTime , + group_name as groupName , + create_id as createId , + dept_id as deptId + + + a + . + id + , + a.create_time + as createTime , + a.update_time + as updateTime , + a.group_name + as groupName , + a.create_id + as createId , + a.dept_id + as deptId + + + + + + and group_name like concat('%',#{request.groupName},'%') + + + and dept_id = #{request.deptId} + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java new file mode 100644 index 0000000..a821e92 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dictmap; + +import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap; + +public class DeviceGroupQueryDict extends AbstractDictMap { + + @Override + public void init() { + put("id", "主键"); + put("deptId", "所属组织"); + put("groupName", "分组名称"); + + put("deptName", "所属单位"); + } + + @Override + protected void initBeWrapped() { + + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java new file mode 100644 index 0000000..d8d1712 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.device.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + + +/** + * 设备分组管理信息对象 bus_device_group + * + * @author lwh + * @date 2025-06-11 + */ +@Data +@TableName("bus_device_group") +public class BusDeviceGroup extends Model { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键", dataType = "Long") + @TableField("id") + private Long id; + + @ApiModelProperty(value = "创建时间", dataType = "Date") + @TableField("create_time") + private Date createTime; + + @ApiModelProperty(value = "修改时间", dataType = "Date") + @TableField("update_time") + private Date updateTime; + + @ApiModelProperty(value = "分组名称", dataType = "String") + @TableField("group_name") + private String groupName; + + @ApiModelProperty(value = "创建人", dataType = "Long") + @TableField("create_id") + private Long createId; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; + @TableField(exist = false) + private String deptName; + + @Override + public String toString() { + return "BusDeviceGroup{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "groupName=" + groupName + + "createId=" + createId + + "deptId=" + deptId + + "}"; + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java new file mode 100644 index 0000000..d2cee5c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; + +import java.util.List; + + +/** + *

+ * 设备分组管理信息 服务类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface IBusDeviceGroupService extends IService { + /** + * 设备分组管理信息 分页检索 + */ + List selectBusDeviceGroupPage(Page page, QueryWrapper query); + + /** + * 树结构查询 + * + * @return + */ + List groupTree(); + + DeptDTO convertDeptDTO(BusDeviceGroup group); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java new file mode 100644 index 0000000..a6f08b7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java @@ -0,0 +1,139 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractAuthService; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.modular.data.constants.DataConstants; +import com.casic.missiles.modular.device.dao.BusDeviceGroupMapper; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; +import com.casic.missiles.modular.system.model.Dept; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.data.constants.DataConstants.NODE_TYPE_DEPT; + + +/** + *

+ * 设备分组管理信息 服务实现类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +@Service +public class BusDeviceGroupServiceImpl extends ServiceImpl implements IBusDeviceGroupService { + @Resource + private AbstractDeptService deptService; + + @Override + public List selectBusDeviceGroupPage(Page page, QueryWrapper query) { + List list = this.baseMapper.selectBusDeviceGroupPage(page, query); + list.forEach(this::wrapperInfo); + return list; + } + + @Override + public List groupTree() { + List deptList = deviceDept(); + + List deptDTOS = new ArrayList<>(); + //树节点根 + List rootIds = new ArrayList<>(); + Set normalIds = new HashSet<>(); + + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setId(dept.getId()); + deptDTO.setPid(dept.getPid()); + deptDTO.setFullName(dept.getFullName()); + deptDTO.setName(dept.getSimpleName()); + deptDTO.setType(NODE_TYPE_DEPT); + + normalIds.add(dept.getId()); + deptDTOS.add(deptDTO); + + + //查询该组织下分组信息 + LambdaQueryWrapper deviceQuery = new LambdaQueryWrapper<>(); + deviceQuery.eq(BusDeviceGroup::getDeptId, deptDTO.getId()); + + deviceQuery.orderByAsc(BusDeviceGroup::getGroupName); + List deviceInfos = this.list(deviceQuery); + List deptDTOList = new ArrayList<>(); + for (BusDeviceGroup group : deviceInfos) { + DeptDTO deptDto = this.convertDeptDTO(group); + deptDTOList.add(deptDto); + } + deptDTO.setChildrenNodes(deptDTOList); + } + + for (DeptDTO deptDTO : deptDTOS) { + if (!normalIds.contains(deptDTO.getPid())) { + rootIds.add(deptDTO.getPid()); + } + } + + //过滤根节点 + DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); + List newTree = new ArrayList<>(); + rootIds = rootIds.stream().distinct().collect(Collectors.toList()); + for (Long rootId : rootIds) { + abstractTreeBuildFactory.setRootId(rootId + ""); + newTree.addAll(abstractTreeBuildFactory.doTreeBuild(deptDTOS)); + } + return newTree; + } + + public DeptDTO convertDeptDTO(BusDeviceGroup group) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setType(DataConstants.NODE_TYPE_GROUP); + deptDTO.setId(group.getId()); + deptDTO.setPid(group.getDeptId()); + deptDTO.setName(group.getGroupName()); + deptDTO.setGroup(group); + return deptDTO; + } + + @Resource + private AbstractAuthService authService; + + private List deviceDept() { + //查询可见组织 + DataScope scope = authService.getLoginUserDataScope(); + AuthUser user = authService.getLoginUser(); + + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); + deptQuery.inSql(Dept::getId, "select dept_id from bus_device_info "); + if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums().getCode())) { + deptQuery.in(Dept::getId, scope.getDeptIds()); + } + deptQuery.orderByAsc(Dept::getNum); + + List deptList = deptService.list(deptQuery); + return deptList; + } + + @Override + public List list() { + List list = super.list(); + list.forEach(this::wrapperInfo); + return list; + } + + private void wrapperInfo(BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setDeptName(deptService.getDeptName(busDeviceGroup.getDeptId())); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java new file mode 100644 index 0000000..413d7ac --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.device.vo; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 设备分组管理信息对象VO + * + * @author lwh + * @date 2025-06-11 + */ +@Data +public class BusDeviceGroupVO { + private static final long serialVersionUID = 1L; + + + @ApiModelProperty(value = "分组名称", dataType = "String") + private String groupName; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + private Long deptId; + + public QueryWrapper genQuery() { + QueryWrapper query = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(groupName)) { + query.like("group_name", groupName); + } + if (deptId != null) { + query.eq("dept_id", deptId); + } + return query; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java new file mode 100644 index 0000000..477435e --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java @@ -0,0 +1,163 @@ +package com.casic.missiles.modular.device.dto.risk; + +import cn.hutool.core.convert.Convert; +import com.casic.missiles.modular.device.model.RiskPointInfo; +import lombok.Data; + +@Data +public class SyncRiskDTO { + /** + * 主键 + */ + private String id; + private String name; + /** + * 重大风险 + * 风险等级 + */ + private String hazardLevel; + /** + * 危险因素 + */ + private String riskFactors; + /** + * 所属单位 + */ + private String affiliatedUnit; + /** + * 所属部门 + */ + private String department; + + /** + * 定员 + */ + private String staffing; + + /** + * 定量 + */ + private String ration; + + /** + * 地理位置 + */ + private String geographicalPosition; + + /** + * 责任人 + */ + private String personLiable; + + /** + * 现场负责人 + */ + private String siteLeader; + + /** + * 主要设备、设施设计制造单位 + */ + private String zysbZzdw; + + /** + * 所在单位 + */ + private String szdw; + + /** + * 作业人数 + */ + private String numberOperators; + + /** + * 主要性能参数 + */ + private String mainPerformanceParameters; + + /** + * 工作环境参数 + */ + private String workingEnvironmentParameters; + + /** + * 安装单位 + */ + private String installationUnit; + + /** + * 投产日期 + */ + private String productionDate; + + /** + * 设备总数 + */ + private String totalEquipment; + + /** + * 备注 + */ + private String note; + + /** + * 创建用户 + */ + private String createUser; + private String createTime; + private String updateUser; + private String updateTime; + /** + * 是否删除0:否;1:是(接口已过滤掉1的数据) + */ + private Integer isDel; + + /** + * 行政区域 + */ + private String xzqy; + /** + * 街道 + */ + private String jdxx; + + /** + * 楼房 + */ + private String loufang; + + /** + * 楼层 + */ + private String louceng; + + /** + * 房间 + */ + private String roomName; + /** + * 所属单位编码 + */ + private String affiliatedUnitsCode; + + /** + * 危险性质 + */ + private String hazardousNature; + + public RiskPointInfo convertToRisk(RiskPointInfo pointInfo) { + //风险点缺少密级 + pointInfo.setSecretLevel("1"); + // hazardLevel 是否有字典值? + + if (department != null) { + pointInfo.setDeptId(Convert.toLong(department)); + } + pointInfo.setNature(hazardousNature); + pointInfo.setRiskName(name); + pointInfo.setAddress(geographicalPosition); + pointInfo.setTargetId(id); + //默认类型为1 + pointInfo.setRiskType(1); + return pointInfo; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java new file mode 100644 index 0000000..08e89a0 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.device.handler; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class BoxDefaultHttpHeaderHandler extends DefaultHttpHeaderHandler { + /** + * 代理服务IP + */ + private String xTargetHost; + + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Access-Token", token); + } + if (StrUtil.isNotEmpty(xTargetHost)){ + base.addHeader("X-TARGET-HOST", xTargetHost); + } + } + + public String getXTargetHost() { + return xTargetHost; + } + + public void setXTargetHost(String XTargetHost) { + this.xTargetHost = XTargetHost; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java new file mode 100644 index 0000000..903e567 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.http; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class RiskHttpHandler extends DefaultHttpHeaderHandler { + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Authorization", token); + } + + } +} + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java new file mode 100644 index 0000000..9f75f42 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java @@ -0,0 +1,35 @@ +package com.casic.missiles.modular.task; + +import com.casic.missiles.modular.device.service.IRiskPointInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +@Slf4j +@Component +public class RiskTask { + + @Value("${casic.risk.open:false}") + private Boolean open; + + @Resource + private IRiskPointInfoService riskPointInfoService; + + /** + * 设备信息同步0 + * 每30分钟采集一次 + */ + @Scheduled(cron = "${casic.risk.corn:0 */1 * * * *}") + public void device() { + //风险点数据同步 + if (open) { + log.info("risk sync start...."); + riskPointInfoService.loadRiskInfo(); + log.info("risk sync end...."); + } + } + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java new file mode 100644 index 0000000..e4ca4f1 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.util; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.modular.http.RiskHttpHandler; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import com.casic.missiles.modular.system.utils.HttpUtils; + +import java.util.HashMap; +import java.util.Map; + +public class RiskHttpUtil { + public static final String loginUrl = "/rest/platform/systemLogin"; + public static final String pointDataUrl = "/rest/platform/dangerPointData"; + + public static String login(String baseUrl, String secret) { + Map param = new HashMap<>(); + param.put("secret", secret); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + defaultHeaderHandler.setJson(true); + String res = HttpUtils.sendPost(baseUrl + loginUrl, param, "", defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + public static String pointData(String baseUrl, String token) { + Map param = new HashMap<>(); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + + String res = HttpUtils.sendGet(baseUrl + pointDataUrl, param, token, defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + /** + * 登录数据加密 + * @param appId 加密id + * @param publicKey 公钥 + * @return + * @throws Exception + */ + public static String encrypt(String appId,String publicKey) throws Exception { + long ts = System.currentTimeMillis(); + return RSAUtils.encrypt(appId+"_"+ts,publicKey); + } + + +} diff --git a/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java new file mode 100644 index 0000000..9ba1e2a --- /dev/null +++ b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java @@ -0,0 +1,62 @@ +package com.casic.missiles.test; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.TypeReference; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.risk.SyncRiskDTO; +import com.casic.missiles.modular.device.util.AesUtil; +import com.casic.missiles.modular.util.RiskHttpUtil; +import com.casic.missiles.modular.util.WvpUtil; +import com.casic.missiles.modular.wvp.dto.MvpResponseDTO; + +import java.io.FileInputStream; +import java.security.MessageDigest; +import java.util.Date; +import java.util.HashMap; +import java.util.List; + +public class RiskTest { + public static void main(String[] args) throws Exception { +// File file = new File("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// String task = ZipFileUtil.getZipHandleTask("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(task); +// String md5 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(md5); +// String md52 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241122.zip"); +// System.out.println(md52); + + testDeviceLogin(); + System.out.println( DateUtil.offsetMinute(new Date(),-5)); + } + public static void testDeviceLogin() throws Exception { + Long time = System.currentTimeMillis(); + String str = "FXDDT_" + time; + String pubKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCynMBxzoNBemZKuxjlZzp04Lx/b0j1xRUznBKjlQSATwc+1DaxBpKdT4WfqAuFlSQLA7qLdntXw2cvUEvRxfdjJp2KfZLkEYRmYx3LT51WdCmouQREtMrR6j3mri8jV8TjktGCmBFMKX7eGeQM8O249yVjby6502bzZXehQ707JQIDAQAB"; + String sec = RSAUtils.encrypt(str, pubKey); + System.out.println(sec); + String priKey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALKcwHHOg0F6Zkq7GOVnOnTgvH9vSPXFFTOcEqOVBIBPBz7UNrEGkp1PhZ+oC4WVJAsDuot2e1fDZy9QS9HF92MmnYp9kuQRhGZjHctPnVZ0Kai5BES0ytHqPeauLyNXxOOS0YKYEUwpft4Z5Azw7bj3JWNvLrnTZvNld6FDvTslAgMBAAECgYAqN/kZLYpC+O6i7XSmDO95XwHPUXu6dDpdt5+EQR4OQh/hTwIaeAZB3uEj6vHGQomBfQEkI/5lsU97lIxHanbd+Hro7JyIhsGD5LR5XnZHVKzFiZW62OIU6FI9dlQNN8miiblnmyDwiMA3okaHl0O7qQjZ+IvY2csgmJc7AXpPpQJBAOhrhcfWFcgffj2O6HYNlBLFfbboc/ZzrEADDXKnxRSHlo5o8W+6gylG/L2NGtbag5S68B9VYzdkSQ1++5C+Ws8CQQDEu7h311PLEiKgqzGHpjzadQETmt/jMadaKQmT0TZwNVi6X8lR17U5hF8dAqZzUzr9kUC0HRIZhg4Uv1v3W3fLAkB4YPhxgJjXhjhEefg87Nt8vX1Xdx5Yz6CvpuUYNX0GHRQFvqUOUXQNtQ7CvorgLV1pc0lbcUZqMi8EJnj1hyJRAkEAjHXWm8GiMt+M15fCsi3vTq2xChVOekBuUsHv85iwvGZqJg7ThtpyqlEnM2g7/STUfkvhnXcQACclEI0blTy6BwJAPmFyhU+d0ejVpbc53TdrL2HqYYUHi/tTy/dtUa7lbypzdwwJ2M1Tv5PE8sQxr9tgMbebfxVb/RFKdiCCtzC4ng=="; + String s = RSAUtils.decrypt(sec,priKey); + System.out.println(s); + + + String appId = "5d7d4d81a64f4b8f"; + String publicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB"; + String secret = RiskHttpUtil.encrypt(appId,publicKey); + System.out.println(secret); + String res = RiskHttpUtil.login("http://101.201.36.107:12388",secret); + System.out.println(res); + JSONObject jsonObject = JSON.parseObject(res); + String token = jsonObject.getString("data"); + String resPoint = RiskHttpUtil.pointData("http://101.201.36.107:12388",token); + System.out.println(resPoint); + + + ResponseDataDTO> riskPointRes = JSON.parseObject(resPoint, new TypeReference>>() { + }); + + } + +} diff --git a/casic-web/src/main/resources/doc/20250609.md b/casic-web/src/main/resources/doc/20250609.md new file mode 100644 index 0000000..0cb3464 --- /dev/null +++ b/casic-web/src/main/resources/doc/20250609.md @@ -0,0 +1,30 @@ +## 一、数据库更新 + +1. 设备分组数据库增加 + +``` +ALTER TABLE bus_device_info ADD COLUMN GROUP_ID bigint; + +create table bus_device_group +( + id bigint not null comment '主键', + create_time datetime comment '创建时间', + update_time datetime comment '修改时间', + group_name varchar(255) comment '分组名称', + create_id bigint comment '创建人', + dept_id bigint comment '所属组织' +); + +alter table bus_device_group comment '设备分组管理信息'; + +``` + +casic.tenant.excludes 配置项中增加 bus_device_group + + +casic.no-login-urls 中增加如下配置 +,/sync/risk/dept,/sync/risk/user/list,/sync/risk/device/list + + + + diff --git a/casic-web/src/main/resources/doc/20250624.md b/casic-web/src/main/resources/doc/20250624.md new file mode 100644 index 0000000..7af561d --- /dev/null +++ b/casic-web/src/main/resources/doc/20250624.md @@ -0,0 +1,34 @@ +## 一、数据库更新 + +1. 风险点表添加同步ID + +``` +ALTER TABLE risk_point_info ADD COLUMN TARGET_ID VARCHAR(255); + +``` + +2. 风险点相关配置项 + +casic.risk.open 默认false 不开启 开启需配置true +casic.risk.corn 定时时间 默认0 */5 * * * * 5分钟 +casic.risk.appId 默认 5d7d4d81a64f4b8f 如变更需更改 +casic.risk.publicKey 公钥 默认MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB +casic.risk.host 风险点地址, 默认http://101.201.36.107:12388 生产需更改 + +3. 增加字典值 + hazardLevelName 风险危险等级(706映射) + 1 低风险 + 1 一般风险 + 2 较大风险 + 3 重大风险 + 以上字典值以706风险等级名称对应本系统风险点1 2 3 等级,如果706风险等级名称变更 修改对应字典值名称即可 + +4. 盒子代理服务模块添加 + 增加配置项 + casic.video.box.proxy 192.168.83.37:30064 此处需变更为部署代理nginx的ip及端口,具体配置参见国标级联及代理服务配置说明 + + + + + + diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" new file mode 100644 index 0000000..30cdcbd --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" new file mode 100644 index 0000000..6a0069c --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" new file mode 100644 index 0000000..f775124 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" new file mode 100644 index 0000000..9f65ff1 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" new file mode 100644 index 0000000..613ec69 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" new file mode 100644 index 0000000..1614b04 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" new file mode 100644 index 0000000..3f5083a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" new file mode 100644 index 0000000..134a604 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" new file mode 100644 index 0000000..7edeaa0 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" new file mode 100644 index 0000000..ccd0993 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" new file mode 100644 index 0000000..0cbf80d --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" new file mode 100644 index 0000000..613ec69 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" new file mode 100644 index 0000000..3f5083a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" new file mode 100644 index 0000000..7edeaa0 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image012.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image012.jpg" new file mode 100644 index 0000000..0cbf80d --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image012.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/themedata.thmx" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/themedata.thmx" new file mode 100644 index 0000000..67aae0a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/themedata.thmx" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/colorschememapping.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/colorschememapping.xml" new file mode 100644 index 0000000..6a0069c --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/colorschememapping.xml" @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image001.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image001.png" new file mode 100644 index 0000000..1614b04 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image001.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.gif" new file mode 100644 index 0000000..92bd844 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.gif" Binary files differ diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java new file mode 100644 index 0000000..77c14a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.device.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dictmap.DeviceGroupQueryDict; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.vo.BusDeviceGroupVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; + +/** + * 设备分组管理信息Controller + * + * @author lwh + * @date 2025-06-11 + */ +@Api(tags = "设备分组管理信息") +@RestController +@RequestMapping("/device/group") +public class BusDeviceGroupController extends BaseController { + + private final IBusDeviceGroupService busDeviceGroupService; + private final AbstractPermissionContext abstractPermissionContext; + + public BusDeviceGroupController(IBusDeviceGroupService busDeviceGroupService, AbstractPermissionContext abstractPermissionContext) { + this.busDeviceGroupService = busDeviceGroupService; + this.abstractPermissionContext = abstractPermissionContext; + } + + @ApiOperation(value = "列表查询") + @GetMapping(value = "/list") + public ResponseDataDTO> list(BusDeviceGroupVO busDeviceGroupVO) { + QueryWrapper query = busDeviceGroupVO.genQuery(); + return ResponseDataDTO.success(busDeviceGroupService.list(query)); + } + + @ApiOperation(value = "分组树结构查询") + @BussinessLog(value = "分组树结构查询") + @GetMapping(value = "/tree") + public ResponseDataDTO> groupTree() { + List groupDTOList = busDeviceGroupService.groupTree(); + return ResponseDataDTO.success(groupDTOList); + } + + @BussinessLog(value = "设备分组分页查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "分页查询") + @GetMapping(value = "/listPage") + public ResponseDataDTO> listPage(BusDeviceGroupVO busDeviceGroupVO) { + Page page = PageFactory.defaultPage(); + QueryWrapper query = busDeviceGroupVO.genQuery(); + List list = busDeviceGroupService.selectBusDeviceGroupPage(page, query); + page.setRecords(list); + return ResponseDataDTO.success(super.packForBT(page)); + } + + @BussinessLog(value = "设备分组新增", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "新增接口") + @PostMapping(value = "/add") + public ResponseDataDTO add(@RequestBody BusDeviceGroup busDeviceGroup) { + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + busDeviceGroup.setCreateId(user.getId()); + busDeviceGroup.setCreateTime(new Date()); + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.save(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组修改", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @PostMapping(value = "/update") + public ResponseDataDTO update(@RequestBody BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.updateById(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组删除", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "删除接口") + @GetMapping(value = "/delete") + public ResponseDataDTO delete(String id) { + busDeviceGroupService.removeById(id); + return ResponseDataDTO.success(); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { + busDeviceGroupService.removeByIds(ids.getIds()); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组详情查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "详情查询") + @GetMapping(value = "/detail") + public ResponseDataDTO detail(String id) { + return ResponseDataDTO.success(busDeviceGroupService.getById(id)); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java new file mode 100644 index 0000000..9d3726f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.device.dao; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import java.util.List; +/** + *

+ * 设备分组管理信息 Mapper 接口 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface BusDeviceGroupMapper extends BaseMapper { +/** +* 设备分组管理信息 分页检索 +*/ +List selectBusDeviceGroupPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml new file mode 100644 index 0000000..a6dd84f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + id + , + create_time as createTime , + update_time as updateTime , + group_name as groupName , + create_id as createId , + dept_id as deptId + + + a + . + id + , + a.create_time + as createTime , + a.update_time + as updateTime , + a.group_name + as groupName , + a.create_id + as createId , + a.dept_id + as deptId + + + + + + and group_name like concat('%',#{request.groupName},'%') + + + and dept_id = #{request.deptId} + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java new file mode 100644 index 0000000..a821e92 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dictmap; + +import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap; + +public class DeviceGroupQueryDict extends AbstractDictMap { + + @Override + public void init() { + put("id", "主键"); + put("deptId", "所属组织"); + put("groupName", "分组名称"); + + put("deptName", "所属单位"); + } + + @Override + protected void initBeWrapped() { + + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java new file mode 100644 index 0000000..d8d1712 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.device.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + + +/** + * 设备分组管理信息对象 bus_device_group + * + * @author lwh + * @date 2025-06-11 + */ +@Data +@TableName("bus_device_group") +public class BusDeviceGroup extends Model { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键", dataType = "Long") + @TableField("id") + private Long id; + + @ApiModelProperty(value = "创建时间", dataType = "Date") + @TableField("create_time") + private Date createTime; + + @ApiModelProperty(value = "修改时间", dataType = "Date") + @TableField("update_time") + private Date updateTime; + + @ApiModelProperty(value = "分组名称", dataType = "String") + @TableField("group_name") + private String groupName; + + @ApiModelProperty(value = "创建人", dataType = "Long") + @TableField("create_id") + private Long createId; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; + @TableField(exist = false) + private String deptName; + + @Override + public String toString() { + return "BusDeviceGroup{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "groupName=" + groupName + + "createId=" + createId + + "deptId=" + deptId + + "}"; + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java new file mode 100644 index 0000000..d2cee5c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; + +import java.util.List; + + +/** + *

+ * 设备分组管理信息 服务类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface IBusDeviceGroupService extends IService { + /** + * 设备分组管理信息 分页检索 + */ + List selectBusDeviceGroupPage(Page page, QueryWrapper query); + + /** + * 树结构查询 + * + * @return + */ + List groupTree(); + + DeptDTO convertDeptDTO(BusDeviceGroup group); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java new file mode 100644 index 0000000..a6f08b7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java @@ -0,0 +1,139 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractAuthService; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.modular.data.constants.DataConstants; +import com.casic.missiles.modular.device.dao.BusDeviceGroupMapper; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; +import com.casic.missiles.modular.system.model.Dept; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.data.constants.DataConstants.NODE_TYPE_DEPT; + + +/** + *

+ * 设备分组管理信息 服务实现类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +@Service +public class BusDeviceGroupServiceImpl extends ServiceImpl implements IBusDeviceGroupService { + @Resource + private AbstractDeptService deptService; + + @Override + public List selectBusDeviceGroupPage(Page page, QueryWrapper query) { + List list = this.baseMapper.selectBusDeviceGroupPage(page, query); + list.forEach(this::wrapperInfo); + return list; + } + + @Override + public List groupTree() { + List deptList = deviceDept(); + + List deptDTOS = new ArrayList<>(); + //树节点根 + List rootIds = new ArrayList<>(); + Set normalIds = new HashSet<>(); + + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setId(dept.getId()); + deptDTO.setPid(dept.getPid()); + deptDTO.setFullName(dept.getFullName()); + deptDTO.setName(dept.getSimpleName()); + deptDTO.setType(NODE_TYPE_DEPT); + + normalIds.add(dept.getId()); + deptDTOS.add(deptDTO); + + + //查询该组织下分组信息 + LambdaQueryWrapper deviceQuery = new LambdaQueryWrapper<>(); + deviceQuery.eq(BusDeviceGroup::getDeptId, deptDTO.getId()); + + deviceQuery.orderByAsc(BusDeviceGroup::getGroupName); + List deviceInfos = this.list(deviceQuery); + List deptDTOList = new ArrayList<>(); + for (BusDeviceGroup group : deviceInfos) { + DeptDTO deptDto = this.convertDeptDTO(group); + deptDTOList.add(deptDto); + } + deptDTO.setChildrenNodes(deptDTOList); + } + + for (DeptDTO deptDTO : deptDTOS) { + if (!normalIds.contains(deptDTO.getPid())) { + rootIds.add(deptDTO.getPid()); + } + } + + //过滤根节点 + DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); + List newTree = new ArrayList<>(); + rootIds = rootIds.stream().distinct().collect(Collectors.toList()); + for (Long rootId : rootIds) { + abstractTreeBuildFactory.setRootId(rootId + ""); + newTree.addAll(abstractTreeBuildFactory.doTreeBuild(deptDTOS)); + } + return newTree; + } + + public DeptDTO convertDeptDTO(BusDeviceGroup group) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setType(DataConstants.NODE_TYPE_GROUP); + deptDTO.setId(group.getId()); + deptDTO.setPid(group.getDeptId()); + deptDTO.setName(group.getGroupName()); + deptDTO.setGroup(group); + return deptDTO; + } + + @Resource + private AbstractAuthService authService; + + private List deviceDept() { + //查询可见组织 + DataScope scope = authService.getLoginUserDataScope(); + AuthUser user = authService.getLoginUser(); + + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); + deptQuery.inSql(Dept::getId, "select dept_id from bus_device_info "); + if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums().getCode())) { + deptQuery.in(Dept::getId, scope.getDeptIds()); + } + deptQuery.orderByAsc(Dept::getNum); + + List deptList = deptService.list(deptQuery); + return deptList; + } + + @Override + public List list() { + List list = super.list(); + list.forEach(this::wrapperInfo); + return list; + } + + private void wrapperInfo(BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setDeptName(deptService.getDeptName(busDeviceGroup.getDeptId())); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java new file mode 100644 index 0000000..413d7ac --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.device.vo; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 设备分组管理信息对象VO + * + * @author lwh + * @date 2025-06-11 + */ +@Data +public class BusDeviceGroupVO { + private static final long serialVersionUID = 1L; + + + @ApiModelProperty(value = "分组名称", dataType = "String") + private String groupName; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + private Long deptId; + + public QueryWrapper genQuery() { + QueryWrapper query = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(groupName)) { + query.like("group_name", groupName); + } + if (deptId != null) { + query.eq("dept_id", deptId); + } + return query; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java new file mode 100644 index 0000000..477435e --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java @@ -0,0 +1,163 @@ +package com.casic.missiles.modular.device.dto.risk; + +import cn.hutool.core.convert.Convert; +import com.casic.missiles.modular.device.model.RiskPointInfo; +import lombok.Data; + +@Data +public class SyncRiskDTO { + /** + * 主键 + */ + private String id; + private String name; + /** + * 重大风险 + * 风险等级 + */ + private String hazardLevel; + /** + * 危险因素 + */ + private String riskFactors; + /** + * 所属单位 + */ + private String affiliatedUnit; + /** + * 所属部门 + */ + private String department; + + /** + * 定员 + */ + private String staffing; + + /** + * 定量 + */ + private String ration; + + /** + * 地理位置 + */ + private String geographicalPosition; + + /** + * 责任人 + */ + private String personLiable; + + /** + * 现场负责人 + */ + private String siteLeader; + + /** + * 主要设备、设施设计制造单位 + */ + private String zysbZzdw; + + /** + * 所在单位 + */ + private String szdw; + + /** + * 作业人数 + */ + private String numberOperators; + + /** + * 主要性能参数 + */ + private String mainPerformanceParameters; + + /** + * 工作环境参数 + */ + private String workingEnvironmentParameters; + + /** + * 安装单位 + */ + private String installationUnit; + + /** + * 投产日期 + */ + private String productionDate; + + /** + * 设备总数 + */ + private String totalEquipment; + + /** + * 备注 + */ + private String note; + + /** + * 创建用户 + */ + private String createUser; + private String createTime; + private String updateUser; + private String updateTime; + /** + * 是否删除0:否;1:是(接口已过滤掉1的数据) + */ + private Integer isDel; + + /** + * 行政区域 + */ + private String xzqy; + /** + * 街道 + */ + private String jdxx; + + /** + * 楼房 + */ + private String loufang; + + /** + * 楼层 + */ + private String louceng; + + /** + * 房间 + */ + private String roomName; + /** + * 所属单位编码 + */ + private String affiliatedUnitsCode; + + /** + * 危险性质 + */ + private String hazardousNature; + + public RiskPointInfo convertToRisk(RiskPointInfo pointInfo) { + //风险点缺少密级 + pointInfo.setSecretLevel("1"); + // hazardLevel 是否有字典值? + + if (department != null) { + pointInfo.setDeptId(Convert.toLong(department)); + } + pointInfo.setNature(hazardousNature); + pointInfo.setRiskName(name); + pointInfo.setAddress(geographicalPosition); + pointInfo.setTargetId(id); + //默认类型为1 + pointInfo.setRiskType(1); + return pointInfo; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java new file mode 100644 index 0000000..08e89a0 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.device.handler; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class BoxDefaultHttpHeaderHandler extends DefaultHttpHeaderHandler { + /** + * 代理服务IP + */ + private String xTargetHost; + + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Access-Token", token); + } + if (StrUtil.isNotEmpty(xTargetHost)){ + base.addHeader("X-TARGET-HOST", xTargetHost); + } + } + + public String getXTargetHost() { + return xTargetHost; + } + + public void setXTargetHost(String XTargetHost) { + this.xTargetHost = XTargetHost; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java new file mode 100644 index 0000000..903e567 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.http; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class RiskHttpHandler extends DefaultHttpHeaderHandler { + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Authorization", token); + } + + } +} + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java new file mode 100644 index 0000000..9f75f42 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java @@ -0,0 +1,35 @@ +package com.casic.missiles.modular.task; + +import com.casic.missiles.modular.device.service.IRiskPointInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +@Slf4j +@Component +public class RiskTask { + + @Value("${casic.risk.open:false}") + private Boolean open; + + @Resource + private IRiskPointInfoService riskPointInfoService; + + /** + * 设备信息同步0 + * 每30分钟采集一次 + */ + @Scheduled(cron = "${casic.risk.corn:0 */1 * * * *}") + public void device() { + //风险点数据同步 + if (open) { + log.info("risk sync start...."); + riskPointInfoService.loadRiskInfo(); + log.info("risk sync end...."); + } + } + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java new file mode 100644 index 0000000..e4ca4f1 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.util; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.modular.http.RiskHttpHandler; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import com.casic.missiles.modular.system.utils.HttpUtils; + +import java.util.HashMap; +import java.util.Map; + +public class RiskHttpUtil { + public static final String loginUrl = "/rest/platform/systemLogin"; + public static final String pointDataUrl = "/rest/platform/dangerPointData"; + + public static String login(String baseUrl, String secret) { + Map param = new HashMap<>(); + param.put("secret", secret); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + defaultHeaderHandler.setJson(true); + String res = HttpUtils.sendPost(baseUrl + loginUrl, param, "", defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + public static String pointData(String baseUrl, String token) { + Map param = new HashMap<>(); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + + String res = HttpUtils.sendGet(baseUrl + pointDataUrl, param, token, defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + /** + * 登录数据加密 + * @param appId 加密id + * @param publicKey 公钥 + * @return + * @throws Exception + */ + public static String encrypt(String appId,String publicKey) throws Exception { + long ts = System.currentTimeMillis(); + return RSAUtils.encrypt(appId+"_"+ts,publicKey); + } + + +} diff --git a/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java new file mode 100644 index 0000000..9ba1e2a --- /dev/null +++ b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java @@ -0,0 +1,62 @@ +package com.casic.missiles.test; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.TypeReference; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.risk.SyncRiskDTO; +import com.casic.missiles.modular.device.util.AesUtil; +import com.casic.missiles.modular.util.RiskHttpUtil; +import com.casic.missiles.modular.util.WvpUtil; +import com.casic.missiles.modular.wvp.dto.MvpResponseDTO; + +import java.io.FileInputStream; +import java.security.MessageDigest; +import java.util.Date; +import java.util.HashMap; +import java.util.List; + +public class RiskTest { + public static void main(String[] args) throws Exception { +// File file = new File("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// String task = ZipFileUtil.getZipHandleTask("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(task); +// String md5 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(md5); +// String md52 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241122.zip"); +// System.out.println(md52); + + testDeviceLogin(); + System.out.println( DateUtil.offsetMinute(new Date(),-5)); + } + public static void testDeviceLogin() throws Exception { + Long time = System.currentTimeMillis(); + String str = "FXDDT_" + time; + String pubKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCynMBxzoNBemZKuxjlZzp04Lx/b0j1xRUznBKjlQSATwc+1DaxBpKdT4WfqAuFlSQLA7qLdntXw2cvUEvRxfdjJp2KfZLkEYRmYx3LT51WdCmouQREtMrR6j3mri8jV8TjktGCmBFMKX7eGeQM8O249yVjby6502bzZXehQ707JQIDAQAB"; + String sec = RSAUtils.encrypt(str, pubKey); + System.out.println(sec); + String priKey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALKcwHHOg0F6Zkq7GOVnOnTgvH9vSPXFFTOcEqOVBIBPBz7UNrEGkp1PhZ+oC4WVJAsDuot2e1fDZy9QS9HF92MmnYp9kuQRhGZjHctPnVZ0Kai5BES0ytHqPeauLyNXxOOS0YKYEUwpft4Z5Azw7bj3JWNvLrnTZvNld6FDvTslAgMBAAECgYAqN/kZLYpC+O6i7XSmDO95XwHPUXu6dDpdt5+EQR4OQh/hTwIaeAZB3uEj6vHGQomBfQEkI/5lsU97lIxHanbd+Hro7JyIhsGD5LR5XnZHVKzFiZW62OIU6FI9dlQNN8miiblnmyDwiMA3okaHl0O7qQjZ+IvY2csgmJc7AXpPpQJBAOhrhcfWFcgffj2O6HYNlBLFfbboc/ZzrEADDXKnxRSHlo5o8W+6gylG/L2NGtbag5S68B9VYzdkSQ1++5C+Ws8CQQDEu7h311PLEiKgqzGHpjzadQETmt/jMadaKQmT0TZwNVi6X8lR17U5hF8dAqZzUzr9kUC0HRIZhg4Uv1v3W3fLAkB4YPhxgJjXhjhEefg87Nt8vX1Xdx5Yz6CvpuUYNX0GHRQFvqUOUXQNtQ7CvorgLV1pc0lbcUZqMi8EJnj1hyJRAkEAjHXWm8GiMt+M15fCsi3vTq2xChVOekBuUsHv85iwvGZqJg7ThtpyqlEnM2g7/STUfkvhnXcQACclEI0blTy6BwJAPmFyhU+d0ejVpbc53TdrL2HqYYUHi/tTy/dtUa7lbypzdwwJ2M1Tv5PE8sQxr9tgMbebfxVb/RFKdiCCtzC4ng=="; + String s = RSAUtils.decrypt(sec,priKey); + System.out.println(s); + + + String appId = "5d7d4d81a64f4b8f"; + String publicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB"; + String secret = RiskHttpUtil.encrypt(appId,publicKey); + System.out.println(secret); + String res = RiskHttpUtil.login("http://101.201.36.107:12388",secret); + System.out.println(res); + JSONObject jsonObject = JSON.parseObject(res); + String token = jsonObject.getString("data"); + String resPoint = RiskHttpUtil.pointData("http://101.201.36.107:12388",token); + System.out.println(resPoint); + + + ResponseDataDTO> riskPointRes = JSON.parseObject(resPoint, new TypeReference>>() { + }); + + } + +} diff --git a/casic-web/src/main/resources/doc/20250609.md b/casic-web/src/main/resources/doc/20250609.md new file mode 100644 index 0000000..0cb3464 --- /dev/null +++ b/casic-web/src/main/resources/doc/20250609.md @@ -0,0 +1,30 @@ +## 一、数据库更新 + +1. 设备分组数据库增加 + +``` +ALTER TABLE bus_device_info ADD COLUMN GROUP_ID bigint; + +create table bus_device_group +( + id bigint not null comment '主键', + create_time datetime comment '创建时间', + update_time datetime comment '修改时间', + group_name varchar(255) comment '分组名称', + create_id bigint comment '创建人', + dept_id bigint comment '所属组织' +); + +alter table bus_device_group comment '设备分组管理信息'; + +``` + +casic.tenant.excludes 配置项中增加 bus_device_group + + +casic.no-login-urls 中增加如下配置 +,/sync/risk/dept,/sync/risk/user/list,/sync/risk/device/list + + + + diff --git a/casic-web/src/main/resources/doc/20250624.md b/casic-web/src/main/resources/doc/20250624.md new file mode 100644 index 0000000..7af561d --- /dev/null +++ b/casic-web/src/main/resources/doc/20250624.md @@ -0,0 +1,34 @@ +## 一、数据库更新 + +1. 风险点表添加同步ID + +``` +ALTER TABLE risk_point_info ADD COLUMN TARGET_ID VARCHAR(255); + +``` + +2. 风险点相关配置项 + +casic.risk.open 默认false 不开启 开启需配置true +casic.risk.corn 定时时间 默认0 */5 * * * * 5分钟 +casic.risk.appId 默认 5d7d4d81a64f4b8f 如变更需更改 +casic.risk.publicKey 公钥 默认MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB +casic.risk.host 风险点地址, 默认http://101.201.36.107:12388 生产需更改 + +3. 增加字典值 + hazardLevelName 风险危险等级(706映射) + 1 低风险 + 1 一般风险 + 2 较大风险 + 3 重大风险 + 以上字典值以706风险等级名称对应本系统风险点1 2 3 等级,如果706风险等级名称变更 修改对应字典值名称即可 + +4. 盒子代理服务模块添加 + 增加配置项 + casic.video.box.proxy 192.168.83.37:30064 此处需变更为部署代理nginx的ip及端口,具体配置参见国标级联及代理服务配置说明 + + + + + + diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" new file mode 100644 index 0000000..30cdcbd --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" new file mode 100644 index 0000000..6a0069c --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" new file mode 100644 index 0000000..f775124 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" new file mode 100644 index 0000000..9f65ff1 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" new file mode 100644 index 0000000..613ec69 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" new file mode 100644 index 0000000..1614b04 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" new file mode 100644 index 0000000..3f5083a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" new file mode 100644 index 0000000..134a604 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" new file mode 100644 index 0000000..7edeaa0 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" new file mode 100644 index 0000000..ccd0993 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" new file mode 100644 index 0000000..0cbf80d --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" new file mode 100644 index 0000000..613ec69 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" new file mode 100644 index 0000000..3f5083a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" new file mode 100644 index 0000000..7edeaa0 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image012.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image012.jpg" new file mode 100644 index 0000000..0cbf80d --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image012.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/themedata.thmx" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/themedata.thmx" new file mode 100644 index 0000000..67aae0a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/themedata.thmx" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/colorschememapping.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/colorschememapping.xml" new file mode 100644 index 0000000..6a0069c --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/colorschememapping.xml" @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image001.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image001.png" new file mode 100644 index 0000000..1614b04 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image001.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.gif" new file mode 100644 index 0000000..92bd844 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.png" new file mode 100644 index 0000000..9f65ff1 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.png" Binary files differ diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java new file mode 100644 index 0000000..77c14a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.device.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dictmap.DeviceGroupQueryDict; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.vo.BusDeviceGroupVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; + +/** + * 设备分组管理信息Controller + * + * @author lwh + * @date 2025-06-11 + */ +@Api(tags = "设备分组管理信息") +@RestController +@RequestMapping("/device/group") +public class BusDeviceGroupController extends BaseController { + + private final IBusDeviceGroupService busDeviceGroupService; + private final AbstractPermissionContext abstractPermissionContext; + + public BusDeviceGroupController(IBusDeviceGroupService busDeviceGroupService, AbstractPermissionContext abstractPermissionContext) { + this.busDeviceGroupService = busDeviceGroupService; + this.abstractPermissionContext = abstractPermissionContext; + } + + @ApiOperation(value = "列表查询") + @GetMapping(value = "/list") + public ResponseDataDTO> list(BusDeviceGroupVO busDeviceGroupVO) { + QueryWrapper query = busDeviceGroupVO.genQuery(); + return ResponseDataDTO.success(busDeviceGroupService.list(query)); + } + + @ApiOperation(value = "分组树结构查询") + @BussinessLog(value = "分组树结构查询") + @GetMapping(value = "/tree") + public ResponseDataDTO> groupTree() { + List groupDTOList = busDeviceGroupService.groupTree(); + return ResponseDataDTO.success(groupDTOList); + } + + @BussinessLog(value = "设备分组分页查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "分页查询") + @GetMapping(value = "/listPage") + public ResponseDataDTO> listPage(BusDeviceGroupVO busDeviceGroupVO) { + Page page = PageFactory.defaultPage(); + QueryWrapper query = busDeviceGroupVO.genQuery(); + List list = busDeviceGroupService.selectBusDeviceGroupPage(page, query); + page.setRecords(list); + return ResponseDataDTO.success(super.packForBT(page)); + } + + @BussinessLog(value = "设备分组新增", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "新增接口") + @PostMapping(value = "/add") + public ResponseDataDTO add(@RequestBody BusDeviceGroup busDeviceGroup) { + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + busDeviceGroup.setCreateId(user.getId()); + busDeviceGroup.setCreateTime(new Date()); + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.save(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组修改", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @PostMapping(value = "/update") + public ResponseDataDTO update(@RequestBody BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.updateById(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组删除", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "删除接口") + @GetMapping(value = "/delete") + public ResponseDataDTO delete(String id) { + busDeviceGroupService.removeById(id); + return ResponseDataDTO.success(); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { + busDeviceGroupService.removeByIds(ids.getIds()); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组详情查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "详情查询") + @GetMapping(value = "/detail") + public ResponseDataDTO detail(String id) { + return ResponseDataDTO.success(busDeviceGroupService.getById(id)); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java new file mode 100644 index 0000000..9d3726f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.device.dao; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import java.util.List; +/** + *

+ * 设备分组管理信息 Mapper 接口 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface BusDeviceGroupMapper extends BaseMapper { +/** +* 设备分组管理信息 分页检索 +*/ +List selectBusDeviceGroupPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml new file mode 100644 index 0000000..a6dd84f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + id + , + create_time as createTime , + update_time as updateTime , + group_name as groupName , + create_id as createId , + dept_id as deptId + + + a + . + id + , + a.create_time + as createTime , + a.update_time + as updateTime , + a.group_name + as groupName , + a.create_id + as createId , + a.dept_id + as deptId + + + + + + and group_name like concat('%',#{request.groupName},'%') + + + and dept_id = #{request.deptId} + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java new file mode 100644 index 0000000..a821e92 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dictmap; + +import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap; + +public class DeviceGroupQueryDict extends AbstractDictMap { + + @Override + public void init() { + put("id", "主键"); + put("deptId", "所属组织"); + put("groupName", "分组名称"); + + put("deptName", "所属单位"); + } + + @Override + protected void initBeWrapped() { + + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java new file mode 100644 index 0000000..d8d1712 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.device.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + + +/** + * 设备分组管理信息对象 bus_device_group + * + * @author lwh + * @date 2025-06-11 + */ +@Data +@TableName("bus_device_group") +public class BusDeviceGroup extends Model { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键", dataType = "Long") + @TableField("id") + private Long id; + + @ApiModelProperty(value = "创建时间", dataType = "Date") + @TableField("create_time") + private Date createTime; + + @ApiModelProperty(value = "修改时间", dataType = "Date") + @TableField("update_time") + private Date updateTime; + + @ApiModelProperty(value = "分组名称", dataType = "String") + @TableField("group_name") + private String groupName; + + @ApiModelProperty(value = "创建人", dataType = "Long") + @TableField("create_id") + private Long createId; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; + @TableField(exist = false) + private String deptName; + + @Override + public String toString() { + return "BusDeviceGroup{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "groupName=" + groupName + + "createId=" + createId + + "deptId=" + deptId + + "}"; + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java new file mode 100644 index 0000000..d2cee5c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; + +import java.util.List; + + +/** + *

+ * 设备分组管理信息 服务类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface IBusDeviceGroupService extends IService { + /** + * 设备分组管理信息 分页检索 + */ + List selectBusDeviceGroupPage(Page page, QueryWrapper query); + + /** + * 树结构查询 + * + * @return + */ + List groupTree(); + + DeptDTO convertDeptDTO(BusDeviceGroup group); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java new file mode 100644 index 0000000..a6f08b7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java @@ -0,0 +1,139 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractAuthService; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.modular.data.constants.DataConstants; +import com.casic.missiles.modular.device.dao.BusDeviceGroupMapper; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; +import com.casic.missiles.modular.system.model.Dept; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.data.constants.DataConstants.NODE_TYPE_DEPT; + + +/** + *

+ * 设备分组管理信息 服务实现类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +@Service +public class BusDeviceGroupServiceImpl extends ServiceImpl implements IBusDeviceGroupService { + @Resource + private AbstractDeptService deptService; + + @Override + public List selectBusDeviceGroupPage(Page page, QueryWrapper query) { + List list = this.baseMapper.selectBusDeviceGroupPage(page, query); + list.forEach(this::wrapperInfo); + return list; + } + + @Override + public List groupTree() { + List deptList = deviceDept(); + + List deptDTOS = new ArrayList<>(); + //树节点根 + List rootIds = new ArrayList<>(); + Set normalIds = new HashSet<>(); + + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setId(dept.getId()); + deptDTO.setPid(dept.getPid()); + deptDTO.setFullName(dept.getFullName()); + deptDTO.setName(dept.getSimpleName()); + deptDTO.setType(NODE_TYPE_DEPT); + + normalIds.add(dept.getId()); + deptDTOS.add(deptDTO); + + + //查询该组织下分组信息 + LambdaQueryWrapper deviceQuery = new LambdaQueryWrapper<>(); + deviceQuery.eq(BusDeviceGroup::getDeptId, deptDTO.getId()); + + deviceQuery.orderByAsc(BusDeviceGroup::getGroupName); + List deviceInfos = this.list(deviceQuery); + List deptDTOList = new ArrayList<>(); + for (BusDeviceGroup group : deviceInfos) { + DeptDTO deptDto = this.convertDeptDTO(group); + deptDTOList.add(deptDto); + } + deptDTO.setChildrenNodes(deptDTOList); + } + + for (DeptDTO deptDTO : deptDTOS) { + if (!normalIds.contains(deptDTO.getPid())) { + rootIds.add(deptDTO.getPid()); + } + } + + //过滤根节点 + DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); + List newTree = new ArrayList<>(); + rootIds = rootIds.stream().distinct().collect(Collectors.toList()); + for (Long rootId : rootIds) { + abstractTreeBuildFactory.setRootId(rootId + ""); + newTree.addAll(abstractTreeBuildFactory.doTreeBuild(deptDTOS)); + } + return newTree; + } + + public DeptDTO convertDeptDTO(BusDeviceGroup group) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setType(DataConstants.NODE_TYPE_GROUP); + deptDTO.setId(group.getId()); + deptDTO.setPid(group.getDeptId()); + deptDTO.setName(group.getGroupName()); + deptDTO.setGroup(group); + return deptDTO; + } + + @Resource + private AbstractAuthService authService; + + private List deviceDept() { + //查询可见组织 + DataScope scope = authService.getLoginUserDataScope(); + AuthUser user = authService.getLoginUser(); + + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); + deptQuery.inSql(Dept::getId, "select dept_id from bus_device_info "); + if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums().getCode())) { + deptQuery.in(Dept::getId, scope.getDeptIds()); + } + deptQuery.orderByAsc(Dept::getNum); + + List deptList = deptService.list(deptQuery); + return deptList; + } + + @Override + public List list() { + List list = super.list(); + list.forEach(this::wrapperInfo); + return list; + } + + private void wrapperInfo(BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setDeptName(deptService.getDeptName(busDeviceGroup.getDeptId())); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java new file mode 100644 index 0000000..413d7ac --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.device.vo; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 设备分组管理信息对象VO + * + * @author lwh + * @date 2025-06-11 + */ +@Data +public class BusDeviceGroupVO { + private static final long serialVersionUID = 1L; + + + @ApiModelProperty(value = "分组名称", dataType = "String") + private String groupName; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + private Long deptId; + + public QueryWrapper genQuery() { + QueryWrapper query = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(groupName)) { + query.like("group_name", groupName); + } + if (deptId != null) { + query.eq("dept_id", deptId); + } + return query; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java new file mode 100644 index 0000000..477435e --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java @@ -0,0 +1,163 @@ +package com.casic.missiles.modular.device.dto.risk; + +import cn.hutool.core.convert.Convert; +import com.casic.missiles.modular.device.model.RiskPointInfo; +import lombok.Data; + +@Data +public class SyncRiskDTO { + /** + * 主键 + */ + private String id; + private String name; + /** + * 重大风险 + * 风险等级 + */ + private String hazardLevel; + /** + * 危险因素 + */ + private String riskFactors; + /** + * 所属单位 + */ + private String affiliatedUnit; + /** + * 所属部门 + */ + private String department; + + /** + * 定员 + */ + private String staffing; + + /** + * 定量 + */ + private String ration; + + /** + * 地理位置 + */ + private String geographicalPosition; + + /** + * 责任人 + */ + private String personLiable; + + /** + * 现场负责人 + */ + private String siteLeader; + + /** + * 主要设备、设施设计制造单位 + */ + private String zysbZzdw; + + /** + * 所在单位 + */ + private String szdw; + + /** + * 作业人数 + */ + private String numberOperators; + + /** + * 主要性能参数 + */ + private String mainPerformanceParameters; + + /** + * 工作环境参数 + */ + private String workingEnvironmentParameters; + + /** + * 安装单位 + */ + private String installationUnit; + + /** + * 投产日期 + */ + private String productionDate; + + /** + * 设备总数 + */ + private String totalEquipment; + + /** + * 备注 + */ + private String note; + + /** + * 创建用户 + */ + private String createUser; + private String createTime; + private String updateUser; + private String updateTime; + /** + * 是否删除0:否;1:是(接口已过滤掉1的数据) + */ + private Integer isDel; + + /** + * 行政区域 + */ + private String xzqy; + /** + * 街道 + */ + private String jdxx; + + /** + * 楼房 + */ + private String loufang; + + /** + * 楼层 + */ + private String louceng; + + /** + * 房间 + */ + private String roomName; + /** + * 所属单位编码 + */ + private String affiliatedUnitsCode; + + /** + * 危险性质 + */ + private String hazardousNature; + + public RiskPointInfo convertToRisk(RiskPointInfo pointInfo) { + //风险点缺少密级 + pointInfo.setSecretLevel("1"); + // hazardLevel 是否有字典值? + + if (department != null) { + pointInfo.setDeptId(Convert.toLong(department)); + } + pointInfo.setNature(hazardousNature); + pointInfo.setRiskName(name); + pointInfo.setAddress(geographicalPosition); + pointInfo.setTargetId(id); + //默认类型为1 + pointInfo.setRiskType(1); + return pointInfo; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java new file mode 100644 index 0000000..08e89a0 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.device.handler; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class BoxDefaultHttpHeaderHandler extends DefaultHttpHeaderHandler { + /** + * 代理服务IP + */ + private String xTargetHost; + + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Access-Token", token); + } + if (StrUtil.isNotEmpty(xTargetHost)){ + base.addHeader("X-TARGET-HOST", xTargetHost); + } + } + + public String getXTargetHost() { + return xTargetHost; + } + + public void setXTargetHost(String XTargetHost) { + this.xTargetHost = XTargetHost; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java new file mode 100644 index 0000000..903e567 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.http; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class RiskHttpHandler extends DefaultHttpHeaderHandler { + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Authorization", token); + } + + } +} + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java new file mode 100644 index 0000000..9f75f42 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java @@ -0,0 +1,35 @@ +package com.casic.missiles.modular.task; + +import com.casic.missiles.modular.device.service.IRiskPointInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +@Slf4j +@Component +public class RiskTask { + + @Value("${casic.risk.open:false}") + private Boolean open; + + @Resource + private IRiskPointInfoService riskPointInfoService; + + /** + * 设备信息同步0 + * 每30分钟采集一次 + */ + @Scheduled(cron = "${casic.risk.corn:0 */1 * * * *}") + public void device() { + //风险点数据同步 + if (open) { + log.info("risk sync start...."); + riskPointInfoService.loadRiskInfo(); + log.info("risk sync end...."); + } + } + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java new file mode 100644 index 0000000..e4ca4f1 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.util; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.modular.http.RiskHttpHandler; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import com.casic.missiles.modular.system.utils.HttpUtils; + +import java.util.HashMap; +import java.util.Map; + +public class RiskHttpUtil { + public static final String loginUrl = "/rest/platform/systemLogin"; + public static final String pointDataUrl = "/rest/platform/dangerPointData"; + + public static String login(String baseUrl, String secret) { + Map param = new HashMap<>(); + param.put("secret", secret); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + defaultHeaderHandler.setJson(true); + String res = HttpUtils.sendPost(baseUrl + loginUrl, param, "", defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + public static String pointData(String baseUrl, String token) { + Map param = new HashMap<>(); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + + String res = HttpUtils.sendGet(baseUrl + pointDataUrl, param, token, defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + /** + * 登录数据加密 + * @param appId 加密id + * @param publicKey 公钥 + * @return + * @throws Exception + */ + public static String encrypt(String appId,String publicKey) throws Exception { + long ts = System.currentTimeMillis(); + return RSAUtils.encrypt(appId+"_"+ts,publicKey); + } + + +} diff --git a/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java new file mode 100644 index 0000000..9ba1e2a --- /dev/null +++ b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java @@ -0,0 +1,62 @@ +package com.casic.missiles.test; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.TypeReference; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.risk.SyncRiskDTO; +import com.casic.missiles.modular.device.util.AesUtil; +import com.casic.missiles.modular.util.RiskHttpUtil; +import com.casic.missiles.modular.util.WvpUtil; +import com.casic.missiles.modular.wvp.dto.MvpResponseDTO; + +import java.io.FileInputStream; +import java.security.MessageDigest; +import java.util.Date; +import java.util.HashMap; +import java.util.List; + +public class RiskTest { + public static void main(String[] args) throws Exception { +// File file = new File("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// String task = ZipFileUtil.getZipHandleTask("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(task); +// String md5 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(md5); +// String md52 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241122.zip"); +// System.out.println(md52); + + testDeviceLogin(); + System.out.println( DateUtil.offsetMinute(new Date(),-5)); + } + public static void testDeviceLogin() throws Exception { + Long time = System.currentTimeMillis(); + String str = "FXDDT_" + time; + String pubKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCynMBxzoNBemZKuxjlZzp04Lx/b0j1xRUznBKjlQSATwc+1DaxBpKdT4WfqAuFlSQLA7qLdntXw2cvUEvRxfdjJp2KfZLkEYRmYx3LT51WdCmouQREtMrR6j3mri8jV8TjktGCmBFMKX7eGeQM8O249yVjby6502bzZXehQ707JQIDAQAB"; + String sec = RSAUtils.encrypt(str, pubKey); + System.out.println(sec); + String priKey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALKcwHHOg0F6Zkq7GOVnOnTgvH9vSPXFFTOcEqOVBIBPBz7UNrEGkp1PhZ+oC4WVJAsDuot2e1fDZy9QS9HF92MmnYp9kuQRhGZjHctPnVZ0Kai5BES0ytHqPeauLyNXxOOS0YKYEUwpft4Z5Azw7bj3JWNvLrnTZvNld6FDvTslAgMBAAECgYAqN/kZLYpC+O6i7XSmDO95XwHPUXu6dDpdt5+EQR4OQh/hTwIaeAZB3uEj6vHGQomBfQEkI/5lsU97lIxHanbd+Hro7JyIhsGD5LR5XnZHVKzFiZW62OIU6FI9dlQNN8miiblnmyDwiMA3okaHl0O7qQjZ+IvY2csgmJc7AXpPpQJBAOhrhcfWFcgffj2O6HYNlBLFfbboc/ZzrEADDXKnxRSHlo5o8W+6gylG/L2NGtbag5S68B9VYzdkSQ1++5C+Ws8CQQDEu7h311PLEiKgqzGHpjzadQETmt/jMadaKQmT0TZwNVi6X8lR17U5hF8dAqZzUzr9kUC0HRIZhg4Uv1v3W3fLAkB4YPhxgJjXhjhEefg87Nt8vX1Xdx5Yz6CvpuUYNX0GHRQFvqUOUXQNtQ7CvorgLV1pc0lbcUZqMi8EJnj1hyJRAkEAjHXWm8GiMt+M15fCsi3vTq2xChVOekBuUsHv85iwvGZqJg7ThtpyqlEnM2g7/STUfkvhnXcQACclEI0blTy6BwJAPmFyhU+d0ejVpbc53TdrL2HqYYUHi/tTy/dtUa7lbypzdwwJ2M1Tv5PE8sQxr9tgMbebfxVb/RFKdiCCtzC4ng=="; + String s = RSAUtils.decrypt(sec,priKey); + System.out.println(s); + + + String appId = "5d7d4d81a64f4b8f"; + String publicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB"; + String secret = RiskHttpUtil.encrypt(appId,publicKey); + System.out.println(secret); + String res = RiskHttpUtil.login("http://101.201.36.107:12388",secret); + System.out.println(res); + JSONObject jsonObject = JSON.parseObject(res); + String token = jsonObject.getString("data"); + String resPoint = RiskHttpUtil.pointData("http://101.201.36.107:12388",token); + System.out.println(resPoint); + + + ResponseDataDTO> riskPointRes = JSON.parseObject(resPoint, new TypeReference>>() { + }); + + } + +} diff --git a/casic-web/src/main/resources/doc/20250609.md b/casic-web/src/main/resources/doc/20250609.md new file mode 100644 index 0000000..0cb3464 --- /dev/null +++ b/casic-web/src/main/resources/doc/20250609.md @@ -0,0 +1,30 @@ +## 一、数据库更新 + +1. 设备分组数据库增加 + +``` +ALTER TABLE bus_device_info ADD COLUMN GROUP_ID bigint; + +create table bus_device_group +( + id bigint not null comment '主键', + create_time datetime comment '创建时间', + update_time datetime comment '修改时间', + group_name varchar(255) comment '分组名称', + create_id bigint comment '创建人', + dept_id bigint comment '所属组织' +); + +alter table bus_device_group comment '设备分组管理信息'; + +``` + +casic.tenant.excludes 配置项中增加 bus_device_group + + +casic.no-login-urls 中增加如下配置 +,/sync/risk/dept,/sync/risk/user/list,/sync/risk/device/list + + + + diff --git a/casic-web/src/main/resources/doc/20250624.md b/casic-web/src/main/resources/doc/20250624.md new file mode 100644 index 0000000..7af561d --- /dev/null +++ b/casic-web/src/main/resources/doc/20250624.md @@ -0,0 +1,34 @@ +## 一、数据库更新 + +1. 风险点表添加同步ID + +``` +ALTER TABLE risk_point_info ADD COLUMN TARGET_ID VARCHAR(255); + +``` + +2. 风险点相关配置项 + +casic.risk.open 默认false 不开启 开启需配置true +casic.risk.corn 定时时间 默认0 */5 * * * * 5分钟 +casic.risk.appId 默认 5d7d4d81a64f4b8f 如变更需更改 +casic.risk.publicKey 公钥 默认MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB +casic.risk.host 风险点地址, 默认http://101.201.36.107:12388 生产需更改 + +3. 增加字典值 + hazardLevelName 风险危险等级(706映射) + 1 低风险 + 1 一般风险 + 2 较大风险 + 3 重大风险 + 以上字典值以706风险等级名称对应本系统风险点1 2 3 等级,如果706风险等级名称变更 修改对应字典值名称即可 + +4. 盒子代理服务模块添加 + 增加配置项 + casic.video.box.proxy 192.168.83.37:30064 此处需变更为部署代理nginx的ip及端口,具体配置参见国标级联及代理服务配置说明 + + + + + + diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" new file mode 100644 index 0000000..30cdcbd --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" new file mode 100644 index 0000000..6a0069c --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" new file mode 100644 index 0000000..f775124 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" new file mode 100644 index 0000000..9f65ff1 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" new file mode 100644 index 0000000..613ec69 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" new file mode 100644 index 0000000..1614b04 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" new file mode 100644 index 0000000..3f5083a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" new file mode 100644 index 0000000..134a604 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" new file mode 100644 index 0000000..7edeaa0 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" new file mode 100644 index 0000000..ccd0993 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" new file mode 100644 index 0000000..0cbf80d --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" new file mode 100644 index 0000000..613ec69 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" new file mode 100644 index 0000000..3f5083a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" new file mode 100644 index 0000000..7edeaa0 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image012.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image012.jpg" new file mode 100644 index 0000000..0cbf80d --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image012.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/themedata.thmx" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/themedata.thmx" new file mode 100644 index 0000000..67aae0a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/themedata.thmx" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/colorschememapping.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/colorschememapping.xml" new file mode 100644 index 0000000..6a0069c --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/colorschememapping.xml" @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image001.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image001.png" new file mode 100644 index 0000000..1614b04 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image001.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.gif" new file mode 100644 index 0000000..92bd844 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.png" new file mode 100644 index 0000000..9f65ff1 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.jpg" new file mode 100644 index 0000000..72b5d13 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.jpg" Binary files differ diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java new file mode 100644 index 0000000..77c14a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.device.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dictmap.DeviceGroupQueryDict; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.vo.BusDeviceGroupVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; + +/** + * 设备分组管理信息Controller + * + * @author lwh + * @date 2025-06-11 + */ +@Api(tags = "设备分组管理信息") +@RestController +@RequestMapping("/device/group") +public class BusDeviceGroupController extends BaseController { + + private final IBusDeviceGroupService busDeviceGroupService; + private final AbstractPermissionContext abstractPermissionContext; + + public BusDeviceGroupController(IBusDeviceGroupService busDeviceGroupService, AbstractPermissionContext abstractPermissionContext) { + this.busDeviceGroupService = busDeviceGroupService; + this.abstractPermissionContext = abstractPermissionContext; + } + + @ApiOperation(value = "列表查询") + @GetMapping(value = "/list") + public ResponseDataDTO> list(BusDeviceGroupVO busDeviceGroupVO) { + QueryWrapper query = busDeviceGroupVO.genQuery(); + return ResponseDataDTO.success(busDeviceGroupService.list(query)); + } + + @ApiOperation(value = "分组树结构查询") + @BussinessLog(value = "分组树结构查询") + @GetMapping(value = "/tree") + public ResponseDataDTO> groupTree() { + List groupDTOList = busDeviceGroupService.groupTree(); + return ResponseDataDTO.success(groupDTOList); + } + + @BussinessLog(value = "设备分组分页查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "分页查询") + @GetMapping(value = "/listPage") + public ResponseDataDTO> listPage(BusDeviceGroupVO busDeviceGroupVO) { + Page page = PageFactory.defaultPage(); + QueryWrapper query = busDeviceGroupVO.genQuery(); + List list = busDeviceGroupService.selectBusDeviceGroupPage(page, query); + page.setRecords(list); + return ResponseDataDTO.success(super.packForBT(page)); + } + + @BussinessLog(value = "设备分组新增", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "新增接口") + @PostMapping(value = "/add") + public ResponseDataDTO add(@RequestBody BusDeviceGroup busDeviceGroup) { + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + busDeviceGroup.setCreateId(user.getId()); + busDeviceGroup.setCreateTime(new Date()); + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.save(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组修改", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @PostMapping(value = "/update") + public ResponseDataDTO update(@RequestBody BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.updateById(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组删除", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "删除接口") + @GetMapping(value = "/delete") + public ResponseDataDTO delete(String id) { + busDeviceGroupService.removeById(id); + return ResponseDataDTO.success(); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { + busDeviceGroupService.removeByIds(ids.getIds()); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组详情查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "详情查询") + @GetMapping(value = "/detail") + public ResponseDataDTO detail(String id) { + return ResponseDataDTO.success(busDeviceGroupService.getById(id)); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java new file mode 100644 index 0000000..9d3726f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.device.dao; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import java.util.List; +/** + *

+ * 设备分组管理信息 Mapper 接口 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface BusDeviceGroupMapper extends BaseMapper { +/** +* 设备分组管理信息 分页检索 +*/ +List selectBusDeviceGroupPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml new file mode 100644 index 0000000..a6dd84f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + id + , + create_time as createTime , + update_time as updateTime , + group_name as groupName , + create_id as createId , + dept_id as deptId + + + a + . + id + , + a.create_time + as createTime , + a.update_time + as updateTime , + a.group_name + as groupName , + a.create_id + as createId , + a.dept_id + as deptId + + + + + + and group_name like concat('%',#{request.groupName},'%') + + + and dept_id = #{request.deptId} + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java new file mode 100644 index 0000000..a821e92 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dictmap; + +import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap; + +public class DeviceGroupQueryDict extends AbstractDictMap { + + @Override + public void init() { + put("id", "主键"); + put("deptId", "所属组织"); + put("groupName", "分组名称"); + + put("deptName", "所属单位"); + } + + @Override + protected void initBeWrapped() { + + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java new file mode 100644 index 0000000..d8d1712 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.device.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + + +/** + * 设备分组管理信息对象 bus_device_group + * + * @author lwh + * @date 2025-06-11 + */ +@Data +@TableName("bus_device_group") +public class BusDeviceGroup extends Model { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键", dataType = "Long") + @TableField("id") + private Long id; + + @ApiModelProperty(value = "创建时间", dataType = "Date") + @TableField("create_time") + private Date createTime; + + @ApiModelProperty(value = "修改时间", dataType = "Date") + @TableField("update_time") + private Date updateTime; + + @ApiModelProperty(value = "分组名称", dataType = "String") + @TableField("group_name") + private String groupName; + + @ApiModelProperty(value = "创建人", dataType = "Long") + @TableField("create_id") + private Long createId; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; + @TableField(exist = false) + private String deptName; + + @Override + public String toString() { + return "BusDeviceGroup{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "groupName=" + groupName + + "createId=" + createId + + "deptId=" + deptId + + "}"; + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java new file mode 100644 index 0000000..d2cee5c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; + +import java.util.List; + + +/** + *

+ * 设备分组管理信息 服务类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface IBusDeviceGroupService extends IService { + /** + * 设备分组管理信息 分页检索 + */ + List selectBusDeviceGroupPage(Page page, QueryWrapper query); + + /** + * 树结构查询 + * + * @return + */ + List groupTree(); + + DeptDTO convertDeptDTO(BusDeviceGroup group); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java new file mode 100644 index 0000000..a6f08b7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java @@ -0,0 +1,139 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractAuthService; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.modular.data.constants.DataConstants; +import com.casic.missiles.modular.device.dao.BusDeviceGroupMapper; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; +import com.casic.missiles.modular.system.model.Dept; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.data.constants.DataConstants.NODE_TYPE_DEPT; + + +/** + *

+ * 设备分组管理信息 服务实现类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +@Service +public class BusDeviceGroupServiceImpl extends ServiceImpl implements IBusDeviceGroupService { + @Resource + private AbstractDeptService deptService; + + @Override + public List selectBusDeviceGroupPage(Page page, QueryWrapper query) { + List list = this.baseMapper.selectBusDeviceGroupPage(page, query); + list.forEach(this::wrapperInfo); + return list; + } + + @Override + public List groupTree() { + List deptList = deviceDept(); + + List deptDTOS = new ArrayList<>(); + //树节点根 + List rootIds = new ArrayList<>(); + Set normalIds = new HashSet<>(); + + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setId(dept.getId()); + deptDTO.setPid(dept.getPid()); + deptDTO.setFullName(dept.getFullName()); + deptDTO.setName(dept.getSimpleName()); + deptDTO.setType(NODE_TYPE_DEPT); + + normalIds.add(dept.getId()); + deptDTOS.add(deptDTO); + + + //查询该组织下分组信息 + LambdaQueryWrapper deviceQuery = new LambdaQueryWrapper<>(); + deviceQuery.eq(BusDeviceGroup::getDeptId, deptDTO.getId()); + + deviceQuery.orderByAsc(BusDeviceGroup::getGroupName); + List deviceInfos = this.list(deviceQuery); + List deptDTOList = new ArrayList<>(); + for (BusDeviceGroup group : deviceInfos) { + DeptDTO deptDto = this.convertDeptDTO(group); + deptDTOList.add(deptDto); + } + deptDTO.setChildrenNodes(deptDTOList); + } + + for (DeptDTO deptDTO : deptDTOS) { + if (!normalIds.contains(deptDTO.getPid())) { + rootIds.add(deptDTO.getPid()); + } + } + + //过滤根节点 + DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); + List newTree = new ArrayList<>(); + rootIds = rootIds.stream().distinct().collect(Collectors.toList()); + for (Long rootId : rootIds) { + abstractTreeBuildFactory.setRootId(rootId + ""); + newTree.addAll(abstractTreeBuildFactory.doTreeBuild(deptDTOS)); + } + return newTree; + } + + public DeptDTO convertDeptDTO(BusDeviceGroup group) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setType(DataConstants.NODE_TYPE_GROUP); + deptDTO.setId(group.getId()); + deptDTO.setPid(group.getDeptId()); + deptDTO.setName(group.getGroupName()); + deptDTO.setGroup(group); + return deptDTO; + } + + @Resource + private AbstractAuthService authService; + + private List deviceDept() { + //查询可见组织 + DataScope scope = authService.getLoginUserDataScope(); + AuthUser user = authService.getLoginUser(); + + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); + deptQuery.inSql(Dept::getId, "select dept_id from bus_device_info "); + if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums().getCode())) { + deptQuery.in(Dept::getId, scope.getDeptIds()); + } + deptQuery.orderByAsc(Dept::getNum); + + List deptList = deptService.list(deptQuery); + return deptList; + } + + @Override + public List list() { + List list = super.list(); + list.forEach(this::wrapperInfo); + return list; + } + + private void wrapperInfo(BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setDeptName(deptService.getDeptName(busDeviceGroup.getDeptId())); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java new file mode 100644 index 0000000..413d7ac --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.device.vo; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 设备分组管理信息对象VO + * + * @author lwh + * @date 2025-06-11 + */ +@Data +public class BusDeviceGroupVO { + private static final long serialVersionUID = 1L; + + + @ApiModelProperty(value = "分组名称", dataType = "String") + private String groupName; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + private Long deptId; + + public QueryWrapper genQuery() { + QueryWrapper query = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(groupName)) { + query.like("group_name", groupName); + } + if (deptId != null) { + query.eq("dept_id", deptId); + } + return query; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java new file mode 100644 index 0000000..477435e --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java @@ -0,0 +1,163 @@ +package com.casic.missiles.modular.device.dto.risk; + +import cn.hutool.core.convert.Convert; +import com.casic.missiles.modular.device.model.RiskPointInfo; +import lombok.Data; + +@Data +public class SyncRiskDTO { + /** + * 主键 + */ + private String id; + private String name; + /** + * 重大风险 + * 风险等级 + */ + private String hazardLevel; + /** + * 危险因素 + */ + private String riskFactors; + /** + * 所属单位 + */ + private String affiliatedUnit; + /** + * 所属部门 + */ + private String department; + + /** + * 定员 + */ + private String staffing; + + /** + * 定量 + */ + private String ration; + + /** + * 地理位置 + */ + private String geographicalPosition; + + /** + * 责任人 + */ + private String personLiable; + + /** + * 现场负责人 + */ + private String siteLeader; + + /** + * 主要设备、设施设计制造单位 + */ + private String zysbZzdw; + + /** + * 所在单位 + */ + private String szdw; + + /** + * 作业人数 + */ + private String numberOperators; + + /** + * 主要性能参数 + */ + private String mainPerformanceParameters; + + /** + * 工作环境参数 + */ + private String workingEnvironmentParameters; + + /** + * 安装单位 + */ + private String installationUnit; + + /** + * 投产日期 + */ + private String productionDate; + + /** + * 设备总数 + */ + private String totalEquipment; + + /** + * 备注 + */ + private String note; + + /** + * 创建用户 + */ + private String createUser; + private String createTime; + private String updateUser; + private String updateTime; + /** + * 是否删除0:否;1:是(接口已过滤掉1的数据) + */ + private Integer isDel; + + /** + * 行政区域 + */ + private String xzqy; + /** + * 街道 + */ + private String jdxx; + + /** + * 楼房 + */ + private String loufang; + + /** + * 楼层 + */ + private String louceng; + + /** + * 房间 + */ + private String roomName; + /** + * 所属单位编码 + */ + private String affiliatedUnitsCode; + + /** + * 危险性质 + */ + private String hazardousNature; + + public RiskPointInfo convertToRisk(RiskPointInfo pointInfo) { + //风险点缺少密级 + pointInfo.setSecretLevel("1"); + // hazardLevel 是否有字典值? + + if (department != null) { + pointInfo.setDeptId(Convert.toLong(department)); + } + pointInfo.setNature(hazardousNature); + pointInfo.setRiskName(name); + pointInfo.setAddress(geographicalPosition); + pointInfo.setTargetId(id); + //默认类型为1 + pointInfo.setRiskType(1); + return pointInfo; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java new file mode 100644 index 0000000..08e89a0 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.device.handler; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class BoxDefaultHttpHeaderHandler extends DefaultHttpHeaderHandler { + /** + * 代理服务IP + */ + private String xTargetHost; + + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Access-Token", token); + } + if (StrUtil.isNotEmpty(xTargetHost)){ + base.addHeader("X-TARGET-HOST", xTargetHost); + } + } + + public String getXTargetHost() { + return xTargetHost; + } + + public void setXTargetHost(String XTargetHost) { + this.xTargetHost = XTargetHost; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java new file mode 100644 index 0000000..903e567 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.http; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class RiskHttpHandler extends DefaultHttpHeaderHandler { + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Authorization", token); + } + + } +} + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java new file mode 100644 index 0000000..9f75f42 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java @@ -0,0 +1,35 @@ +package com.casic.missiles.modular.task; + +import com.casic.missiles.modular.device.service.IRiskPointInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +@Slf4j +@Component +public class RiskTask { + + @Value("${casic.risk.open:false}") + private Boolean open; + + @Resource + private IRiskPointInfoService riskPointInfoService; + + /** + * 设备信息同步0 + * 每30分钟采集一次 + */ + @Scheduled(cron = "${casic.risk.corn:0 */1 * * * *}") + public void device() { + //风险点数据同步 + if (open) { + log.info("risk sync start...."); + riskPointInfoService.loadRiskInfo(); + log.info("risk sync end...."); + } + } + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java new file mode 100644 index 0000000..e4ca4f1 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.util; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.modular.http.RiskHttpHandler; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import com.casic.missiles.modular.system.utils.HttpUtils; + +import java.util.HashMap; +import java.util.Map; + +public class RiskHttpUtil { + public static final String loginUrl = "/rest/platform/systemLogin"; + public static final String pointDataUrl = "/rest/platform/dangerPointData"; + + public static String login(String baseUrl, String secret) { + Map param = new HashMap<>(); + param.put("secret", secret); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + defaultHeaderHandler.setJson(true); + String res = HttpUtils.sendPost(baseUrl + loginUrl, param, "", defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + public static String pointData(String baseUrl, String token) { + Map param = new HashMap<>(); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + + String res = HttpUtils.sendGet(baseUrl + pointDataUrl, param, token, defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + /** + * 登录数据加密 + * @param appId 加密id + * @param publicKey 公钥 + * @return + * @throws Exception + */ + public static String encrypt(String appId,String publicKey) throws Exception { + long ts = System.currentTimeMillis(); + return RSAUtils.encrypt(appId+"_"+ts,publicKey); + } + + +} diff --git a/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java new file mode 100644 index 0000000..9ba1e2a --- /dev/null +++ b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java @@ -0,0 +1,62 @@ +package com.casic.missiles.test; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.TypeReference; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.risk.SyncRiskDTO; +import com.casic.missiles.modular.device.util.AesUtil; +import com.casic.missiles.modular.util.RiskHttpUtil; +import com.casic.missiles.modular.util.WvpUtil; +import com.casic.missiles.modular.wvp.dto.MvpResponseDTO; + +import java.io.FileInputStream; +import java.security.MessageDigest; +import java.util.Date; +import java.util.HashMap; +import java.util.List; + +public class RiskTest { + public static void main(String[] args) throws Exception { +// File file = new File("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// String task = ZipFileUtil.getZipHandleTask("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(task); +// String md5 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(md5); +// String md52 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241122.zip"); +// System.out.println(md52); + + testDeviceLogin(); + System.out.println( DateUtil.offsetMinute(new Date(),-5)); + } + public static void testDeviceLogin() throws Exception { + Long time = System.currentTimeMillis(); + String str = "FXDDT_" + time; + String pubKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCynMBxzoNBemZKuxjlZzp04Lx/b0j1xRUznBKjlQSATwc+1DaxBpKdT4WfqAuFlSQLA7qLdntXw2cvUEvRxfdjJp2KfZLkEYRmYx3LT51WdCmouQREtMrR6j3mri8jV8TjktGCmBFMKX7eGeQM8O249yVjby6502bzZXehQ707JQIDAQAB"; + String sec = RSAUtils.encrypt(str, pubKey); + System.out.println(sec); + String priKey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALKcwHHOg0F6Zkq7GOVnOnTgvH9vSPXFFTOcEqOVBIBPBz7UNrEGkp1PhZ+oC4WVJAsDuot2e1fDZy9QS9HF92MmnYp9kuQRhGZjHctPnVZ0Kai5BES0ytHqPeauLyNXxOOS0YKYEUwpft4Z5Azw7bj3JWNvLrnTZvNld6FDvTslAgMBAAECgYAqN/kZLYpC+O6i7XSmDO95XwHPUXu6dDpdt5+EQR4OQh/hTwIaeAZB3uEj6vHGQomBfQEkI/5lsU97lIxHanbd+Hro7JyIhsGD5LR5XnZHVKzFiZW62OIU6FI9dlQNN8miiblnmyDwiMA3okaHl0O7qQjZ+IvY2csgmJc7AXpPpQJBAOhrhcfWFcgffj2O6HYNlBLFfbboc/ZzrEADDXKnxRSHlo5o8W+6gylG/L2NGtbag5S68B9VYzdkSQ1++5C+Ws8CQQDEu7h311PLEiKgqzGHpjzadQETmt/jMadaKQmT0TZwNVi6X8lR17U5hF8dAqZzUzr9kUC0HRIZhg4Uv1v3W3fLAkB4YPhxgJjXhjhEefg87Nt8vX1Xdx5Yz6CvpuUYNX0GHRQFvqUOUXQNtQ7CvorgLV1pc0lbcUZqMi8EJnj1hyJRAkEAjHXWm8GiMt+M15fCsi3vTq2xChVOekBuUsHv85iwvGZqJg7ThtpyqlEnM2g7/STUfkvhnXcQACclEI0blTy6BwJAPmFyhU+d0ejVpbc53TdrL2HqYYUHi/tTy/dtUa7lbypzdwwJ2M1Tv5PE8sQxr9tgMbebfxVb/RFKdiCCtzC4ng=="; + String s = RSAUtils.decrypt(sec,priKey); + System.out.println(s); + + + String appId = "5d7d4d81a64f4b8f"; + String publicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB"; + String secret = RiskHttpUtil.encrypt(appId,publicKey); + System.out.println(secret); + String res = RiskHttpUtil.login("http://101.201.36.107:12388",secret); + System.out.println(res); + JSONObject jsonObject = JSON.parseObject(res); + String token = jsonObject.getString("data"); + String resPoint = RiskHttpUtil.pointData("http://101.201.36.107:12388",token); + System.out.println(resPoint); + + + ResponseDataDTO> riskPointRes = JSON.parseObject(resPoint, new TypeReference>>() { + }); + + } + +} diff --git a/casic-web/src/main/resources/doc/20250609.md b/casic-web/src/main/resources/doc/20250609.md new file mode 100644 index 0000000..0cb3464 --- /dev/null +++ b/casic-web/src/main/resources/doc/20250609.md @@ -0,0 +1,30 @@ +## 一、数据库更新 + +1. 设备分组数据库增加 + +``` +ALTER TABLE bus_device_info ADD COLUMN GROUP_ID bigint; + +create table bus_device_group +( + id bigint not null comment '主键', + create_time datetime comment '创建时间', + update_time datetime comment '修改时间', + group_name varchar(255) comment '分组名称', + create_id bigint comment '创建人', + dept_id bigint comment '所属组织' +); + +alter table bus_device_group comment '设备分组管理信息'; + +``` + +casic.tenant.excludes 配置项中增加 bus_device_group + + +casic.no-login-urls 中增加如下配置 +,/sync/risk/dept,/sync/risk/user/list,/sync/risk/device/list + + + + diff --git a/casic-web/src/main/resources/doc/20250624.md b/casic-web/src/main/resources/doc/20250624.md new file mode 100644 index 0000000..7af561d --- /dev/null +++ b/casic-web/src/main/resources/doc/20250624.md @@ -0,0 +1,34 @@ +## 一、数据库更新 + +1. 风险点表添加同步ID + +``` +ALTER TABLE risk_point_info ADD COLUMN TARGET_ID VARCHAR(255); + +``` + +2. 风险点相关配置项 + +casic.risk.open 默认false 不开启 开启需配置true +casic.risk.corn 定时时间 默认0 */5 * * * * 5分钟 +casic.risk.appId 默认 5d7d4d81a64f4b8f 如变更需更改 +casic.risk.publicKey 公钥 默认MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB +casic.risk.host 风险点地址, 默认http://101.201.36.107:12388 生产需更改 + +3. 增加字典值 + hazardLevelName 风险危险等级(706映射) + 1 低风险 + 1 一般风险 + 2 较大风险 + 3 重大风险 + 以上字典值以706风险等级名称对应本系统风险点1 2 3 等级,如果706风险等级名称变更 修改对应字典值名称即可 + +4. 盒子代理服务模块添加 + 增加配置项 + casic.video.box.proxy 192.168.83.37:30064 此处需变更为部署代理nginx的ip及端口,具体配置参见国标级联及代理服务配置说明 + + + + + + diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" new file mode 100644 index 0000000..30cdcbd --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" new file mode 100644 index 0000000..6a0069c --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" new file mode 100644 index 0000000..f775124 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" new file mode 100644 index 0000000..9f65ff1 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" new file mode 100644 index 0000000..613ec69 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" new file mode 100644 index 0000000..1614b04 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" new file mode 100644 index 0000000..3f5083a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" new file mode 100644 index 0000000..134a604 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" new file mode 100644 index 0000000..7edeaa0 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" new file mode 100644 index 0000000..ccd0993 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" new file mode 100644 index 0000000..0cbf80d --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" new file mode 100644 index 0000000..613ec69 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" new file mode 100644 index 0000000..3f5083a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" new file mode 100644 index 0000000..7edeaa0 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image012.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image012.jpg" new file mode 100644 index 0000000..0cbf80d --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image012.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/themedata.thmx" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/themedata.thmx" new file mode 100644 index 0000000..67aae0a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/themedata.thmx" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/colorschememapping.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/colorschememapping.xml" new file mode 100644 index 0000000..6a0069c --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/colorschememapping.xml" @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image001.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image001.png" new file mode 100644 index 0000000..1614b04 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image001.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.gif" new file mode 100644 index 0000000..92bd844 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.png" new file mode 100644 index 0000000..9f65ff1 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.jpg" new file mode 100644 index 0000000..72b5d13 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.png" new file mode 100644 index 0000000..a5af4eb --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.png" Binary files differ diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java new file mode 100644 index 0000000..77c14a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.device.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dictmap.DeviceGroupQueryDict; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.vo.BusDeviceGroupVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; + +/** + * 设备分组管理信息Controller + * + * @author lwh + * @date 2025-06-11 + */ +@Api(tags = "设备分组管理信息") +@RestController +@RequestMapping("/device/group") +public class BusDeviceGroupController extends BaseController { + + private final IBusDeviceGroupService busDeviceGroupService; + private final AbstractPermissionContext abstractPermissionContext; + + public BusDeviceGroupController(IBusDeviceGroupService busDeviceGroupService, AbstractPermissionContext abstractPermissionContext) { + this.busDeviceGroupService = busDeviceGroupService; + this.abstractPermissionContext = abstractPermissionContext; + } + + @ApiOperation(value = "列表查询") + @GetMapping(value = "/list") + public ResponseDataDTO> list(BusDeviceGroupVO busDeviceGroupVO) { + QueryWrapper query = busDeviceGroupVO.genQuery(); + return ResponseDataDTO.success(busDeviceGroupService.list(query)); + } + + @ApiOperation(value = "分组树结构查询") + @BussinessLog(value = "分组树结构查询") + @GetMapping(value = "/tree") + public ResponseDataDTO> groupTree() { + List groupDTOList = busDeviceGroupService.groupTree(); + return ResponseDataDTO.success(groupDTOList); + } + + @BussinessLog(value = "设备分组分页查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "分页查询") + @GetMapping(value = "/listPage") + public ResponseDataDTO> listPage(BusDeviceGroupVO busDeviceGroupVO) { + Page page = PageFactory.defaultPage(); + QueryWrapper query = busDeviceGroupVO.genQuery(); + List list = busDeviceGroupService.selectBusDeviceGroupPage(page, query); + page.setRecords(list); + return ResponseDataDTO.success(super.packForBT(page)); + } + + @BussinessLog(value = "设备分组新增", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "新增接口") + @PostMapping(value = "/add") + public ResponseDataDTO add(@RequestBody BusDeviceGroup busDeviceGroup) { + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + busDeviceGroup.setCreateId(user.getId()); + busDeviceGroup.setCreateTime(new Date()); + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.save(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组修改", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @PostMapping(value = "/update") + public ResponseDataDTO update(@RequestBody BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.updateById(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组删除", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "删除接口") + @GetMapping(value = "/delete") + public ResponseDataDTO delete(String id) { + busDeviceGroupService.removeById(id); + return ResponseDataDTO.success(); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { + busDeviceGroupService.removeByIds(ids.getIds()); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组详情查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "详情查询") + @GetMapping(value = "/detail") + public ResponseDataDTO detail(String id) { + return ResponseDataDTO.success(busDeviceGroupService.getById(id)); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java new file mode 100644 index 0000000..9d3726f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.device.dao; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import java.util.List; +/** + *

+ * 设备分组管理信息 Mapper 接口 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface BusDeviceGroupMapper extends BaseMapper { +/** +* 设备分组管理信息 分页检索 +*/ +List selectBusDeviceGroupPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml new file mode 100644 index 0000000..a6dd84f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + id + , + create_time as createTime , + update_time as updateTime , + group_name as groupName , + create_id as createId , + dept_id as deptId + + + a + . + id + , + a.create_time + as createTime , + a.update_time + as updateTime , + a.group_name + as groupName , + a.create_id + as createId , + a.dept_id + as deptId + + + + + + and group_name like concat('%',#{request.groupName},'%') + + + and dept_id = #{request.deptId} + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java new file mode 100644 index 0000000..a821e92 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dictmap; + +import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap; + +public class DeviceGroupQueryDict extends AbstractDictMap { + + @Override + public void init() { + put("id", "主键"); + put("deptId", "所属组织"); + put("groupName", "分组名称"); + + put("deptName", "所属单位"); + } + + @Override + protected void initBeWrapped() { + + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java new file mode 100644 index 0000000..d8d1712 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.device.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + + +/** + * 设备分组管理信息对象 bus_device_group + * + * @author lwh + * @date 2025-06-11 + */ +@Data +@TableName("bus_device_group") +public class BusDeviceGroup extends Model { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键", dataType = "Long") + @TableField("id") + private Long id; + + @ApiModelProperty(value = "创建时间", dataType = "Date") + @TableField("create_time") + private Date createTime; + + @ApiModelProperty(value = "修改时间", dataType = "Date") + @TableField("update_time") + private Date updateTime; + + @ApiModelProperty(value = "分组名称", dataType = "String") + @TableField("group_name") + private String groupName; + + @ApiModelProperty(value = "创建人", dataType = "Long") + @TableField("create_id") + private Long createId; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; + @TableField(exist = false) + private String deptName; + + @Override + public String toString() { + return "BusDeviceGroup{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "groupName=" + groupName + + "createId=" + createId + + "deptId=" + deptId + + "}"; + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java new file mode 100644 index 0000000..d2cee5c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; + +import java.util.List; + + +/** + *

+ * 设备分组管理信息 服务类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface IBusDeviceGroupService extends IService { + /** + * 设备分组管理信息 分页检索 + */ + List selectBusDeviceGroupPage(Page page, QueryWrapper query); + + /** + * 树结构查询 + * + * @return + */ + List groupTree(); + + DeptDTO convertDeptDTO(BusDeviceGroup group); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java new file mode 100644 index 0000000..a6f08b7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java @@ -0,0 +1,139 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractAuthService; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.modular.data.constants.DataConstants; +import com.casic.missiles.modular.device.dao.BusDeviceGroupMapper; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; +import com.casic.missiles.modular.system.model.Dept; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.data.constants.DataConstants.NODE_TYPE_DEPT; + + +/** + *

+ * 设备分组管理信息 服务实现类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +@Service +public class BusDeviceGroupServiceImpl extends ServiceImpl implements IBusDeviceGroupService { + @Resource + private AbstractDeptService deptService; + + @Override + public List selectBusDeviceGroupPage(Page page, QueryWrapper query) { + List list = this.baseMapper.selectBusDeviceGroupPage(page, query); + list.forEach(this::wrapperInfo); + return list; + } + + @Override + public List groupTree() { + List deptList = deviceDept(); + + List deptDTOS = new ArrayList<>(); + //树节点根 + List rootIds = new ArrayList<>(); + Set normalIds = new HashSet<>(); + + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setId(dept.getId()); + deptDTO.setPid(dept.getPid()); + deptDTO.setFullName(dept.getFullName()); + deptDTO.setName(dept.getSimpleName()); + deptDTO.setType(NODE_TYPE_DEPT); + + normalIds.add(dept.getId()); + deptDTOS.add(deptDTO); + + + //查询该组织下分组信息 + LambdaQueryWrapper deviceQuery = new LambdaQueryWrapper<>(); + deviceQuery.eq(BusDeviceGroup::getDeptId, deptDTO.getId()); + + deviceQuery.orderByAsc(BusDeviceGroup::getGroupName); + List deviceInfos = this.list(deviceQuery); + List deptDTOList = new ArrayList<>(); + for (BusDeviceGroup group : deviceInfos) { + DeptDTO deptDto = this.convertDeptDTO(group); + deptDTOList.add(deptDto); + } + deptDTO.setChildrenNodes(deptDTOList); + } + + for (DeptDTO deptDTO : deptDTOS) { + if (!normalIds.contains(deptDTO.getPid())) { + rootIds.add(deptDTO.getPid()); + } + } + + //过滤根节点 + DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); + List newTree = new ArrayList<>(); + rootIds = rootIds.stream().distinct().collect(Collectors.toList()); + for (Long rootId : rootIds) { + abstractTreeBuildFactory.setRootId(rootId + ""); + newTree.addAll(abstractTreeBuildFactory.doTreeBuild(deptDTOS)); + } + return newTree; + } + + public DeptDTO convertDeptDTO(BusDeviceGroup group) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setType(DataConstants.NODE_TYPE_GROUP); + deptDTO.setId(group.getId()); + deptDTO.setPid(group.getDeptId()); + deptDTO.setName(group.getGroupName()); + deptDTO.setGroup(group); + return deptDTO; + } + + @Resource + private AbstractAuthService authService; + + private List deviceDept() { + //查询可见组织 + DataScope scope = authService.getLoginUserDataScope(); + AuthUser user = authService.getLoginUser(); + + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); + deptQuery.inSql(Dept::getId, "select dept_id from bus_device_info "); + if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums().getCode())) { + deptQuery.in(Dept::getId, scope.getDeptIds()); + } + deptQuery.orderByAsc(Dept::getNum); + + List deptList = deptService.list(deptQuery); + return deptList; + } + + @Override + public List list() { + List list = super.list(); + list.forEach(this::wrapperInfo); + return list; + } + + private void wrapperInfo(BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setDeptName(deptService.getDeptName(busDeviceGroup.getDeptId())); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java new file mode 100644 index 0000000..413d7ac --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.device.vo; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 设备分组管理信息对象VO + * + * @author lwh + * @date 2025-06-11 + */ +@Data +public class BusDeviceGroupVO { + private static final long serialVersionUID = 1L; + + + @ApiModelProperty(value = "分组名称", dataType = "String") + private String groupName; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + private Long deptId; + + public QueryWrapper genQuery() { + QueryWrapper query = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(groupName)) { + query.like("group_name", groupName); + } + if (deptId != null) { + query.eq("dept_id", deptId); + } + return query; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java new file mode 100644 index 0000000..477435e --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java @@ -0,0 +1,163 @@ +package com.casic.missiles.modular.device.dto.risk; + +import cn.hutool.core.convert.Convert; +import com.casic.missiles.modular.device.model.RiskPointInfo; +import lombok.Data; + +@Data +public class SyncRiskDTO { + /** + * 主键 + */ + private String id; + private String name; + /** + * 重大风险 + * 风险等级 + */ + private String hazardLevel; + /** + * 危险因素 + */ + private String riskFactors; + /** + * 所属单位 + */ + private String affiliatedUnit; + /** + * 所属部门 + */ + private String department; + + /** + * 定员 + */ + private String staffing; + + /** + * 定量 + */ + private String ration; + + /** + * 地理位置 + */ + private String geographicalPosition; + + /** + * 责任人 + */ + private String personLiable; + + /** + * 现场负责人 + */ + private String siteLeader; + + /** + * 主要设备、设施设计制造单位 + */ + private String zysbZzdw; + + /** + * 所在单位 + */ + private String szdw; + + /** + * 作业人数 + */ + private String numberOperators; + + /** + * 主要性能参数 + */ + private String mainPerformanceParameters; + + /** + * 工作环境参数 + */ + private String workingEnvironmentParameters; + + /** + * 安装单位 + */ + private String installationUnit; + + /** + * 投产日期 + */ + private String productionDate; + + /** + * 设备总数 + */ + private String totalEquipment; + + /** + * 备注 + */ + private String note; + + /** + * 创建用户 + */ + private String createUser; + private String createTime; + private String updateUser; + private String updateTime; + /** + * 是否删除0:否;1:是(接口已过滤掉1的数据) + */ + private Integer isDel; + + /** + * 行政区域 + */ + private String xzqy; + /** + * 街道 + */ + private String jdxx; + + /** + * 楼房 + */ + private String loufang; + + /** + * 楼层 + */ + private String louceng; + + /** + * 房间 + */ + private String roomName; + /** + * 所属单位编码 + */ + private String affiliatedUnitsCode; + + /** + * 危险性质 + */ + private String hazardousNature; + + public RiskPointInfo convertToRisk(RiskPointInfo pointInfo) { + //风险点缺少密级 + pointInfo.setSecretLevel("1"); + // hazardLevel 是否有字典值? + + if (department != null) { + pointInfo.setDeptId(Convert.toLong(department)); + } + pointInfo.setNature(hazardousNature); + pointInfo.setRiskName(name); + pointInfo.setAddress(geographicalPosition); + pointInfo.setTargetId(id); + //默认类型为1 + pointInfo.setRiskType(1); + return pointInfo; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java new file mode 100644 index 0000000..08e89a0 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.device.handler; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class BoxDefaultHttpHeaderHandler extends DefaultHttpHeaderHandler { + /** + * 代理服务IP + */ + private String xTargetHost; + + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Access-Token", token); + } + if (StrUtil.isNotEmpty(xTargetHost)){ + base.addHeader("X-TARGET-HOST", xTargetHost); + } + } + + public String getXTargetHost() { + return xTargetHost; + } + + public void setXTargetHost(String XTargetHost) { + this.xTargetHost = XTargetHost; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java new file mode 100644 index 0000000..903e567 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.http; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class RiskHttpHandler extends DefaultHttpHeaderHandler { + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Authorization", token); + } + + } +} + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java new file mode 100644 index 0000000..9f75f42 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java @@ -0,0 +1,35 @@ +package com.casic.missiles.modular.task; + +import com.casic.missiles.modular.device.service.IRiskPointInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +@Slf4j +@Component +public class RiskTask { + + @Value("${casic.risk.open:false}") + private Boolean open; + + @Resource + private IRiskPointInfoService riskPointInfoService; + + /** + * 设备信息同步0 + * 每30分钟采集一次 + */ + @Scheduled(cron = "${casic.risk.corn:0 */1 * * * *}") + public void device() { + //风险点数据同步 + if (open) { + log.info("risk sync start...."); + riskPointInfoService.loadRiskInfo(); + log.info("risk sync end...."); + } + } + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java new file mode 100644 index 0000000..e4ca4f1 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.util; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.modular.http.RiskHttpHandler; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import com.casic.missiles.modular.system.utils.HttpUtils; + +import java.util.HashMap; +import java.util.Map; + +public class RiskHttpUtil { + public static final String loginUrl = "/rest/platform/systemLogin"; + public static final String pointDataUrl = "/rest/platform/dangerPointData"; + + public static String login(String baseUrl, String secret) { + Map param = new HashMap<>(); + param.put("secret", secret); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + defaultHeaderHandler.setJson(true); + String res = HttpUtils.sendPost(baseUrl + loginUrl, param, "", defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + public static String pointData(String baseUrl, String token) { + Map param = new HashMap<>(); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + + String res = HttpUtils.sendGet(baseUrl + pointDataUrl, param, token, defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + /** + * 登录数据加密 + * @param appId 加密id + * @param publicKey 公钥 + * @return + * @throws Exception + */ + public static String encrypt(String appId,String publicKey) throws Exception { + long ts = System.currentTimeMillis(); + return RSAUtils.encrypt(appId+"_"+ts,publicKey); + } + + +} diff --git a/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java new file mode 100644 index 0000000..9ba1e2a --- /dev/null +++ b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java @@ -0,0 +1,62 @@ +package com.casic.missiles.test; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.TypeReference; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.risk.SyncRiskDTO; +import com.casic.missiles.modular.device.util.AesUtil; +import com.casic.missiles.modular.util.RiskHttpUtil; +import com.casic.missiles.modular.util.WvpUtil; +import com.casic.missiles.modular.wvp.dto.MvpResponseDTO; + +import java.io.FileInputStream; +import java.security.MessageDigest; +import java.util.Date; +import java.util.HashMap; +import java.util.List; + +public class RiskTest { + public static void main(String[] args) throws Exception { +// File file = new File("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// String task = ZipFileUtil.getZipHandleTask("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(task); +// String md5 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(md5); +// String md52 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241122.zip"); +// System.out.println(md52); + + testDeviceLogin(); + System.out.println( DateUtil.offsetMinute(new Date(),-5)); + } + public static void testDeviceLogin() throws Exception { + Long time = System.currentTimeMillis(); + String str = "FXDDT_" + time; + String pubKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCynMBxzoNBemZKuxjlZzp04Lx/b0j1xRUznBKjlQSATwc+1DaxBpKdT4WfqAuFlSQLA7qLdntXw2cvUEvRxfdjJp2KfZLkEYRmYx3LT51WdCmouQREtMrR6j3mri8jV8TjktGCmBFMKX7eGeQM8O249yVjby6502bzZXehQ707JQIDAQAB"; + String sec = RSAUtils.encrypt(str, pubKey); + System.out.println(sec); + String priKey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALKcwHHOg0F6Zkq7GOVnOnTgvH9vSPXFFTOcEqOVBIBPBz7UNrEGkp1PhZ+oC4WVJAsDuot2e1fDZy9QS9HF92MmnYp9kuQRhGZjHctPnVZ0Kai5BES0ytHqPeauLyNXxOOS0YKYEUwpft4Z5Azw7bj3JWNvLrnTZvNld6FDvTslAgMBAAECgYAqN/kZLYpC+O6i7XSmDO95XwHPUXu6dDpdt5+EQR4OQh/hTwIaeAZB3uEj6vHGQomBfQEkI/5lsU97lIxHanbd+Hro7JyIhsGD5LR5XnZHVKzFiZW62OIU6FI9dlQNN8miiblnmyDwiMA3okaHl0O7qQjZ+IvY2csgmJc7AXpPpQJBAOhrhcfWFcgffj2O6HYNlBLFfbboc/ZzrEADDXKnxRSHlo5o8W+6gylG/L2NGtbag5S68B9VYzdkSQ1++5C+Ws8CQQDEu7h311PLEiKgqzGHpjzadQETmt/jMadaKQmT0TZwNVi6X8lR17U5hF8dAqZzUzr9kUC0HRIZhg4Uv1v3W3fLAkB4YPhxgJjXhjhEefg87Nt8vX1Xdx5Yz6CvpuUYNX0GHRQFvqUOUXQNtQ7CvorgLV1pc0lbcUZqMi8EJnj1hyJRAkEAjHXWm8GiMt+M15fCsi3vTq2xChVOekBuUsHv85iwvGZqJg7ThtpyqlEnM2g7/STUfkvhnXcQACclEI0blTy6BwJAPmFyhU+d0ejVpbc53TdrL2HqYYUHi/tTy/dtUa7lbypzdwwJ2M1Tv5PE8sQxr9tgMbebfxVb/RFKdiCCtzC4ng=="; + String s = RSAUtils.decrypt(sec,priKey); + System.out.println(s); + + + String appId = "5d7d4d81a64f4b8f"; + String publicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB"; + String secret = RiskHttpUtil.encrypt(appId,publicKey); + System.out.println(secret); + String res = RiskHttpUtil.login("http://101.201.36.107:12388",secret); + System.out.println(res); + JSONObject jsonObject = JSON.parseObject(res); + String token = jsonObject.getString("data"); + String resPoint = RiskHttpUtil.pointData("http://101.201.36.107:12388",token); + System.out.println(resPoint); + + + ResponseDataDTO> riskPointRes = JSON.parseObject(resPoint, new TypeReference>>() { + }); + + } + +} diff --git a/casic-web/src/main/resources/doc/20250609.md b/casic-web/src/main/resources/doc/20250609.md new file mode 100644 index 0000000..0cb3464 --- /dev/null +++ b/casic-web/src/main/resources/doc/20250609.md @@ -0,0 +1,30 @@ +## 一、数据库更新 + +1. 设备分组数据库增加 + +``` +ALTER TABLE bus_device_info ADD COLUMN GROUP_ID bigint; + +create table bus_device_group +( + id bigint not null comment '主键', + create_time datetime comment '创建时间', + update_time datetime comment '修改时间', + group_name varchar(255) comment '分组名称', + create_id bigint comment '创建人', + dept_id bigint comment '所属组织' +); + +alter table bus_device_group comment '设备分组管理信息'; + +``` + +casic.tenant.excludes 配置项中增加 bus_device_group + + +casic.no-login-urls 中增加如下配置 +,/sync/risk/dept,/sync/risk/user/list,/sync/risk/device/list + + + + diff --git a/casic-web/src/main/resources/doc/20250624.md b/casic-web/src/main/resources/doc/20250624.md new file mode 100644 index 0000000..7af561d --- /dev/null +++ b/casic-web/src/main/resources/doc/20250624.md @@ -0,0 +1,34 @@ +## 一、数据库更新 + +1. 风险点表添加同步ID + +``` +ALTER TABLE risk_point_info ADD COLUMN TARGET_ID VARCHAR(255); + +``` + +2. 风险点相关配置项 + +casic.risk.open 默认false 不开启 开启需配置true +casic.risk.corn 定时时间 默认0 */5 * * * * 5分钟 +casic.risk.appId 默认 5d7d4d81a64f4b8f 如变更需更改 +casic.risk.publicKey 公钥 默认MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB +casic.risk.host 风险点地址, 默认http://101.201.36.107:12388 生产需更改 + +3. 增加字典值 + hazardLevelName 风险危险等级(706映射) + 1 低风险 + 1 一般风险 + 2 较大风险 + 3 重大风险 + 以上字典值以706风险等级名称对应本系统风险点1 2 3 等级,如果706风险等级名称变更 修改对应字典值名称即可 + +4. 盒子代理服务模块添加 + 增加配置项 + casic.video.box.proxy 192.168.83.37:30064 此处需变更为部署代理nginx的ip及端口,具体配置参见国标级联及代理服务配置说明 + + + + + + diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" new file mode 100644 index 0000000..30cdcbd --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" new file mode 100644 index 0000000..6a0069c --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" new file mode 100644 index 0000000..f775124 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" new file mode 100644 index 0000000..9f65ff1 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" new file mode 100644 index 0000000..613ec69 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" new file mode 100644 index 0000000..1614b04 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" new file mode 100644 index 0000000..3f5083a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" new file mode 100644 index 0000000..134a604 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" new file mode 100644 index 0000000..7edeaa0 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" new file mode 100644 index 0000000..ccd0993 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" new file mode 100644 index 0000000..0cbf80d --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" new file mode 100644 index 0000000..613ec69 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" new file mode 100644 index 0000000..3f5083a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" new file mode 100644 index 0000000..7edeaa0 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image012.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image012.jpg" new file mode 100644 index 0000000..0cbf80d --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image012.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/themedata.thmx" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/themedata.thmx" new file mode 100644 index 0000000..67aae0a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/themedata.thmx" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/colorschememapping.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/colorschememapping.xml" new file mode 100644 index 0000000..6a0069c --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/colorschememapping.xml" @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image001.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image001.png" new file mode 100644 index 0000000..1614b04 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image001.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.gif" new file mode 100644 index 0000000..92bd844 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.png" new file mode 100644 index 0000000..9f65ff1 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.jpg" new file mode 100644 index 0000000..72b5d13 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.png" new file mode 100644 index 0000000..a5af4eb --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.gif" new file mode 100644 index 0000000..b4e65ac --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.gif" Binary files differ diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java new file mode 100644 index 0000000..77c14a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.device.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dictmap.DeviceGroupQueryDict; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.vo.BusDeviceGroupVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; + +/** + * 设备分组管理信息Controller + * + * @author lwh + * @date 2025-06-11 + */ +@Api(tags = "设备分组管理信息") +@RestController +@RequestMapping("/device/group") +public class BusDeviceGroupController extends BaseController { + + private final IBusDeviceGroupService busDeviceGroupService; + private final AbstractPermissionContext abstractPermissionContext; + + public BusDeviceGroupController(IBusDeviceGroupService busDeviceGroupService, AbstractPermissionContext abstractPermissionContext) { + this.busDeviceGroupService = busDeviceGroupService; + this.abstractPermissionContext = abstractPermissionContext; + } + + @ApiOperation(value = "列表查询") + @GetMapping(value = "/list") + public ResponseDataDTO> list(BusDeviceGroupVO busDeviceGroupVO) { + QueryWrapper query = busDeviceGroupVO.genQuery(); + return ResponseDataDTO.success(busDeviceGroupService.list(query)); + } + + @ApiOperation(value = "分组树结构查询") + @BussinessLog(value = "分组树结构查询") + @GetMapping(value = "/tree") + public ResponseDataDTO> groupTree() { + List groupDTOList = busDeviceGroupService.groupTree(); + return ResponseDataDTO.success(groupDTOList); + } + + @BussinessLog(value = "设备分组分页查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "分页查询") + @GetMapping(value = "/listPage") + public ResponseDataDTO> listPage(BusDeviceGroupVO busDeviceGroupVO) { + Page page = PageFactory.defaultPage(); + QueryWrapper query = busDeviceGroupVO.genQuery(); + List list = busDeviceGroupService.selectBusDeviceGroupPage(page, query); + page.setRecords(list); + return ResponseDataDTO.success(super.packForBT(page)); + } + + @BussinessLog(value = "设备分组新增", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "新增接口") + @PostMapping(value = "/add") + public ResponseDataDTO add(@RequestBody BusDeviceGroup busDeviceGroup) { + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + busDeviceGroup.setCreateId(user.getId()); + busDeviceGroup.setCreateTime(new Date()); + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.save(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组修改", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @PostMapping(value = "/update") + public ResponseDataDTO update(@RequestBody BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.updateById(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组删除", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "删除接口") + @GetMapping(value = "/delete") + public ResponseDataDTO delete(String id) { + busDeviceGroupService.removeById(id); + return ResponseDataDTO.success(); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { + busDeviceGroupService.removeByIds(ids.getIds()); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组详情查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "详情查询") + @GetMapping(value = "/detail") + public ResponseDataDTO detail(String id) { + return ResponseDataDTO.success(busDeviceGroupService.getById(id)); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java new file mode 100644 index 0000000..9d3726f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.device.dao; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import java.util.List; +/** + *

+ * 设备分组管理信息 Mapper 接口 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface BusDeviceGroupMapper extends BaseMapper { +/** +* 设备分组管理信息 分页检索 +*/ +List selectBusDeviceGroupPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml new file mode 100644 index 0000000..a6dd84f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + id + , + create_time as createTime , + update_time as updateTime , + group_name as groupName , + create_id as createId , + dept_id as deptId + + + a + . + id + , + a.create_time + as createTime , + a.update_time + as updateTime , + a.group_name + as groupName , + a.create_id + as createId , + a.dept_id + as deptId + + + + + + and group_name like concat('%',#{request.groupName},'%') + + + and dept_id = #{request.deptId} + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java new file mode 100644 index 0000000..a821e92 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dictmap; + +import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap; + +public class DeviceGroupQueryDict extends AbstractDictMap { + + @Override + public void init() { + put("id", "主键"); + put("deptId", "所属组织"); + put("groupName", "分组名称"); + + put("deptName", "所属单位"); + } + + @Override + protected void initBeWrapped() { + + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java new file mode 100644 index 0000000..d8d1712 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.device.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + + +/** + * 设备分组管理信息对象 bus_device_group + * + * @author lwh + * @date 2025-06-11 + */ +@Data +@TableName("bus_device_group") +public class BusDeviceGroup extends Model { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键", dataType = "Long") + @TableField("id") + private Long id; + + @ApiModelProperty(value = "创建时间", dataType = "Date") + @TableField("create_time") + private Date createTime; + + @ApiModelProperty(value = "修改时间", dataType = "Date") + @TableField("update_time") + private Date updateTime; + + @ApiModelProperty(value = "分组名称", dataType = "String") + @TableField("group_name") + private String groupName; + + @ApiModelProperty(value = "创建人", dataType = "Long") + @TableField("create_id") + private Long createId; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; + @TableField(exist = false) + private String deptName; + + @Override + public String toString() { + return "BusDeviceGroup{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "groupName=" + groupName + + "createId=" + createId + + "deptId=" + deptId + + "}"; + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java new file mode 100644 index 0000000..d2cee5c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; + +import java.util.List; + + +/** + *

+ * 设备分组管理信息 服务类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface IBusDeviceGroupService extends IService { + /** + * 设备分组管理信息 分页检索 + */ + List selectBusDeviceGroupPage(Page page, QueryWrapper query); + + /** + * 树结构查询 + * + * @return + */ + List groupTree(); + + DeptDTO convertDeptDTO(BusDeviceGroup group); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java new file mode 100644 index 0000000..a6f08b7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java @@ -0,0 +1,139 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractAuthService; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.modular.data.constants.DataConstants; +import com.casic.missiles.modular.device.dao.BusDeviceGroupMapper; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; +import com.casic.missiles.modular.system.model.Dept; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.data.constants.DataConstants.NODE_TYPE_DEPT; + + +/** + *

+ * 设备分组管理信息 服务实现类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +@Service +public class BusDeviceGroupServiceImpl extends ServiceImpl implements IBusDeviceGroupService { + @Resource + private AbstractDeptService deptService; + + @Override + public List selectBusDeviceGroupPage(Page page, QueryWrapper query) { + List list = this.baseMapper.selectBusDeviceGroupPage(page, query); + list.forEach(this::wrapperInfo); + return list; + } + + @Override + public List groupTree() { + List deptList = deviceDept(); + + List deptDTOS = new ArrayList<>(); + //树节点根 + List rootIds = new ArrayList<>(); + Set normalIds = new HashSet<>(); + + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setId(dept.getId()); + deptDTO.setPid(dept.getPid()); + deptDTO.setFullName(dept.getFullName()); + deptDTO.setName(dept.getSimpleName()); + deptDTO.setType(NODE_TYPE_DEPT); + + normalIds.add(dept.getId()); + deptDTOS.add(deptDTO); + + + //查询该组织下分组信息 + LambdaQueryWrapper deviceQuery = new LambdaQueryWrapper<>(); + deviceQuery.eq(BusDeviceGroup::getDeptId, deptDTO.getId()); + + deviceQuery.orderByAsc(BusDeviceGroup::getGroupName); + List deviceInfos = this.list(deviceQuery); + List deptDTOList = new ArrayList<>(); + for (BusDeviceGroup group : deviceInfos) { + DeptDTO deptDto = this.convertDeptDTO(group); + deptDTOList.add(deptDto); + } + deptDTO.setChildrenNodes(deptDTOList); + } + + for (DeptDTO deptDTO : deptDTOS) { + if (!normalIds.contains(deptDTO.getPid())) { + rootIds.add(deptDTO.getPid()); + } + } + + //过滤根节点 + DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); + List newTree = new ArrayList<>(); + rootIds = rootIds.stream().distinct().collect(Collectors.toList()); + for (Long rootId : rootIds) { + abstractTreeBuildFactory.setRootId(rootId + ""); + newTree.addAll(abstractTreeBuildFactory.doTreeBuild(deptDTOS)); + } + return newTree; + } + + public DeptDTO convertDeptDTO(BusDeviceGroup group) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setType(DataConstants.NODE_TYPE_GROUP); + deptDTO.setId(group.getId()); + deptDTO.setPid(group.getDeptId()); + deptDTO.setName(group.getGroupName()); + deptDTO.setGroup(group); + return deptDTO; + } + + @Resource + private AbstractAuthService authService; + + private List deviceDept() { + //查询可见组织 + DataScope scope = authService.getLoginUserDataScope(); + AuthUser user = authService.getLoginUser(); + + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); + deptQuery.inSql(Dept::getId, "select dept_id from bus_device_info "); + if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums().getCode())) { + deptQuery.in(Dept::getId, scope.getDeptIds()); + } + deptQuery.orderByAsc(Dept::getNum); + + List deptList = deptService.list(deptQuery); + return deptList; + } + + @Override + public List list() { + List list = super.list(); + list.forEach(this::wrapperInfo); + return list; + } + + private void wrapperInfo(BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setDeptName(deptService.getDeptName(busDeviceGroup.getDeptId())); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java new file mode 100644 index 0000000..413d7ac --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.device.vo; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 设备分组管理信息对象VO + * + * @author lwh + * @date 2025-06-11 + */ +@Data +public class BusDeviceGroupVO { + private static final long serialVersionUID = 1L; + + + @ApiModelProperty(value = "分组名称", dataType = "String") + private String groupName; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + private Long deptId; + + public QueryWrapper genQuery() { + QueryWrapper query = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(groupName)) { + query.like("group_name", groupName); + } + if (deptId != null) { + query.eq("dept_id", deptId); + } + return query; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java new file mode 100644 index 0000000..477435e --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java @@ -0,0 +1,163 @@ +package com.casic.missiles.modular.device.dto.risk; + +import cn.hutool.core.convert.Convert; +import com.casic.missiles.modular.device.model.RiskPointInfo; +import lombok.Data; + +@Data +public class SyncRiskDTO { + /** + * 主键 + */ + private String id; + private String name; + /** + * 重大风险 + * 风险等级 + */ + private String hazardLevel; + /** + * 危险因素 + */ + private String riskFactors; + /** + * 所属单位 + */ + private String affiliatedUnit; + /** + * 所属部门 + */ + private String department; + + /** + * 定员 + */ + private String staffing; + + /** + * 定量 + */ + private String ration; + + /** + * 地理位置 + */ + private String geographicalPosition; + + /** + * 责任人 + */ + private String personLiable; + + /** + * 现场负责人 + */ + private String siteLeader; + + /** + * 主要设备、设施设计制造单位 + */ + private String zysbZzdw; + + /** + * 所在单位 + */ + private String szdw; + + /** + * 作业人数 + */ + private String numberOperators; + + /** + * 主要性能参数 + */ + private String mainPerformanceParameters; + + /** + * 工作环境参数 + */ + private String workingEnvironmentParameters; + + /** + * 安装单位 + */ + private String installationUnit; + + /** + * 投产日期 + */ + private String productionDate; + + /** + * 设备总数 + */ + private String totalEquipment; + + /** + * 备注 + */ + private String note; + + /** + * 创建用户 + */ + private String createUser; + private String createTime; + private String updateUser; + private String updateTime; + /** + * 是否删除0:否;1:是(接口已过滤掉1的数据) + */ + private Integer isDel; + + /** + * 行政区域 + */ + private String xzqy; + /** + * 街道 + */ + private String jdxx; + + /** + * 楼房 + */ + private String loufang; + + /** + * 楼层 + */ + private String louceng; + + /** + * 房间 + */ + private String roomName; + /** + * 所属单位编码 + */ + private String affiliatedUnitsCode; + + /** + * 危险性质 + */ + private String hazardousNature; + + public RiskPointInfo convertToRisk(RiskPointInfo pointInfo) { + //风险点缺少密级 + pointInfo.setSecretLevel("1"); + // hazardLevel 是否有字典值? + + if (department != null) { + pointInfo.setDeptId(Convert.toLong(department)); + } + pointInfo.setNature(hazardousNature); + pointInfo.setRiskName(name); + pointInfo.setAddress(geographicalPosition); + pointInfo.setTargetId(id); + //默认类型为1 + pointInfo.setRiskType(1); + return pointInfo; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java new file mode 100644 index 0000000..08e89a0 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.device.handler; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class BoxDefaultHttpHeaderHandler extends DefaultHttpHeaderHandler { + /** + * 代理服务IP + */ + private String xTargetHost; + + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Access-Token", token); + } + if (StrUtil.isNotEmpty(xTargetHost)){ + base.addHeader("X-TARGET-HOST", xTargetHost); + } + } + + public String getXTargetHost() { + return xTargetHost; + } + + public void setXTargetHost(String XTargetHost) { + this.xTargetHost = XTargetHost; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java new file mode 100644 index 0000000..903e567 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.http; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class RiskHttpHandler extends DefaultHttpHeaderHandler { + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Authorization", token); + } + + } +} + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java new file mode 100644 index 0000000..9f75f42 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java @@ -0,0 +1,35 @@ +package com.casic.missiles.modular.task; + +import com.casic.missiles.modular.device.service.IRiskPointInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +@Slf4j +@Component +public class RiskTask { + + @Value("${casic.risk.open:false}") + private Boolean open; + + @Resource + private IRiskPointInfoService riskPointInfoService; + + /** + * 设备信息同步0 + * 每30分钟采集一次 + */ + @Scheduled(cron = "${casic.risk.corn:0 */1 * * * *}") + public void device() { + //风险点数据同步 + if (open) { + log.info("risk sync start...."); + riskPointInfoService.loadRiskInfo(); + log.info("risk sync end...."); + } + } + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java new file mode 100644 index 0000000..e4ca4f1 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.util; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.modular.http.RiskHttpHandler; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import com.casic.missiles.modular.system.utils.HttpUtils; + +import java.util.HashMap; +import java.util.Map; + +public class RiskHttpUtil { + public static final String loginUrl = "/rest/platform/systemLogin"; + public static final String pointDataUrl = "/rest/platform/dangerPointData"; + + public static String login(String baseUrl, String secret) { + Map param = new HashMap<>(); + param.put("secret", secret); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + defaultHeaderHandler.setJson(true); + String res = HttpUtils.sendPost(baseUrl + loginUrl, param, "", defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + public static String pointData(String baseUrl, String token) { + Map param = new HashMap<>(); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + + String res = HttpUtils.sendGet(baseUrl + pointDataUrl, param, token, defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + /** + * 登录数据加密 + * @param appId 加密id + * @param publicKey 公钥 + * @return + * @throws Exception + */ + public static String encrypt(String appId,String publicKey) throws Exception { + long ts = System.currentTimeMillis(); + return RSAUtils.encrypt(appId+"_"+ts,publicKey); + } + + +} diff --git a/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java new file mode 100644 index 0000000..9ba1e2a --- /dev/null +++ b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java @@ -0,0 +1,62 @@ +package com.casic.missiles.test; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.TypeReference; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.risk.SyncRiskDTO; +import com.casic.missiles.modular.device.util.AesUtil; +import com.casic.missiles.modular.util.RiskHttpUtil; +import com.casic.missiles.modular.util.WvpUtil; +import com.casic.missiles.modular.wvp.dto.MvpResponseDTO; + +import java.io.FileInputStream; +import java.security.MessageDigest; +import java.util.Date; +import java.util.HashMap; +import java.util.List; + +public class RiskTest { + public static void main(String[] args) throws Exception { +// File file = new File("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// String task = ZipFileUtil.getZipHandleTask("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(task); +// String md5 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(md5); +// String md52 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241122.zip"); +// System.out.println(md52); + + testDeviceLogin(); + System.out.println( DateUtil.offsetMinute(new Date(),-5)); + } + public static void testDeviceLogin() throws Exception { + Long time = System.currentTimeMillis(); + String str = "FXDDT_" + time; + String pubKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCynMBxzoNBemZKuxjlZzp04Lx/b0j1xRUznBKjlQSATwc+1DaxBpKdT4WfqAuFlSQLA7qLdntXw2cvUEvRxfdjJp2KfZLkEYRmYx3LT51WdCmouQREtMrR6j3mri8jV8TjktGCmBFMKX7eGeQM8O249yVjby6502bzZXehQ707JQIDAQAB"; + String sec = RSAUtils.encrypt(str, pubKey); + System.out.println(sec); + String priKey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALKcwHHOg0F6Zkq7GOVnOnTgvH9vSPXFFTOcEqOVBIBPBz7UNrEGkp1PhZ+oC4WVJAsDuot2e1fDZy9QS9HF92MmnYp9kuQRhGZjHctPnVZ0Kai5BES0ytHqPeauLyNXxOOS0YKYEUwpft4Z5Azw7bj3JWNvLrnTZvNld6FDvTslAgMBAAECgYAqN/kZLYpC+O6i7XSmDO95XwHPUXu6dDpdt5+EQR4OQh/hTwIaeAZB3uEj6vHGQomBfQEkI/5lsU97lIxHanbd+Hro7JyIhsGD5LR5XnZHVKzFiZW62OIU6FI9dlQNN8miiblnmyDwiMA3okaHl0O7qQjZ+IvY2csgmJc7AXpPpQJBAOhrhcfWFcgffj2O6HYNlBLFfbboc/ZzrEADDXKnxRSHlo5o8W+6gylG/L2NGtbag5S68B9VYzdkSQ1++5C+Ws8CQQDEu7h311PLEiKgqzGHpjzadQETmt/jMadaKQmT0TZwNVi6X8lR17U5hF8dAqZzUzr9kUC0HRIZhg4Uv1v3W3fLAkB4YPhxgJjXhjhEefg87Nt8vX1Xdx5Yz6CvpuUYNX0GHRQFvqUOUXQNtQ7CvorgLV1pc0lbcUZqMi8EJnj1hyJRAkEAjHXWm8GiMt+M15fCsi3vTq2xChVOekBuUsHv85iwvGZqJg7ThtpyqlEnM2g7/STUfkvhnXcQACclEI0blTy6BwJAPmFyhU+d0ejVpbc53TdrL2HqYYUHi/tTy/dtUa7lbypzdwwJ2M1Tv5PE8sQxr9tgMbebfxVb/RFKdiCCtzC4ng=="; + String s = RSAUtils.decrypt(sec,priKey); + System.out.println(s); + + + String appId = "5d7d4d81a64f4b8f"; + String publicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB"; + String secret = RiskHttpUtil.encrypt(appId,publicKey); + System.out.println(secret); + String res = RiskHttpUtil.login("http://101.201.36.107:12388",secret); + System.out.println(res); + JSONObject jsonObject = JSON.parseObject(res); + String token = jsonObject.getString("data"); + String resPoint = RiskHttpUtil.pointData("http://101.201.36.107:12388",token); + System.out.println(resPoint); + + + ResponseDataDTO> riskPointRes = JSON.parseObject(resPoint, new TypeReference>>() { + }); + + } + +} diff --git a/casic-web/src/main/resources/doc/20250609.md b/casic-web/src/main/resources/doc/20250609.md new file mode 100644 index 0000000..0cb3464 --- /dev/null +++ b/casic-web/src/main/resources/doc/20250609.md @@ -0,0 +1,30 @@ +## 一、数据库更新 + +1. 设备分组数据库增加 + +``` +ALTER TABLE bus_device_info ADD COLUMN GROUP_ID bigint; + +create table bus_device_group +( + id bigint not null comment '主键', + create_time datetime comment '创建时间', + update_time datetime comment '修改时间', + group_name varchar(255) comment '分组名称', + create_id bigint comment '创建人', + dept_id bigint comment '所属组织' +); + +alter table bus_device_group comment '设备分组管理信息'; + +``` + +casic.tenant.excludes 配置项中增加 bus_device_group + + +casic.no-login-urls 中增加如下配置 +,/sync/risk/dept,/sync/risk/user/list,/sync/risk/device/list + + + + diff --git a/casic-web/src/main/resources/doc/20250624.md b/casic-web/src/main/resources/doc/20250624.md new file mode 100644 index 0000000..7af561d --- /dev/null +++ b/casic-web/src/main/resources/doc/20250624.md @@ -0,0 +1,34 @@ +## 一、数据库更新 + +1. 风险点表添加同步ID + +``` +ALTER TABLE risk_point_info ADD COLUMN TARGET_ID VARCHAR(255); + +``` + +2. 风险点相关配置项 + +casic.risk.open 默认false 不开启 开启需配置true +casic.risk.corn 定时时间 默认0 */5 * * * * 5分钟 +casic.risk.appId 默认 5d7d4d81a64f4b8f 如变更需更改 +casic.risk.publicKey 公钥 默认MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB +casic.risk.host 风险点地址, 默认http://101.201.36.107:12388 生产需更改 + +3. 增加字典值 + hazardLevelName 风险危险等级(706映射) + 1 低风险 + 1 一般风险 + 2 较大风险 + 3 重大风险 + 以上字典值以706风险等级名称对应本系统风险点1 2 3 等级,如果706风险等级名称变更 修改对应字典值名称即可 + +4. 盒子代理服务模块添加 + 增加配置项 + casic.video.box.proxy 192.168.83.37:30064 此处需变更为部署代理nginx的ip及端口,具体配置参见国标级联及代理服务配置说明 + + + + + + diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" new file mode 100644 index 0000000..30cdcbd --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" new file mode 100644 index 0000000..6a0069c --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" new file mode 100644 index 0000000..f775124 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" new file mode 100644 index 0000000..9f65ff1 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" new file mode 100644 index 0000000..613ec69 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" new file mode 100644 index 0000000..1614b04 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" new file mode 100644 index 0000000..3f5083a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" new file mode 100644 index 0000000..134a604 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" new file mode 100644 index 0000000..7edeaa0 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" new file mode 100644 index 0000000..ccd0993 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" new file mode 100644 index 0000000..0cbf80d --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" new file mode 100644 index 0000000..613ec69 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" new file mode 100644 index 0000000..3f5083a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" new file mode 100644 index 0000000..7edeaa0 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image012.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image012.jpg" new file mode 100644 index 0000000..0cbf80d --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image012.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/themedata.thmx" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/themedata.thmx" new file mode 100644 index 0000000..67aae0a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/themedata.thmx" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/colorschememapping.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/colorschememapping.xml" new file mode 100644 index 0000000..6a0069c --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/colorschememapping.xml" @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image001.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image001.png" new file mode 100644 index 0000000..1614b04 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image001.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.gif" new file mode 100644 index 0000000..92bd844 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.png" new file mode 100644 index 0000000..9f65ff1 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.jpg" new file mode 100644 index 0000000..72b5d13 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.png" new file mode 100644 index 0000000..a5af4eb --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.gif" new file mode 100644 index 0000000..b4e65ac --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.jpg" new file mode 100644 index 0000000..b7fe03f --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.jpg" Binary files differ diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java new file mode 100644 index 0000000..77c14a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.device.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dictmap.DeviceGroupQueryDict; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.vo.BusDeviceGroupVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; + +/** + * 设备分组管理信息Controller + * + * @author lwh + * @date 2025-06-11 + */ +@Api(tags = "设备分组管理信息") +@RestController +@RequestMapping("/device/group") +public class BusDeviceGroupController extends BaseController { + + private final IBusDeviceGroupService busDeviceGroupService; + private final AbstractPermissionContext abstractPermissionContext; + + public BusDeviceGroupController(IBusDeviceGroupService busDeviceGroupService, AbstractPermissionContext abstractPermissionContext) { + this.busDeviceGroupService = busDeviceGroupService; + this.abstractPermissionContext = abstractPermissionContext; + } + + @ApiOperation(value = "列表查询") + @GetMapping(value = "/list") + public ResponseDataDTO> list(BusDeviceGroupVO busDeviceGroupVO) { + QueryWrapper query = busDeviceGroupVO.genQuery(); + return ResponseDataDTO.success(busDeviceGroupService.list(query)); + } + + @ApiOperation(value = "分组树结构查询") + @BussinessLog(value = "分组树结构查询") + @GetMapping(value = "/tree") + public ResponseDataDTO> groupTree() { + List groupDTOList = busDeviceGroupService.groupTree(); + return ResponseDataDTO.success(groupDTOList); + } + + @BussinessLog(value = "设备分组分页查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "分页查询") + @GetMapping(value = "/listPage") + public ResponseDataDTO> listPage(BusDeviceGroupVO busDeviceGroupVO) { + Page page = PageFactory.defaultPage(); + QueryWrapper query = busDeviceGroupVO.genQuery(); + List list = busDeviceGroupService.selectBusDeviceGroupPage(page, query); + page.setRecords(list); + return ResponseDataDTO.success(super.packForBT(page)); + } + + @BussinessLog(value = "设备分组新增", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "新增接口") + @PostMapping(value = "/add") + public ResponseDataDTO add(@RequestBody BusDeviceGroup busDeviceGroup) { + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + busDeviceGroup.setCreateId(user.getId()); + busDeviceGroup.setCreateTime(new Date()); + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.save(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组修改", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @PostMapping(value = "/update") + public ResponseDataDTO update(@RequestBody BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.updateById(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组删除", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "删除接口") + @GetMapping(value = "/delete") + public ResponseDataDTO delete(String id) { + busDeviceGroupService.removeById(id); + return ResponseDataDTO.success(); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { + busDeviceGroupService.removeByIds(ids.getIds()); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组详情查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "详情查询") + @GetMapping(value = "/detail") + public ResponseDataDTO detail(String id) { + return ResponseDataDTO.success(busDeviceGroupService.getById(id)); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java new file mode 100644 index 0000000..9d3726f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.device.dao; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import java.util.List; +/** + *

+ * 设备分组管理信息 Mapper 接口 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface BusDeviceGroupMapper extends BaseMapper { +/** +* 设备分组管理信息 分页检索 +*/ +List selectBusDeviceGroupPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml new file mode 100644 index 0000000..a6dd84f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + id + , + create_time as createTime , + update_time as updateTime , + group_name as groupName , + create_id as createId , + dept_id as deptId + + + a + . + id + , + a.create_time + as createTime , + a.update_time + as updateTime , + a.group_name + as groupName , + a.create_id + as createId , + a.dept_id + as deptId + + + + + + and group_name like concat('%',#{request.groupName},'%') + + + and dept_id = #{request.deptId} + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java new file mode 100644 index 0000000..a821e92 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dictmap; + +import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap; + +public class DeviceGroupQueryDict extends AbstractDictMap { + + @Override + public void init() { + put("id", "主键"); + put("deptId", "所属组织"); + put("groupName", "分组名称"); + + put("deptName", "所属单位"); + } + + @Override + protected void initBeWrapped() { + + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java new file mode 100644 index 0000000..d8d1712 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.device.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + + +/** + * 设备分组管理信息对象 bus_device_group + * + * @author lwh + * @date 2025-06-11 + */ +@Data +@TableName("bus_device_group") +public class BusDeviceGroup extends Model { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键", dataType = "Long") + @TableField("id") + private Long id; + + @ApiModelProperty(value = "创建时间", dataType = "Date") + @TableField("create_time") + private Date createTime; + + @ApiModelProperty(value = "修改时间", dataType = "Date") + @TableField("update_time") + private Date updateTime; + + @ApiModelProperty(value = "分组名称", dataType = "String") + @TableField("group_name") + private String groupName; + + @ApiModelProperty(value = "创建人", dataType = "Long") + @TableField("create_id") + private Long createId; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; + @TableField(exist = false) + private String deptName; + + @Override + public String toString() { + return "BusDeviceGroup{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "groupName=" + groupName + + "createId=" + createId + + "deptId=" + deptId + + "}"; + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java new file mode 100644 index 0000000..d2cee5c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; + +import java.util.List; + + +/** + *

+ * 设备分组管理信息 服务类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface IBusDeviceGroupService extends IService { + /** + * 设备分组管理信息 分页检索 + */ + List selectBusDeviceGroupPage(Page page, QueryWrapper query); + + /** + * 树结构查询 + * + * @return + */ + List groupTree(); + + DeptDTO convertDeptDTO(BusDeviceGroup group); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java new file mode 100644 index 0000000..a6f08b7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java @@ -0,0 +1,139 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractAuthService; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.modular.data.constants.DataConstants; +import com.casic.missiles.modular.device.dao.BusDeviceGroupMapper; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; +import com.casic.missiles.modular.system.model.Dept; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.data.constants.DataConstants.NODE_TYPE_DEPT; + + +/** + *

+ * 设备分组管理信息 服务实现类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +@Service +public class BusDeviceGroupServiceImpl extends ServiceImpl implements IBusDeviceGroupService { + @Resource + private AbstractDeptService deptService; + + @Override + public List selectBusDeviceGroupPage(Page page, QueryWrapper query) { + List list = this.baseMapper.selectBusDeviceGroupPage(page, query); + list.forEach(this::wrapperInfo); + return list; + } + + @Override + public List groupTree() { + List deptList = deviceDept(); + + List deptDTOS = new ArrayList<>(); + //树节点根 + List rootIds = new ArrayList<>(); + Set normalIds = new HashSet<>(); + + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setId(dept.getId()); + deptDTO.setPid(dept.getPid()); + deptDTO.setFullName(dept.getFullName()); + deptDTO.setName(dept.getSimpleName()); + deptDTO.setType(NODE_TYPE_DEPT); + + normalIds.add(dept.getId()); + deptDTOS.add(deptDTO); + + + //查询该组织下分组信息 + LambdaQueryWrapper deviceQuery = new LambdaQueryWrapper<>(); + deviceQuery.eq(BusDeviceGroup::getDeptId, deptDTO.getId()); + + deviceQuery.orderByAsc(BusDeviceGroup::getGroupName); + List deviceInfos = this.list(deviceQuery); + List deptDTOList = new ArrayList<>(); + for (BusDeviceGroup group : deviceInfos) { + DeptDTO deptDto = this.convertDeptDTO(group); + deptDTOList.add(deptDto); + } + deptDTO.setChildrenNodes(deptDTOList); + } + + for (DeptDTO deptDTO : deptDTOS) { + if (!normalIds.contains(deptDTO.getPid())) { + rootIds.add(deptDTO.getPid()); + } + } + + //过滤根节点 + DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); + List newTree = new ArrayList<>(); + rootIds = rootIds.stream().distinct().collect(Collectors.toList()); + for (Long rootId : rootIds) { + abstractTreeBuildFactory.setRootId(rootId + ""); + newTree.addAll(abstractTreeBuildFactory.doTreeBuild(deptDTOS)); + } + return newTree; + } + + public DeptDTO convertDeptDTO(BusDeviceGroup group) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setType(DataConstants.NODE_TYPE_GROUP); + deptDTO.setId(group.getId()); + deptDTO.setPid(group.getDeptId()); + deptDTO.setName(group.getGroupName()); + deptDTO.setGroup(group); + return deptDTO; + } + + @Resource + private AbstractAuthService authService; + + private List deviceDept() { + //查询可见组织 + DataScope scope = authService.getLoginUserDataScope(); + AuthUser user = authService.getLoginUser(); + + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); + deptQuery.inSql(Dept::getId, "select dept_id from bus_device_info "); + if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums().getCode())) { + deptQuery.in(Dept::getId, scope.getDeptIds()); + } + deptQuery.orderByAsc(Dept::getNum); + + List deptList = deptService.list(deptQuery); + return deptList; + } + + @Override + public List list() { + List list = super.list(); + list.forEach(this::wrapperInfo); + return list; + } + + private void wrapperInfo(BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setDeptName(deptService.getDeptName(busDeviceGroup.getDeptId())); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java new file mode 100644 index 0000000..413d7ac --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.device.vo; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 设备分组管理信息对象VO + * + * @author lwh + * @date 2025-06-11 + */ +@Data +public class BusDeviceGroupVO { + private static final long serialVersionUID = 1L; + + + @ApiModelProperty(value = "分组名称", dataType = "String") + private String groupName; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + private Long deptId; + + public QueryWrapper genQuery() { + QueryWrapper query = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(groupName)) { + query.like("group_name", groupName); + } + if (deptId != null) { + query.eq("dept_id", deptId); + } + return query; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java new file mode 100644 index 0000000..477435e --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java @@ -0,0 +1,163 @@ +package com.casic.missiles.modular.device.dto.risk; + +import cn.hutool.core.convert.Convert; +import com.casic.missiles.modular.device.model.RiskPointInfo; +import lombok.Data; + +@Data +public class SyncRiskDTO { + /** + * 主键 + */ + private String id; + private String name; + /** + * 重大风险 + * 风险等级 + */ + private String hazardLevel; + /** + * 危险因素 + */ + private String riskFactors; + /** + * 所属单位 + */ + private String affiliatedUnit; + /** + * 所属部门 + */ + private String department; + + /** + * 定员 + */ + private String staffing; + + /** + * 定量 + */ + private String ration; + + /** + * 地理位置 + */ + private String geographicalPosition; + + /** + * 责任人 + */ + private String personLiable; + + /** + * 现场负责人 + */ + private String siteLeader; + + /** + * 主要设备、设施设计制造单位 + */ + private String zysbZzdw; + + /** + * 所在单位 + */ + private String szdw; + + /** + * 作业人数 + */ + private String numberOperators; + + /** + * 主要性能参数 + */ + private String mainPerformanceParameters; + + /** + * 工作环境参数 + */ + private String workingEnvironmentParameters; + + /** + * 安装单位 + */ + private String installationUnit; + + /** + * 投产日期 + */ + private String productionDate; + + /** + * 设备总数 + */ + private String totalEquipment; + + /** + * 备注 + */ + private String note; + + /** + * 创建用户 + */ + private String createUser; + private String createTime; + private String updateUser; + private String updateTime; + /** + * 是否删除0:否;1:是(接口已过滤掉1的数据) + */ + private Integer isDel; + + /** + * 行政区域 + */ + private String xzqy; + /** + * 街道 + */ + private String jdxx; + + /** + * 楼房 + */ + private String loufang; + + /** + * 楼层 + */ + private String louceng; + + /** + * 房间 + */ + private String roomName; + /** + * 所属单位编码 + */ + private String affiliatedUnitsCode; + + /** + * 危险性质 + */ + private String hazardousNature; + + public RiskPointInfo convertToRisk(RiskPointInfo pointInfo) { + //风险点缺少密级 + pointInfo.setSecretLevel("1"); + // hazardLevel 是否有字典值? + + if (department != null) { + pointInfo.setDeptId(Convert.toLong(department)); + } + pointInfo.setNature(hazardousNature); + pointInfo.setRiskName(name); + pointInfo.setAddress(geographicalPosition); + pointInfo.setTargetId(id); + //默认类型为1 + pointInfo.setRiskType(1); + return pointInfo; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java new file mode 100644 index 0000000..08e89a0 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.device.handler; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class BoxDefaultHttpHeaderHandler extends DefaultHttpHeaderHandler { + /** + * 代理服务IP + */ + private String xTargetHost; + + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Access-Token", token); + } + if (StrUtil.isNotEmpty(xTargetHost)){ + base.addHeader("X-TARGET-HOST", xTargetHost); + } + } + + public String getXTargetHost() { + return xTargetHost; + } + + public void setXTargetHost(String XTargetHost) { + this.xTargetHost = XTargetHost; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java new file mode 100644 index 0000000..903e567 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.http; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class RiskHttpHandler extends DefaultHttpHeaderHandler { + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Authorization", token); + } + + } +} + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java new file mode 100644 index 0000000..9f75f42 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java @@ -0,0 +1,35 @@ +package com.casic.missiles.modular.task; + +import com.casic.missiles.modular.device.service.IRiskPointInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +@Slf4j +@Component +public class RiskTask { + + @Value("${casic.risk.open:false}") + private Boolean open; + + @Resource + private IRiskPointInfoService riskPointInfoService; + + /** + * 设备信息同步0 + * 每30分钟采集一次 + */ + @Scheduled(cron = "${casic.risk.corn:0 */1 * * * *}") + public void device() { + //风险点数据同步 + if (open) { + log.info("risk sync start...."); + riskPointInfoService.loadRiskInfo(); + log.info("risk sync end...."); + } + } + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java new file mode 100644 index 0000000..e4ca4f1 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.util; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.modular.http.RiskHttpHandler; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import com.casic.missiles.modular.system.utils.HttpUtils; + +import java.util.HashMap; +import java.util.Map; + +public class RiskHttpUtil { + public static final String loginUrl = "/rest/platform/systemLogin"; + public static final String pointDataUrl = "/rest/platform/dangerPointData"; + + public static String login(String baseUrl, String secret) { + Map param = new HashMap<>(); + param.put("secret", secret); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + defaultHeaderHandler.setJson(true); + String res = HttpUtils.sendPost(baseUrl + loginUrl, param, "", defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + public static String pointData(String baseUrl, String token) { + Map param = new HashMap<>(); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + + String res = HttpUtils.sendGet(baseUrl + pointDataUrl, param, token, defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + /** + * 登录数据加密 + * @param appId 加密id + * @param publicKey 公钥 + * @return + * @throws Exception + */ + public static String encrypt(String appId,String publicKey) throws Exception { + long ts = System.currentTimeMillis(); + return RSAUtils.encrypt(appId+"_"+ts,publicKey); + } + + +} diff --git a/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java new file mode 100644 index 0000000..9ba1e2a --- /dev/null +++ b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java @@ -0,0 +1,62 @@ +package com.casic.missiles.test; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.TypeReference; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.risk.SyncRiskDTO; +import com.casic.missiles.modular.device.util.AesUtil; +import com.casic.missiles.modular.util.RiskHttpUtil; +import com.casic.missiles.modular.util.WvpUtil; +import com.casic.missiles.modular.wvp.dto.MvpResponseDTO; + +import java.io.FileInputStream; +import java.security.MessageDigest; +import java.util.Date; +import java.util.HashMap; +import java.util.List; + +public class RiskTest { + public static void main(String[] args) throws Exception { +// File file = new File("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// String task = ZipFileUtil.getZipHandleTask("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(task); +// String md5 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(md5); +// String md52 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241122.zip"); +// System.out.println(md52); + + testDeviceLogin(); + System.out.println( DateUtil.offsetMinute(new Date(),-5)); + } + public static void testDeviceLogin() throws Exception { + Long time = System.currentTimeMillis(); + String str = "FXDDT_" + time; + String pubKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCynMBxzoNBemZKuxjlZzp04Lx/b0j1xRUznBKjlQSATwc+1DaxBpKdT4WfqAuFlSQLA7qLdntXw2cvUEvRxfdjJp2KfZLkEYRmYx3LT51WdCmouQREtMrR6j3mri8jV8TjktGCmBFMKX7eGeQM8O249yVjby6502bzZXehQ707JQIDAQAB"; + String sec = RSAUtils.encrypt(str, pubKey); + System.out.println(sec); + String priKey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALKcwHHOg0F6Zkq7GOVnOnTgvH9vSPXFFTOcEqOVBIBPBz7UNrEGkp1PhZ+oC4WVJAsDuot2e1fDZy9QS9HF92MmnYp9kuQRhGZjHctPnVZ0Kai5BES0ytHqPeauLyNXxOOS0YKYEUwpft4Z5Azw7bj3JWNvLrnTZvNld6FDvTslAgMBAAECgYAqN/kZLYpC+O6i7XSmDO95XwHPUXu6dDpdt5+EQR4OQh/hTwIaeAZB3uEj6vHGQomBfQEkI/5lsU97lIxHanbd+Hro7JyIhsGD5LR5XnZHVKzFiZW62OIU6FI9dlQNN8miiblnmyDwiMA3okaHl0O7qQjZ+IvY2csgmJc7AXpPpQJBAOhrhcfWFcgffj2O6HYNlBLFfbboc/ZzrEADDXKnxRSHlo5o8W+6gylG/L2NGtbag5S68B9VYzdkSQ1++5C+Ws8CQQDEu7h311PLEiKgqzGHpjzadQETmt/jMadaKQmT0TZwNVi6X8lR17U5hF8dAqZzUzr9kUC0HRIZhg4Uv1v3W3fLAkB4YPhxgJjXhjhEefg87Nt8vX1Xdx5Yz6CvpuUYNX0GHRQFvqUOUXQNtQ7CvorgLV1pc0lbcUZqMi8EJnj1hyJRAkEAjHXWm8GiMt+M15fCsi3vTq2xChVOekBuUsHv85iwvGZqJg7ThtpyqlEnM2g7/STUfkvhnXcQACclEI0blTy6BwJAPmFyhU+d0ejVpbc53TdrL2HqYYUHi/tTy/dtUa7lbypzdwwJ2M1Tv5PE8sQxr9tgMbebfxVb/RFKdiCCtzC4ng=="; + String s = RSAUtils.decrypt(sec,priKey); + System.out.println(s); + + + String appId = "5d7d4d81a64f4b8f"; + String publicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB"; + String secret = RiskHttpUtil.encrypt(appId,publicKey); + System.out.println(secret); + String res = RiskHttpUtil.login("http://101.201.36.107:12388",secret); + System.out.println(res); + JSONObject jsonObject = JSON.parseObject(res); + String token = jsonObject.getString("data"); + String resPoint = RiskHttpUtil.pointData("http://101.201.36.107:12388",token); + System.out.println(resPoint); + + + ResponseDataDTO> riskPointRes = JSON.parseObject(resPoint, new TypeReference>>() { + }); + + } + +} diff --git a/casic-web/src/main/resources/doc/20250609.md b/casic-web/src/main/resources/doc/20250609.md new file mode 100644 index 0000000..0cb3464 --- /dev/null +++ b/casic-web/src/main/resources/doc/20250609.md @@ -0,0 +1,30 @@ +## 一、数据库更新 + +1. 设备分组数据库增加 + +``` +ALTER TABLE bus_device_info ADD COLUMN GROUP_ID bigint; + +create table bus_device_group +( + id bigint not null comment '主键', + create_time datetime comment '创建时间', + update_time datetime comment '修改时间', + group_name varchar(255) comment '分组名称', + create_id bigint comment '创建人', + dept_id bigint comment '所属组织' +); + +alter table bus_device_group comment '设备分组管理信息'; + +``` + +casic.tenant.excludes 配置项中增加 bus_device_group + + +casic.no-login-urls 中增加如下配置 +,/sync/risk/dept,/sync/risk/user/list,/sync/risk/device/list + + + + diff --git a/casic-web/src/main/resources/doc/20250624.md b/casic-web/src/main/resources/doc/20250624.md new file mode 100644 index 0000000..7af561d --- /dev/null +++ b/casic-web/src/main/resources/doc/20250624.md @@ -0,0 +1,34 @@ +## 一、数据库更新 + +1. 风险点表添加同步ID + +``` +ALTER TABLE risk_point_info ADD COLUMN TARGET_ID VARCHAR(255); + +``` + +2. 风险点相关配置项 + +casic.risk.open 默认false 不开启 开启需配置true +casic.risk.corn 定时时间 默认0 */5 * * * * 5分钟 +casic.risk.appId 默认 5d7d4d81a64f4b8f 如变更需更改 +casic.risk.publicKey 公钥 默认MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB +casic.risk.host 风险点地址, 默认http://101.201.36.107:12388 生产需更改 + +3. 增加字典值 + hazardLevelName 风险危险等级(706映射) + 1 低风险 + 1 一般风险 + 2 较大风险 + 3 重大风险 + 以上字典值以706风险等级名称对应本系统风险点1 2 3 等级,如果706风险等级名称变更 修改对应字典值名称即可 + +4. 盒子代理服务模块添加 + 增加配置项 + casic.video.box.proxy 192.168.83.37:30064 此处需变更为部署代理nginx的ip及端口,具体配置参见国标级联及代理服务配置说明 + + + + + + diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" new file mode 100644 index 0000000..30cdcbd --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" new file mode 100644 index 0000000..6a0069c --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" new file mode 100644 index 0000000..f775124 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" new file mode 100644 index 0000000..9f65ff1 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" new file mode 100644 index 0000000..613ec69 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" new file mode 100644 index 0000000..1614b04 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" new file mode 100644 index 0000000..3f5083a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" new file mode 100644 index 0000000..134a604 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" new file mode 100644 index 0000000..7edeaa0 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" new file mode 100644 index 0000000..ccd0993 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" new file mode 100644 index 0000000..0cbf80d --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" new file mode 100644 index 0000000..613ec69 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" new file mode 100644 index 0000000..3f5083a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" new file mode 100644 index 0000000..7edeaa0 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image012.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image012.jpg" new file mode 100644 index 0000000..0cbf80d --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image012.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/themedata.thmx" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/themedata.thmx" new file mode 100644 index 0000000..67aae0a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/themedata.thmx" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/colorschememapping.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/colorschememapping.xml" new file mode 100644 index 0000000..6a0069c --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/colorschememapping.xml" @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image001.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image001.png" new file mode 100644 index 0000000..1614b04 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image001.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.gif" new file mode 100644 index 0000000..92bd844 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.png" new file mode 100644 index 0000000..9f65ff1 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.jpg" new file mode 100644 index 0000000..72b5d13 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.png" new file mode 100644 index 0000000..a5af4eb --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.gif" new file mode 100644 index 0000000..b4e65ac --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.jpg" new file mode 100644 index 0000000..b7fe03f --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image005.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image005.png" new file mode 100644 index 0000000..ccd0993 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image005.png" Binary files differ diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java new file mode 100644 index 0000000..77c14a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.device.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dictmap.DeviceGroupQueryDict; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.vo.BusDeviceGroupVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; + +/** + * 设备分组管理信息Controller + * + * @author lwh + * @date 2025-06-11 + */ +@Api(tags = "设备分组管理信息") +@RestController +@RequestMapping("/device/group") +public class BusDeviceGroupController extends BaseController { + + private final IBusDeviceGroupService busDeviceGroupService; + private final AbstractPermissionContext abstractPermissionContext; + + public BusDeviceGroupController(IBusDeviceGroupService busDeviceGroupService, AbstractPermissionContext abstractPermissionContext) { + this.busDeviceGroupService = busDeviceGroupService; + this.abstractPermissionContext = abstractPermissionContext; + } + + @ApiOperation(value = "列表查询") + @GetMapping(value = "/list") + public ResponseDataDTO> list(BusDeviceGroupVO busDeviceGroupVO) { + QueryWrapper query = busDeviceGroupVO.genQuery(); + return ResponseDataDTO.success(busDeviceGroupService.list(query)); + } + + @ApiOperation(value = "分组树结构查询") + @BussinessLog(value = "分组树结构查询") + @GetMapping(value = "/tree") + public ResponseDataDTO> groupTree() { + List groupDTOList = busDeviceGroupService.groupTree(); + return ResponseDataDTO.success(groupDTOList); + } + + @BussinessLog(value = "设备分组分页查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "分页查询") + @GetMapping(value = "/listPage") + public ResponseDataDTO> listPage(BusDeviceGroupVO busDeviceGroupVO) { + Page page = PageFactory.defaultPage(); + QueryWrapper query = busDeviceGroupVO.genQuery(); + List list = busDeviceGroupService.selectBusDeviceGroupPage(page, query); + page.setRecords(list); + return ResponseDataDTO.success(super.packForBT(page)); + } + + @BussinessLog(value = "设备分组新增", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "新增接口") + @PostMapping(value = "/add") + public ResponseDataDTO add(@RequestBody BusDeviceGroup busDeviceGroup) { + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + busDeviceGroup.setCreateId(user.getId()); + busDeviceGroup.setCreateTime(new Date()); + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.save(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组修改", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @PostMapping(value = "/update") + public ResponseDataDTO update(@RequestBody BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.updateById(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组删除", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "删除接口") + @GetMapping(value = "/delete") + public ResponseDataDTO delete(String id) { + busDeviceGroupService.removeById(id); + return ResponseDataDTO.success(); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { + busDeviceGroupService.removeByIds(ids.getIds()); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组详情查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "详情查询") + @GetMapping(value = "/detail") + public ResponseDataDTO detail(String id) { + return ResponseDataDTO.success(busDeviceGroupService.getById(id)); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java new file mode 100644 index 0000000..9d3726f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.device.dao; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import java.util.List; +/** + *

+ * 设备分组管理信息 Mapper 接口 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface BusDeviceGroupMapper extends BaseMapper { +/** +* 设备分组管理信息 分页检索 +*/ +List selectBusDeviceGroupPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml new file mode 100644 index 0000000..a6dd84f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + id + , + create_time as createTime , + update_time as updateTime , + group_name as groupName , + create_id as createId , + dept_id as deptId + + + a + . + id + , + a.create_time + as createTime , + a.update_time + as updateTime , + a.group_name + as groupName , + a.create_id + as createId , + a.dept_id + as deptId + + + + + + and group_name like concat('%',#{request.groupName},'%') + + + and dept_id = #{request.deptId} + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java new file mode 100644 index 0000000..a821e92 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dictmap; + +import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap; + +public class DeviceGroupQueryDict extends AbstractDictMap { + + @Override + public void init() { + put("id", "主键"); + put("deptId", "所属组织"); + put("groupName", "分组名称"); + + put("deptName", "所属单位"); + } + + @Override + protected void initBeWrapped() { + + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java new file mode 100644 index 0000000..d8d1712 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.device.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + + +/** + * 设备分组管理信息对象 bus_device_group + * + * @author lwh + * @date 2025-06-11 + */ +@Data +@TableName("bus_device_group") +public class BusDeviceGroup extends Model { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键", dataType = "Long") + @TableField("id") + private Long id; + + @ApiModelProperty(value = "创建时间", dataType = "Date") + @TableField("create_time") + private Date createTime; + + @ApiModelProperty(value = "修改时间", dataType = "Date") + @TableField("update_time") + private Date updateTime; + + @ApiModelProperty(value = "分组名称", dataType = "String") + @TableField("group_name") + private String groupName; + + @ApiModelProperty(value = "创建人", dataType = "Long") + @TableField("create_id") + private Long createId; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; + @TableField(exist = false) + private String deptName; + + @Override + public String toString() { + return "BusDeviceGroup{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "groupName=" + groupName + + "createId=" + createId + + "deptId=" + deptId + + "}"; + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java new file mode 100644 index 0000000..d2cee5c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; + +import java.util.List; + + +/** + *

+ * 设备分组管理信息 服务类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface IBusDeviceGroupService extends IService { + /** + * 设备分组管理信息 分页检索 + */ + List selectBusDeviceGroupPage(Page page, QueryWrapper query); + + /** + * 树结构查询 + * + * @return + */ + List groupTree(); + + DeptDTO convertDeptDTO(BusDeviceGroup group); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java new file mode 100644 index 0000000..a6f08b7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java @@ -0,0 +1,139 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractAuthService; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.modular.data.constants.DataConstants; +import com.casic.missiles.modular.device.dao.BusDeviceGroupMapper; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; +import com.casic.missiles.modular.system.model.Dept; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.data.constants.DataConstants.NODE_TYPE_DEPT; + + +/** + *

+ * 设备分组管理信息 服务实现类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +@Service +public class BusDeviceGroupServiceImpl extends ServiceImpl implements IBusDeviceGroupService { + @Resource + private AbstractDeptService deptService; + + @Override + public List selectBusDeviceGroupPage(Page page, QueryWrapper query) { + List list = this.baseMapper.selectBusDeviceGroupPage(page, query); + list.forEach(this::wrapperInfo); + return list; + } + + @Override + public List groupTree() { + List deptList = deviceDept(); + + List deptDTOS = new ArrayList<>(); + //树节点根 + List rootIds = new ArrayList<>(); + Set normalIds = new HashSet<>(); + + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setId(dept.getId()); + deptDTO.setPid(dept.getPid()); + deptDTO.setFullName(dept.getFullName()); + deptDTO.setName(dept.getSimpleName()); + deptDTO.setType(NODE_TYPE_DEPT); + + normalIds.add(dept.getId()); + deptDTOS.add(deptDTO); + + + //查询该组织下分组信息 + LambdaQueryWrapper deviceQuery = new LambdaQueryWrapper<>(); + deviceQuery.eq(BusDeviceGroup::getDeptId, deptDTO.getId()); + + deviceQuery.orderByAsc(BusDeviceGroup::getGroupName); + List deviceInfos = this.list(deviceQuery); + List deptDTOList = new ArrayList<>(); + for (BusDeviceGroup group : deviceInfos) { + DeptDTO deptDto = this.convertDeptDTO(group); + deptDTOList.add(deptDto); + } + deptDTO.setChildrenNodes(deptDTOList); + } + + for (DeptDTO deptDTO : deptDTOS) { + if (!normalIds.contains(deptDTO.getPid())) { + rootIds.add(deptDTO.getPid()); + } + } + + //过滤根节点 + DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); + List newTree = new ArrayList<>(); + rootIds = rootIds.stream().distinct().collect(Collectors.toList()); + for (Long rootId : rootIds) { + abstractTreeBuildFactory.setRootId(rootId + ""); + newTree.addAll(abstractTreeBuildFactory.doTreeBuild(deptDTOS)); + } + return newTree; + } + + public DeptDTO convertDeptDTO(BusDeviceGroup group) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setType(DataConstants.NODE_TYPE_GROUP); + deptDTO.setId(group.getId()); + deptDTO.setPid(group.getDeptId()); + deptDTO.setName(group.getGroupName()); + deptDTO.setGroup(group); + return deptDTO; + } + + @Resource + private AbstractAuthService authService; + + private List deviceDept() { + //查询可见组织 + DataScope scope = authService.getLoginUserDataScope(); + AuthUser user = authService.getLoginUser(); + + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); + deptQuery.inSql(Dept::getId, "select dept_id from bus_device_info "); + if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums().getCode())) { + deptQuery.in(Dept::getId, scope.getDeptIds()); + } + deptQuery.orderByAsc(Dept::getNum); + + List deptList = deptService.list(deptQuery); + return deptList; + } + + @Override + public List list() { + List list = super.list(); + list.forEach(this::wrapperInfo); + return list; + } + + private void wrapperInfo(BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setDeptName(deptService.getDeptName(busDeviceGroup.getDeptId())); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java new file mode 100644 index 0000000..413d7ac --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.device.vo; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 设备分组管理信息对象VO + * + * @author lwh + * @date 2025-06-11 + */ +@Data +public class BusDeviceGroupVO { + private static final long serialVersionUID = 1L; + + + @ApiModelProperty(value = "分组名称", dataType = "String") + private String groupName; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + private Long deptId; + + public QueryWrapper genQuery() { + QueryWrapper query = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(groupName)) { + query.like("group_name", groupName); + } + if (deptId != null) { + query.eq("dept_id", deptId); + } + return query; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java new file mode 100644 index 0000000..477435e --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java @@ -0,0 +1,163 @@ +package com.casic.missiles.modular.device.dto.risk; + +import cn.hutool.core.convert.Convert; +import com.casic.missiles.modular.device.model.RiskPointInfo; +import lombok.Data; + +@Data +public class SyncRiskDTO { + /** + * 主键 + */ + private String id; + private String name; + /** + * 重大风险 + * 风险等级 + */ + private String hazardLevel; + /** + * 危险因素 + */ + private String riskFactors; + /** + * 所属单位 + */ + private String affiliatedUnit; + /** + * 所属部门 + */ + private String department; + + /** + * 定员 + */ + private String staffing; + + /** + * 定量 + */ + private String ration; + + /** + * 地理位置 + */ + private String geographicalPosition; + + /** + * 责任人 + */ + private String personLiable; + + /** + * 现场负责人 + */ + private String siteLeader; + + /** + * 主要设备、设施设计制造单位 + */ + private String zysbZzdw; + + /** + * 所在单位 + */ + private String szdw; + + /** + * 作业人数 + */ + private String numberOperators; + + /** + * 主要性能参数 + */ + private String mainPerformanceParameters; + + /** + * 工作环境参数 + */ + private String workingEnvironmentParameters; + + /** + * 安装单位 + */ + private String installationUnit; + + /** + * 投产日期 + */ + private String productionDate; + + /** + * 设备总数 + */ + private String totalEquipment; + + /** + * 备注 + */ + private String note; + + /** + * 创建用户 + */ + private String createUser; + private String createTime; + private String updateUser; + private String updateTime; + /** + * 是否删除0:否;1:是(接口已过滤掉1的数据) + */ + private Integer isDel; + + /** + * 行政区域 + */ + private String xzqy; + /** + * 街道 + */ + private String jdxx; + + /** + * 楼房 + */ + private String loufang; + + /** + * 楼层 + */ + private String louceng; + + /** + * 房间 + */ + private String roomName; + /** + * 所属单位编码 + */ + private String affiliatedUnitsCode; + + /** + * 危险性质 + */ + private String hazardousNature; + + public RiskPointInfo convertToRisk(RiskPointInfo pointInfo) { + //风险点缺少密级 + pointInfo.setSecretLevel("1"); + // hazardLevel 是否有字典值? + + if (department != null) { + pointInfo.setDeptId(Convert.toLong(department)); + } + pointInfo.setNature(hazardousNature); + pointInfo.setRiskName(name); + pointInfo.setAddress(geographicalPosition); + pointInfo.setTargetId(id); + //默认类型为1 + pointInfo.setRiskType(1); + return pointInfo; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java new file mode 100644 index 0000000..08e89a0 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.device.handler; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class BoxDefaultHttpHeaderHandler extends DefaultHttpHeaderHandler { + /** + * 代理服务IP + */ + private String xTargetHost; + + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Access-Token", token); + } + if (StrUtil.isNotEmpty(xTargetHost)){ + base.addHeader("X-TARGET-HOST", xTargetHost); + } + } + + public String getXTargetHost() { + return xTargetHost; + } + + public void setXTargetHost(String XTargetHost) { + this.xTargetHost = XTargetHost; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java new file mode 100644 index 0000000..903e567 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.http; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class RiskHttpHandler extends DefaultHttpHeaderHandler { + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Authorization", token); + } + + } +} + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java new file mode 100644 index 0000000..9f75f42 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java @@ -0,0 +1,35 @@ +package com.casic.missiles.modular.task; + +import com.casic.missiles.modular.device.service.IRiskPointInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +@Slf4j +@Component +public class RiskTask { + + @Value("${casic.risk.open:false}") + private Boolean open; + + @Resource + private IRiskPointInfoService riskPointInfoService; + + /** + * 设备信息同步0 + * 每30分钟采集一次 + */ + @Scheduled(cron = "${casic.risk.corn:0 */1 * * * *}") + public void device() { + //风险点数据同步 + if (open) { + log.info("risk sync start...."); + riskPointInfoService.loadRiskInfo(); + log.info("risk sync end...."); + } + } + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java new file mode 100644 index 0000000..e4ca4f1 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.util; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.modular.http.RiskHttpHandler; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import com.casic.missiles.modular.system.utils.HttpUtils; + +import java.util.HashMap; +import java.util.Map; + +public class RiskHttpUtil { + public static final String loginUrl = "/rest/platform/systemLogin"; + public static final String pointDataUrl = "/rest/platform/dangerPointData"; + + public static String login(String baseUrl, String secret) { + Map param = new HashMap<>(); + param.put("secret", secret); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + defaultHeaderHandler.setJson(true); + String res = HttpUtils.sendPost(baseUrl + loginUrl, param, "", defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + public static String pointData(String baseUrl, String token) { + Map param = new HashMap<>(); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + + String res = HttpUtils.sendGet(baseUrl + pointDataUrl, param, token, defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + /** + * 登录数据加密 + * @param appId 加密id + * @param publicKey 公钥 + * @return + * @throws Exception + */ + public static String encrypt(String appId,String publicKey) throws Exception { + long ts = System.currentTimeMillis(); + return RSAUtils.encrypt(appId+"_"+ts,publicKey); + } + + +} diff --git a/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java new file mode 100644 index 0000000..9ba1e2a --- /dev/null +++ b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java @@ -0,0 +1,62 @@ +package com.casic.missiles.test; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.TypeReference; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.risk.SyncRiskDTO; +import com.casic.missiles.modular.device.util.AesUtil; +import com.casic.missiles.modular.util.RiskHttpUtil; +import com.casic.missiles.modular.util.WvpUtil; +import com.casic.missiles.modular.wvp.dto.MvpResponseDTO; + +import java.io.FileInputStream; +import java.security.MessageDigest; +import java.util.Date; +import java.util.HashMap; +import java.util.List; + +public class RiskTest { + public static void main(String[] args) throws Exception { +// File file = new File("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// String task = ZipFileUtil.getZipHandleTask("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(task); +// String md5 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(md5); +// String md52 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241122.zip"); +// System.out.println(md52); + + testDeviceLogin(); + System.out.println( DateUtil.offsetMinute(new Date(),-5)); + } + public static void testDeviceLogin() throws Exception { + Long time = System.currentTimeMillis(); + String str = "FXDDT_" + time; + String pubKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCynMBxzoNBemZKuxjlZzp04Lx/b0j1xRUznBKjlQSATwc+1DaxBpKdT4WfqAuFlSQLA7qLdntXw2cvUEvRxfdjJp2KfZLkEYRmYx3LT51WdCmouQREtMrR6j3mri8jV8TjktGCmBFMKX7eGeQM8O249yVjby6502bzZXehQ707JQIDAQAB"; + String sec = RSAUtils.encrypt(str, pubKey); + System.out.println(sec); + String priKey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALKcwHHOg0F6Zkq7GOVnOnTgvH9vSPXFFTOcEqOVBIBPBz7UNrEGkp1PhZ+oC4WVJAsDuot2e1fDZy9QS9HF92MmnYp9kuQRhGZjHctPnVZ0Kai5BES0ytHqPeauLyNXxOOS0YKYEUwpft4Z5Azw7bj3JWNvLrnTZvNld6FDvTslAgMBAAECgYAqN/kZLYpC+O6i7XSmDO95XwHPUXu6dDpdt5+EQR4OQh/hTwIaeAZB3uEj6vHGQomBfQEkI/5lsU97lIxHanbd+Hro7JyIhsGD5LR5XnZHVKzFiZW62OIU6FI9dlQNN8miiblnmyDwiMA3okaHl0O7qQjZ+IvY2csgmJc7AXpPpQJBAOhrhcfWFcgffj2O6HYNlBLFfbboc/ZzrEADDXKnxRSHlo5o8W+6gylG/L2NGtbag5S68B9VYzdkSQ1++5C+Ws8CQQDEu7h311PLEiKgqzGHpjzadQETmt/jMadaKQmT0TZwNVi6X8lR17U5hF8dAqZzUzr9kUC0HRIZhg4Uv1v3W3fLAkB4YPhxgJjXhjhEefg87Nt8vX1Xdx5Yz6CvpuUYNX0GHRQFvqUOUXQNtQ7CvorgLV1pc0lbcUZqMi8EJnj1hyJRAkEAjHXWm8GiMt+M15fCsi3vTq2xChVOekBuUsHv85iwvGZqJg7ThtpyqlEnM2g7/STUfkvhnXcQACclEI0blTy6BwJAPmFyhU+d0ejVpbc53TdrL2HqYYUHi/tTy/dtUa7lbypzdwwJ2M1Tv5PE8sQxr9tgMbebfxVb/RFKdiCCtzC4ng=="; + String s = RSAUtils.decrypt(sec,priKey); + System.out.println(s); + + + String appId = "5d7d4d81a64f4b8f"; + String publicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB"; + String secret = RiskHttpUtil.encrypt(appId,publicKey); + System.out.println(secret); + String res = RiskHttpUtil.login("http://101.201.36.107:12388",secret); + System.out.println(res); + JSONObject jsonObject = JSON.parseObject(res); + String token = jsonObject.getString("data"); + String resPoint = RiskHttpUtil.pointData("http://101.201.36.107:12388",token); + System.out.println(resPoint); + + + ResponseDataDTO> riskPointRes = JSON.parseObject(resPoint, new TypeReference>>() { + }); + + } + +} diff --git a/casic-web/src/main/resources/doc/20250609.md b/casic-web/src/main/resources/doc/20250609.md new file mode 100644 index 0000000..0cb3464 --- /dev/null +++ b/casic-web/src/main/resources/doc/20250609.md @@ -0,0 +1,30 @@ +## 一、数据库更新 + +1. 设备分组数据库增加 + +``` +ALTER TABLE bus_device_info ADD COLUMN GROUP_ID bigint; + +create table bus_device_group +( + id bigint not null comment '主键', + create_time datetime comment '创建时间', + update_time datetime comment '修改时间', + group_name varchar(255) comment '分组名称', + create_id bigint comment '创建人', + dept_id bigint comment '所属组织' +); + +alter table bus_device_group comment '设备分组管理信息'; + +``` + +casic.tenant.excludes 配置项中增加 bus_device_group + + +casic.no-login-urls 中增加如下配置 +,/sync/risk/dept,/sync/risk/user/list,/sync/risk/device/list + + + + diff --git a/casic-web/src/main/resources/doc/20250624.md b/casic-web/src/main/resources/doc/20250624.md new file mode 100644 index 0000000..7af561d --- /dev/null +++ b/casic-web/src/main/resources/doc/20250624.md @@ -0,0 +1,34 @@ +## 一、数据库更新 + +1. 风险点表添加同步ID + +``` +ALTER TABLE risk_point_info ADD COLUMN TARGET_ID VARCHAR(255); + +``` + +2. 风险点相关配置项 + +casic.risk.open 默认false 不开启 开启需配置true +casic.risk.corn 定时时间 默认0 */5 * * * * 5分钟 +casic.risk.appId 默认 5d7d4d81a64f4b8f 如变更需更改 +casic.risk.publicKey 公钥 默认MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB +casic.risk.host 风险点地址, 默认http://101.201.36.107:12388 生产需更改 + +3. 增加字典值 + hazardLevelName 风险危险等级(706映射) + 1 低风险 + 1 一般风险 + 2 较大风险 + 3 重大风险 + 以上字典值以706风险等级名称对应本系统风险点1 2 3 等级,如果706风险等级名称变更 修改对应字典值名称即可 + +4. 盒子代理服务模块添加 + 增加配置项 + casic.video.box.proxy 192.168.83.37:30064 此处需变更为部署代理nginx的ip及端口,具体配置参见国标级联及代理服务配置说明 + + + + + + diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" new file mode 100644 index 0000000..30cdcbd --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" new file mode 100644 index 0000000..6a0069c --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" new file mode 100644 index 0000000..f775124 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" new file mode 100644 index 0000000..9f65ff1 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" new file mode 100644 index 0000000..613ec69 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" new file mode 100644 index 0000000..1614b04 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" new file mode 100644 index 0000000..3f5083a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" new file mode 100644 index 0000000..134a604 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" new file mode 100644 index 0000000..7edeaa0 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" new file mode 100644 index 0000000..ccd0993 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" new file mode 100644 index 0000000..0cbf80d --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" new file mode 100644 index 0000000..613ec69 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" new file mode 100644 index 0000000..3f5083a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" new file mode 100644 index 0000000..7edeaa0 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image012.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image012.jpg" new file mode 100644 index 0000000..0cbf80d --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image012.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/themedata.thmx" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/themedata.thmx" new file mode 100644 index 0000000..67aae0a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/themedata.thmx" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/colorschememapping.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/colorschememapping.xml" new file mode 100644 index 0000000..6a0069c --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/colorschememapping.xml" @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image001.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image001.png" new file mode 100644 index 0000000..1614b04 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image001.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.gif" new file mode 100644 index 0000000..92bd844 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.png" new file mode 100644 index 0000000..9f65ff1 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.jpg" new file mode 100644 index 0000000..72b5d13 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.png" new file mode 100644 index 0000000..a5af4eb --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.gif" new file mode 100644 index 0000000..b4e65ac --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.jpg" new file mode 100644 index 0000000..b7fe03f --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image005.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image005.png" new file mode 100644 index 0000000..ccd0993 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image005.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image006.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image006.jpg" new file mode 100644 index 0000000..c8ca1b6 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image006.jpg" Binary files differ diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java new file mode 100644 index 0000000..77c14a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.device.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dictmap.DeviceGroupQueryDict; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.vo.BusDeviceGroupVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; + +/** + * 设备分组管理信息Controller + * + * @author lwh + * @date 2025-06-11 + */ +@Api(tags = "设备分组管理信息") +@RestController +@RequestMapping("/device/group") +public class BusDeviceGroupController extends BaseController { + + private final IBusDeviceGroupService busDeviceGroupService; + private final AbstractPermissionContext abstractPermissionContext; + + public BusDeviceGroupController(IBusDeviceGroupService busDeviceGroupService, AbstractPermissionContext abstractPermissionContext) { + this.busDeviceGroupService = busDeviceGroupService; + this.abstractPermissionContext = abstractPermissionContext; + } + + @ApiOperation(value = "列表查询") + @GetMapping(value = "/list") + public ResponseDataDTO> list(BusDeviceGroupVO busDeviceGroupVO) { + QueryWrapper query = busDeviceGroupVO.genQuery(); + return ResponseDataDTO.success(busDeviceGroupService.list(query)); + } + + @ApiOperation(value = "分组树结构查询") + @BussinessLog(value = "分组树结构查询") + @GetMapping(value = "/tree") + public ResponseDataDTO> groupTree() { + List groupDTOList = busDeviceGroupService.groupTree(); + return ResponseDataDTO.success(groupDTOList); + } + + @BussinessLog(value = "设备分组分页查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "分页查询") + @GetMapping(value = "/listPage") + public ResponseDataDTO> listPage(BusDeviceGroupVO busDeviceGroupVO) { + Page page = PageFactory.defaultPage(); + QueryWrapper query = busDeviceGroupVO.genQuery(); + List list = busDeviceGroupService.selectBusDeviceGroupPage(page, query); + page.setRecords(list); + return ResponseDataDTO.success(super.packForBT(page)); + } + + @BussinessLog(value = "设备分组新增", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "新增接口") + @PostMapping(value = "/add") + public ResponseDataDTO add(@RequestBody BusDeviceGroup busDeviceGroup) { + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + busDeviceGroup.setCreateId(user.getId()); + busDeviceGroup.setCreateTime(new Date()); + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.save(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组修改", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @PostMapping(value = "/update") + public ResponseDataDTO update(@RequestBody BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.updateById(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组删除", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "删除接口") + @GetMapping(value = "/delete") + public ResponseDataDTO delete(String id) { + busDeviceGroupService.removeById(id); + return ResponseDataDTO.success(); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { + busDeviceGroupService.removeByIds(ids.getIds()); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组详情查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "详情查询") + @GetMapping(value = "/detail") + public ResponseDataDTO detail(String id) { + return ResponseDataDTO.success(busDeviceGroupService.getById(id)); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java new file mode 100644 index 0000000..9d3726f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.device.dao; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import java.util.List; +/** + *

+ * 设备分组管理信息 Mapper 接口 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface BusDeviceGroupMapper extends BaseMapper { +/** +* 设备分组管理信息 分页检索 +*/ +List selectBusDeviceGroupPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml new file mode 100644 index 0000000..a6dd84f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + id + , + create_time as createTime , + update_time as updateTime , + group_name as groupName , + create_id as createId , + dept_id as deptId + + + a + . + id + , + a.create_time + as createTime , + a.update_time + as updateTime , + a.group_name + as groupName , + a.create_id + as createId , + a.dept_id + as deptId + + + + + + and group_name like concat('%',#{request.groupName},'%') + + + and dept_id = #{request.deptId} + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java new file mode 100644 index 0000000..a821e92 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dictmap; + +import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap; + +public class DeviceGroupQueryDict extends AbstractDictMap { + + @Override + public void init() { + put("id", "主键"); + put("deptId", "所属组织"); + put("groupName", "分组名称"); + + put("deptName", "所属单位"); + } + + @Override + protected void initBeWrapped() { + + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java new file mode 100644 index 0000000..d8d1712 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.device.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + + +/** + * 设备分组管理信息对象 bus_device_group + * + * @author lwh + * @date 2025-06-11 + */ +@Data +@TableName("bus_device_group") +public class BusDeviceGroup extends Model { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键", dataType = "Long") + @TableField("id") + private Long id; + + @ApiModelProperty(value = "创建时间", dataType = "Date") + @TableField("create_time") + private Date createTime; + + @ApiModelProperty(value = "修改时间", dataType = "Date") + @TableField("update_time") + private Date updateTime; + + @ApiModelProperty(value = "分组名称", dataType = "String") + @TableField("group_name") + private String groupName; + + @ApiModelProperty(value = "创建人", dataType = "Long") + @TableField("create_id") + private Long createId; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; + @TableField(exist = false) + private String deptName; + + @Override + public String toString() { + return "BusDeviceGroup{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "groupName=" + groupName + + "createId=" + createId + + "deptId=" + deptId + + "}"; + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java new file mode 100644 index 0000000..d2cee5c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; + +import java.util.List; + + +/** + *

+ * 设备分组管理信息 服务类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface IBusDeviceGroupService extends IService { + /** + * 设备分组管理信息 分页检索 + */ + List selectBusDeviceGroupPage(Page page, QueryWrapper query); + + /** + * 树结构查询 + * + * @return + */ + List groupTree(); + + DeptDTO convertDeptDTO(BusDeviceGroup group); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java new file mode 100644 index 0000000..a6f08b7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java @@ -0,0 +1,139 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractAuthService; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.modular.data.constants.DataConstants; +import com.casic.missiles.modular.device.dao.BusDeviceGroupMapper; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; +import com.casic.missiles.modular.system.model.Dept; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.data.constants.DataConstants.NODE_TYPE_DEPT; + + +/** + *

+ * 设备分组管理信息 服务实现类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +@Service +public class BusDeviceGroupServiceImpl extends ServiceImpl implements IBusDeviceGroupService { + @Resource + private AbstractDeptService deptService; + + @Override + public List selectBusDeviceGroupPage(Page page, QueryWrapper query) { + List list = this.baseMapper.selectBusDeviceGroupPage(page, query); + list.forEach(this::wrapperInfo); + return list; + } + + @Override + public List groupTree() { + List deptList = deviceDept(); + + List deptDTOS = new ArrayList<>(); + //树节点根 + List rootIds = new ArrayList<>(); + Set normalIds = new HashSet<>(); + + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setId(dept.getId()); + deptDTO.setPid(dept.getPid()); + deptDTO.setFullName(dept.getFullName()); + deptDTO.setName(dept.getSimpleName()); + deptDTO.setType(NODE_TYPE_DEPT); + + normalIds.add(dept.getId()); + deptDTOS.add(deptDTO); + + + //查询该组织下分组信息 + LambdaQueryWrapper deviceQuery = new LambdaQueryWrapper<>(); + deviceQuery.eq(BusDeviceGroup::getDeptId, deptDTO.getId()); + + deviceQuery.orderByAsc(BusDeviceGroup::getGroupName); + List deviceInfos = this.list(deviceQuery); + List deptDTOList = new ArrayList<>(); + for (BusDeviceGroup group : deviceInfos) { + DeptDTO deptDto = this.convertDeptDTO(group); + deptDTOList.add(deptDto); + } + deptDTO.setChildrenNodes(deptDTOList); + } + + for (DeptDTO deptDTO : deptDTOS) { + if (!normalIds.contains(deptDTO.getPid())) { + rootIds.add(deptDTO.getPid()); + } + } + + //过滤根节点 + DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); + List newTree = new ArrayList<>(); + rootIds = rootIds.stream().distinct().collect(Collectors.toList()); + for (Long rootId : rootIds) { + abstractTreeBuildFactory.setRootId(rootId + ""); + newTree.addAll(abstractTreeBuildFactory.doTreeBuild(deptDTOS)); + } + return newTree; + } + + public DeptDTO convertDeptDTO(BusDeviceGroup group) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setType(DataConstants.NODE_TYPE_GROUP); + deptDTO.setId(group.getId()); + deptDTO.setPid(group.getDeptId()); + deptDTO.setName(group.getGroupName()); + deptDTO.setGroup(group); + return deptDTO; + } + + @Resource + private AbstractAuthService authService; + + private List deviceDept() { + //查询可见组织 + DataScope scope = authService.getLoginUserDataScope(); + AuthUser user = authService.getLoginUser(); + + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); + deptQuery.inSql(Dept::getId, "select dept_id from bus_device_info "); + if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums().getCode())) { + deptQuery.in(Dept::getId, scope.getDeptIds()); + } + deptQuery.orderByAsc(Dept::getNum); + + List deptList = deptService.list(deptQuery); + return deptList; + } + + @Override + public List list() { + List list = super.list(); + list.forEach(this::wrapperInfo); + return list; + } + + private void wrapperInfo(BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setDeptName(deptService.getDeptName(busDeviceGroup.getDeptId())); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java new file mode 100644 index 0000000..413d7ac --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.device.vo; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 设备分组管理信息对象VO + * + * @author lwh + * @date 2025-06-11 + */ +@Data +public class BusDeviceGroupVO { + private static final long serialVersionUID = 1L; + + + @ApiModelProperty(value = "分组名称", dataType = "String") + private String groupName; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + private Long deptId; + + public QueryWrapper genQuery() { + QueryWrapper query = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(groupName)) { + query.like("group_name", groupName); + } + if (deptId != null) { + query.eq("dept_id", deptId); + } + return query; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java new file mode 100644 index 0000000..477435e --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java @@ -0,0 +1,163 @@ +package com.casic.missiles.modular.device.dto.risk; + +import cn.hutool.core.convert.Convert; +import com.casic.missiles.modular.device.model.RiskPointInfo; +import lombok.Data; + +@Data +public class SyncRiskDTO { + /** + * 主键 + */ + private String id; + private String name; + /** + * 重大风险 + * 风险等级 + */ + private String hazardLevel; + /** + * 危险因素 + */ + private String riskFactors; + /** + * 所属单位 + */ + private String affiliatedUnit; + /** + * 所属部门 + */ + private String department; + + /** + * 定员 + */ + private String staffing; + + /** + * 定量 + */ + private String ration; + + /** + * 地理位置 + */ + private String geographicalPosition; + + /** + * 责任人 + */ + private String personLiable; + + /** + * 现场负责人 + */ + private String siteLeader; + + /** + * 主要设备、设施设计制造单位 + */ + private String zysbZzdw; + + /** + * 所在单位 + */ + private String szdw; + + /** + * 作业人数 + */ + private String numberOperators; + + /** + * 主要性能参数 + */ + private String mainPerformanceParameters; + + /** + * 工作环境参数 + */ + private String workingEnvironmentParameters; + + /** + * 安装单位 + */ + private String installationUnit; + + /** + * 投产日期 + */ + private String productionDate; + + /** + * 设备总数 + */ + private String totalEquipment; + + /** + * 备注 + */ + private String note; + + /** + * 创建用户 + */ + private String createUser; + private String createTime; + private String updateUser; + private String updateTime; + /** + * 是否删除0:否;1:是(接口已过滤掉1的数据) + */ + private Integer isDel; + + /** + * 行政区域 + */ + private String xzqy; + /** + * 街道 + */ + private String jdxx; + + /** + * 楼房 + */ + private String loufang; + + /** + * 楼层 + */ + private String louceng; + + /** + * 房间 + */ + private String roomName; + /** + * 所属单位编码 + */ + private String affiliatedUnitsCode; + + /** + * 危险性质 + */ + private String hazardousNature; + + public RiskPointInfo convertToRisk(RiskPointInfo pointInfo) { + //风险点缺少密级 + pointInfo.setSecretLevel("1"); + // hazardLevel 是否有字典值? + + if (department != null) { + pointInfo.setDeptId(Convert.toLong(department)); + } + pointInfo.setNature(hazardousNature); + pointInfo.setRiskName(name); + pointInfo.setAddress(geographicalPosition); + pointInfo.setTargetId(id); + //默认类型为1 + pointInfo.setRiskType(1); + return pointInfo; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java new file mode 100644 index 0000000..08e89a0 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.device.handler; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class BoxDefaultHttpHeaderHandler extends DefaultHttpHeaderHandler { + /** + * 代理服务IP + */ + private String xTargetHost; + + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Access-Token", token); + } + if (StrUtil.isNotEmpty(xTargetHost)){ + base.addHeader("X-TARGET-HOST", xTargetHost); + } + } + + public String getXTargetHost() { + return xTargetHost; + } + + public void setXTargetHost(String XTargetHost) { + this.xTargetHost = XTargetHost; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java new file mode 100644 index 0000000..903e567 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.http; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class RiskHttpHandler extends DefaultHttpHeaderHandler { + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Authorization", token); + } + + } +} + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java new file mode 100644 index 0000000..9f75f42 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java @@ -0,0 +1,35 @@ +package com.casic.missiles.modular.task; + +import com.casic.missiles.modular.device.service.IRiskPointInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +@Slf4j +@Component +public class RiskTask { + + @Value("${casic.risk.open:false}") + private Boolean open; + + @Resource + private IRiskPointInfoService riskPointInfoService; + + /** + * 设备信息同步0 + * 每30分钟采集一次 + */ + @Scheduled(cron = "${casic.risk.corn:0 */1 * * * *}") + public void device() { + //风险点数据同步 + if (open) { + log.info("risk sync start...."); + riskPointInfoService.loadRiskInfo(); + log.info("risk sync end...."); + } + } + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java new file mode 100644 index 0000000..e4ca4f1 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.util; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.modular.http.RiskHttpHandler; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import com.casic.missiles.modular.system.utils.HttpUtils; + +import java.util.HashMap; +import java.util.Map; + +public class RiskHttpUtil { + public static final String loginUrl = "/rest/platform/systemLogin"; + public static final String pointDataUrl = "/rest/platform/dangerPointData"; + + public static String login(String baseUrl, String secret) { + Map param = new HashMap<>(); + param.put("secret", secret); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + defaultHeaderHandler.setJson(true); + String res = HttpUtils.sendPost(baseUrl + loginUrl, param, "", defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + public static String pointData(String baseUrl, String token) { + Map param = new HashMap<>(); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + + String res = HttpUtils.sendGet(baseUrl + pointDataUrl, param, token, defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + /** + * 登录数据加密 + * @param appId 加密id + * @param publicKey 公钥 + * @return + * @throws Exception + */ + public static String encrypt(String appId,String publicKey) throws Exception { + long ts = System.currentTimeMillis(); + return RSAUtils.encrypt(appId+"_"+ts,publicKey); + } + + +} diff --git a/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java new file mode 100644 index 0000000..9ba1e2a --- /dev/null +++ b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java @@ -0,0 +1,62 @@ +package com.casic.missiles.test; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.TypeReference; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.risk.SyncRiskDTO; +import com.casic.missiles.modular.device.util.AesUtil; +import com.casic.missiles.modular.util.RiskHttpUtil; +import com.casic.missiles.modular.util.WvpUtil; +import com.casic.missiles.modular.wvp.dto.MvpResponseDTO; + +import java.io.FileInputStream; +import java.security.MessageDigest; +import java.util.Date; +import java.util.HashMap; +import java.util.List; + +public class RiskTest { + public static void main(String[] args) throws Exception { +// File file = new File("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// String task = ZipFileUtil.getZipHandleTask("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(task); +// String md5 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(md5); +// String md52 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241122.zip"); +// System.out.println(md52); + + testDeviceLogin(); + System.out.println( DateUtil.offsetMinute(new Date(),-5)); + } + public static void testDeviceLogin() throws Exception { + Long time = System.currentTimeMillis(); + String str = "FXDDT_" + time; + String pubKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCynMBxzoNBemZKuxjlZzp04Lx/b0j1xRUznBKjlQSATwc+1DaxBpKdT4WfqAuFlSQLA7qLdntXw2cvUEvRxfdjJp2KfZLkEYRmYx3LT51WdCmouQREtMrR6j3mri8jV8TjktGCmBFMKX7eGeQM8O249yVjby6502bzZXehQ707JQIDAQAB"; + String sec = RSAUtils.encrypt(str, pubKey); + System.out.println(sec); + String priKey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALKcwHHOg0F6Zkq7GOVnOnTgvH9vSPXFFTOcEqOVBIBPBz7UNrEGkp1PhZ+oC4WVJAsDuot2e1fDZy9QS9HF92MmnYp9kuQRhGZjHctPnVZ0Kai5BES0ytHqPeauLyNXxOOS0YKYEUwpft4Z5Azw7bj3JWNvLrnTZvNld6FDvTslAgMBAAECgYAqN/kZLYpC+O6i7XSmDO95XwHPUXu6dDpdt5+EQR4OQh/hTwIaeAZB3uEj6vHGQomBfQEkI/5lsU97lIxHanbd+Hro7JyIhsGD5LR5XnZHVKzFiZW62OIU6FI9dlQNN8miiblnmyDwiMA3okaHl0O7qQjZ+IvY2csgmJc7AXpPpQJBAOhrhcfWFcgffj2O6HYNlBLFfbboc/ZzrEADDXKnxRSHlo5o8W+6gylG/L2NGtbag5S68B9VYzdkSQ1++5C+Ws8CQQDEu7h311PLEiKgqzGHpjzadQETmt/jMadaKQmT0TZwNVi6X8lR17U5hF8dAqZzUzr9kUC0HRIZhg4Uv1v3W3fLAkB4YPhxgJjXhjhEefg87Nt8vX1Xdx5Yz6CvpuUYNX0GHRQFvqUOUXQNtQ7CvorgLV1pc0lbcUZqMi8EJnj1hyJRAkEAjHXWm8GiMt+M15fCsi3vTq2xChVOekBuUsHv85iwvGZqJg7ThtpyqlEnM2g7/STUfkvhnXcQACclEI0blTy6BwJAPmFyhU+d0ejVpbc53TdrL2HqYYUHi/tTy/dtUa7lbypzdwwJ2M1Tv5PE8sQxr9tgMbebfxVb/RFKdiCCtzC4ng=="; + String s = RSAUtils.decrypt(sec,priKey); + System.out.println(s); + + + String appId = "5d7d4d81a64f4b8f"; + String publicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB"; + String secret = RiskHttpUtil.encrypt(appId,publicKey); + System.out.println(secret); + String res = RiskHttpUtil.login("http://101.201.36.107:12388",secret); + System.out.println(res); + JSONObject jsonObject = JSON.parseObject(res); + String token = jsonObject.getString("data"); + String resPoint = RiskHttpUtil.pointData("http://101.201.36.107:12388",token); + System.out.println(resPoint); + + + ResponseDataDTO> riskPointRes = JSON.parseObject(resPoint, new TypeReference>>() { + }); + + } + +} diff --git a/casic-web/src/main/resources/doc/20250609.md b/casic-web/src/main/resources/doc/20250609.md new file mode 100644 index 0000000..0cb3464 --- /dev/null +++ b/casic-web/src/main/resources/doc/20250609.md @@ -0,0 +1,30 @@ +## 一、数据库更新 + +1. 设备分组数据库增加 + +``` +ALTER TABLE bus_device_info ADD COLUMN GROUP_ID bigint; + +create table bus_device_group +( + id bigint not null comment '主键', + create_time datetime comment '创建时间', + update_time datetime comment '修改时间', + group_name varchar(255) comment '分组名称', + create_id bigint comment '创建人', + dept_id bigint comment '所属组织' +); + +alter table bus_device_group comment '设备分组管理信息'; + +``` + +casic.tenant.excludes 配置项中增加 bus_device_group + + +casic.no-login-urls 中增加如下配置 +,/sync/risk/dept,/sync/risk/user/list,/sync/risk/device/list + + + + diff --git a/casic-web/src/main/resources/doc/20250624.md b/casic-web/src/main/resources/doc/20250624.md new file mode 100644 index 0000000..7af561d --- /dev/null +++ b/casic-web/src/main/resources/doc/20250624.md @@ -0,0 +1,34 @@ +## 一、数据库更新 + +1. 风险点表添加同步ID + +``` +ALTER TABLE risk_point_info ADD COLUMN TARGET_ID VARCHAR(255); + +``` + +2. 风险点相关配置项 + +casic.risk.open 默认false 不开启 开启需配置true +casic.risk.corn 定时时间 默认0 */5 * * * * 5分钟 +casic.risk.appId 默认 5d7d4d81a64f4b8f 如变更需更改 +casic.risk.publicKey 公钥 默认MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB +casic.risk.host 风险点地址, 默认http://101.201.36.107:12388 生产需更改 + +3. 增加字典值 + hazardLevelName 风险危险等级(706映射) + 1 低风险 + 1 一般风险 + 2 较大风险 + 3 重大风险 + 以上字典值以706风险等级名称对应本系统风险点1 2 3 等级,如果706风险等级名称变更 修改对应字典值名称即可 + +4. 盒子代理服务模块添加 + 增加配置项 + casic.video.box.proxy 192.168.83.37:30064 此处需变更为部署代理nginx的ip及端口,具体配置参见国标级联及代理服务配置说明 + + + + + + diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" new file mode 100644 index 0000000..30cdcbd --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" new file mode 100644 index 0000000..6a0069c --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" new file mode 100644 index 0000000..f775124 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" new file mode 100644 index 0000000..9f65ff1 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" new file mode 100644 index 0000000..613ec69 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" new file mode 100644 index 0000000..1614b04 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" new file mode 100644 index 0000000..3f5083a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" new file mode 100644 index 0000000..134a604 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" new file mode 100644 index 0000000..7edeaa0 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" new file mode 100644 index 0000000..ccd0993 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" new file mode 100644 index 0000000..0cbf80d --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" new file mode 100644 index 0000000..613ec69 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" new file mode 100644 index 0000000..3f5083a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" new file mode 100644 index 0000000..7edeaa0 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image012.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image012.jpg" new file mode 100644 index 0000000..0cbf80d --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image012.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/themedata.thmx" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/themedata.thmx" new file mode 100644 index 0000000..67aae0a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/themedata.thmx" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/colorschememapping.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/colorschememapping.xml" new file mode 100644 index 0000000..6a0069c --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/colorschememapping.xml" @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image001.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image001.png" new file mode 100644 index 0000000..1614b04 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image001.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.gif" new file mode 100644 index 0000000..92bd844 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.png" new file mode 100644 index 0000000..9f65ff1 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.jpg" new file mode 100644 index 0000000..72b5d13 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.png" new file mode 100644 index 0000000..a5af4eb --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.gif" new file mode 100644 index 0000000..b4e65ac --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.jpg" new file mode 100644 index 0000000..b7fe03f --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image005.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image005.png" new file mode 100644 index 0000000..ccd0993 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image005.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image006.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image006.jpg" new file mode 100644 index 0000000..c8ca1b6 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image006.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image007.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image007.gif" new file mode 100644 index 0000000..92bd844 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image007.gif" Binary files differ diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java new file mode 100644 index 0000000..77c14a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.device.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dictmap.DeviceGroupQueryDict; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.vo.BusDeviceGroupVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; + +/** + * 设备分组管理信息Controller + * + * @author lwh + * @date 2025-06-11 + */ +@Api(tags = "设备分组管理信息") +@RestController +@RequestMapping("/device/group") +public class BusDeviceGroupController extends BaseController { + + private final IBusDeviceGroupService busDeviceGroupService; + private final AbstractPermissionContext abstractPermissionContext; + + public BusDeviceGroupController(IBusDeviceGroupService busDeviceGroupService, AbstractPermissionContext abstractPermissionContext) { + this.busDeviceGroupService = busDeviceGroupService; + this.abstractPermissionContext = abstractPermissionContext; + } + + @ApiOperation(value = "列表查询") + @GetMapping(value = "/list") + public ResponseDataDTO> list(BusDeviceGroupVO busDeviceGroupVO) { + QueryWrapper query = busDeviceGroupVO.genQuery(); + return ResponseDataDTO.success(busDeviceGroupService.list(query)); + } + + @ApiOperation(value = "分组树结构查询") + @BussinessLog(value = "分组树结构查询") + @GetMapping(value = "/tree") + public ResponseDataDTO> groupTree() { + List groupDTOList = busDeviceGroupService.groupTree(); + return ResponseDataDTO.success(groupDTOList); + } + + @BussinessLog(value = "设备分组分页查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "分页查询") + @GetMapping(value = "/listPage") + public ResponseDataDTO> listPage(BusDeviceGroupVO busDeviceGroupVO) { + Page page = PageFactory.defaultPage(); + QueryWrapper query = busDeviceGroupVO.genQuery(); + List list = busDeviceGroupService.selectBusDeviceGroupPage(page, query); + page.setRecords(list); + return ResponseDataDTO.success(super.packForBT(page)); + } + + @BussinessLog(value = "设备分组新增", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "新增接口") + @PostMapping(value = "/add") + public ResponseDataDTO add(@RequestBody BusDeviceGroup busDeviceGroup) { + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + busDeviceGroup.setCreateId(user.getId()); + busDeviceGroup.setCreateTime(new Date()); + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.save(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组修改", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @PostMapping(value = "/update") + public ResponseDataDTO update(@RequestBody BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.updateById(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组删除", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "删除接口") + @GetMapping(value = "/delete") + public ResponseDataDTO delete(String id) { + busDeviceGroupService.removeById(id); + return ResponseDataDTO.success(); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { + busDeviceGroupService.removeByIds(ids.getIds()); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组详情查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "详情查询") + @GetMapping(value = "/detail") + public ResponseDataDTO detail(String id) { + return ResponseDataDTO.success(busDeviceGroupService.getById(id)); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java new file mode 100644 index 0000000..9d3726f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.device.dao; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import java.util.List; +/** + *

+ * 设备分组管理信息 Mapper 接口 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface BusDeviceGroupMapper extends BaseMapper { +/** +* 设备分组管理信息 分页检索 +*/ +List selectBusDeviceGroupPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml new file mode 100644 index 0000000..a6dd84f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + id + , + create_time as createTime , + update_time as updateTime , + group_name as groupName , + create_id as createId , + dept_id as deptId + + + a + . + id + , + a.create_time + as createTime , + a.update_time + as updateTime , + a.group_name + as groupName , + a.create_id + as createId , + a.dept_id + as deptId + + + + + + and group_name like concat('%',#{request.groupName},'%') + + + and dept_id = #{request.deptId} + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java new file mode 100644 index 0000000..a821e92 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dictmap; + +import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap; + +public class DeviceGroupQueryDict extends AbstractDictMap { + + @Override + public void init() { + put("id", "主键"); + put("deptId", "所属组织"); + put("groupName", "分组名称"); + + put("deptName", "所属单位"); + } + + @Override + protected void initBeWrapped() { + + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java new file mode 100644 index 0000000..d8d1712 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.device.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + + +/** + * 设备分组管理信息对象 bus_device_group + * + * @author lwh + * @date 2025-06-11 + */ +@Data +@TableName("bus_device_group") +public class BusDeviceGroup extends Model { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键", dataType = "Long") + @TableField("id") + private Long id; + + @ApiModelProperty(value = "创建时间", dataType = "Date") + @TableField("create_time") + private Date createTime; + + @ApiModelProperty(value = "修改时间", dataType = "Date") + @TableField("update_time") + private Date updateTime; + + @ApiModelProperty(value = "分组名称", dataType = "String") + @TableField("group_name") + private String groupName; + + @ApiModelProperty(value = "创建人", dataType = "Long") + @TableField("create_id") + private Long createId; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; + @TableField(exist = false) + private String deptName; + + @Override + public String toString() { + return "BusDeviceGroup{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "groupName=" + groupName + + "createId=" + createId + + "deptId=" + deptId + + "}"; + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java new file mode 100644 index 0000000..d2cee5c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; + +import java.util.List; + + +/** + *

+ * 设备分组管理信息 服务类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface IBusDeviceGroupService extends IService { + /** + * 设备分组管理信息 分页检索 + */ + List selectBusDeviceGroupPage(Page page, QueryWrapper query); + + /** + * 树结构查询 + * + * @return + */ + List groupTree(); + + DeptDTO convertDeptDTO(BusDeviceGroup group); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java new file mode 100644 index 0000000..a6f08b7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java @@ -0,0 +1,139 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractAuthService; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.modular.data.constants.DataConstants; +import com.casic.missiles.modular.device.dao.BusDeviceGroupMapper; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; +import com.casic.missiles.modular.system.model.Dept; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.data.constants.DataConstants.NODE_TYPE_DEPT; + + +/** + *

+ * 设备分组管理信息 服务实现类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +@Service +public class BusDeviceGroupServiceImpl extends ServiceImpl implements IBusDeviceGroupService { + @Resource + private AbstractDeptService deptService; + + @Override + public List selectBusDeviceGroupPage(Page page, QueryWrapper query) { + List list = this.baseMapper.selectBusDeviceGroupPage(page, query); + list.forEach(this::wrapperInfo); + return list; + } + + @Override + public List groupTree() { + List deptList = deviceDept(); + + List deptDTOS = new ArrayList<>(); + //树节点根 + List rootIds = new ArrayList<>(); + Set normalIds = new HashSet<>(); + + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setId(dept.getId()); + deptDTO.setPid(dept.getPid()); + deptDTO.setFullName(dept.getFullName()); + deptDTO.setName(dept.getSimpleName()); + deptDTO.setType(NODE_TYPE_DEPT); + + normalIds.add(dept.getId()); + deptDTOS.add(deptDTO); + + + //查询该组织下分组信息 + LambdaQueryWrapper deviceQuery = new LambdaQueryWrapper<>(); + deviceQuery.eq(BusDeviceGroup::getDeptId, deptDTO.getId()); + + deviceQuery.orderByAsc(BusDeviceGroup::getGroupName); + List deviceInfos = this.list(deviceQuery); + List deptDTOList = new ArrayList<>(); + for (BusDeviceGroup group : deviceInfos) { + DeptDTO deptDto = this.convertDeptDTO(group); + deptDTOList.add(deptDto); + } + deptDTO.setChildrenNodes(deptDTOList); + } + + for (DeptDTO deptDTO : deptDTOS) { + if (!normalIds.contains(deptDTO.getPid())) { + rootIds.add(deptDTO.getPid()); + } + } + + //过滤根节点 + DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); + List newTree = new ArrayList<>(); + rootIds = rootIds.stream().distinct().collect(Collectors.toList()); + for (Long rootId : rootIds) { + abstractTreeBuildFactory.setRootId(rootId + ""); + newTree.addAll(abstractTreeBuildFactory.doTreeBuild(deptDTOS)); + } + return newTree; + } + + public DeptDTO convertDeptDTO(BusDeviceGroup group) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setType(DataConstants.NODE_TYPE_GROUP); + deptDTO.setId(group.getId()); + deptDTO.setPid(group.getDeptId()); + deptDTO.setName(group.getGroupName()); + deptDTO.setGroup(group); + return deptDTO; + } + + @Resource + private AbstractAuthService authService; + + private List deviceDept() { + //查询可见组织 + DataScope scope = authService.getLoginUserDataScope(); + AuthUser user = authService.getLoginUser(); + + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); + deptQuery.inSql(Dept::getId, "select dept_id from bus_device_info "); + if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums().getCode())) { + deptQuery.in(Dept::getId, scope.getDeptIds()); + } + deptQuery.orderByAsc(Dept::getNum); + + List deptList = deptService.list(deptQuery); + return deptList; + } + + @Override + public List list() { + List list = super.list(); + list.forEach(this::wrapperInfo); + return list; + } + + private void wrapperInfo(BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setDeptName(deptService.getDeptName(busDeviceGroup.getDeptId())); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java new file mode 100644 index 0000000..413d7ac --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.device.vo; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 设备分组管理信息对象VO + * + * @author lwh + * @date 2025-06-11 + */ +@Data +public class BusDeviceGroupVO { + private static final long serialVersionUID = 1L; + + + @ApiModelProperty(value = "分组名称", dataType = "String") + private String groupName; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + private Long deptId; + + public QueryWrapper genQuery() { + QueryWrapper query = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(groupName)) { + query.like("group_name", groupName); + } + if (deptId != null) { + query.eq("dept_id", deptId); + } + return query; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java new file mode 100644 index 0000000..477435e --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java @@ -0,0 +1,163 @@ +package com.casic.missiles.modular.device.dto.risk; + +import cn.hutool.core.convert.Convert; +import com.casic.missiles.modular.device.model.RiskPointInfo; +import lombok.Data; + +@Data +public class SyncRiskDTO { + /** + * 主键 + */ + private String id; + private String name; + /** + * 重大风险 + * 风险等级 + */ + private String hazardLevel; + /** + * 危险因素 + */ + private String riskFactors; + /** + * 所属单位 + */ + private String affiliatedUnit; + /** + * 所属部门 + */ + private String department; + + /** + * 定员 + */ + private String staffing; + + /** + * 定量 + */ + private String ration; + + /** + * 地理位置 + */ + private String geographicalPosition; + + /** + * 责任人 + */ + private String personLiable; + + /** + * 现场负责人 + */ + private String siteLeader; + + /** + * 主要设备、设施设计制造单位 + */ + private String zysbZzdw; + + /** + * 所在单位 + */ + private String szdw; + + /** + * 作业人数 + */ + private String numberOperators; + + /** + * 主要性能参数 + */ + private String mainPerformanceParameters; + + /** + * 工作环境参数 + */ + private String workingEnvironmentParameters; + + /** + * 安装单位 + */ + private String installationUnit; + + /** + * 投产日期 + */ + private String productionDate; + + /** + * 设备总数 + */ + private String totalEquipment; + + /** + * 备注 + */ + private String note; + + /** + * 创建用户 + */ + private String createUser; + private String createTime; + private String updateUser; + private String updateTime; + /** + * 是否删除0:否;1:是(接口已过滤掉1的数据) + */ + private Integer isDel; + + /** + * 行政区域 + */ + private String xzqy; + /** + * 街道 + */ + private String jdxx; + + /** + * 楼房 + */ + private String loufang; + + /** + * 楼层 + */ + private String louceng; + + /** + * 房间 + */ + private String roomName; + /** + * 所属单位编码 + */ + private String affiliatedUnitsCode; + + /** + * 危险性质 + */ + private String hazardousNature; + + public RiskPointInfo convertToRisk(RiskPointInfo pointInfo) { + //风险点缺少密级 + pointInfo.setSecretLevel("1"); + // hazardLevel 是否有字典值? + + if (department != null) { + pointInfo.setDeptId(Convert.toLong(department)); + } + pointInfo.setNature(hazardousNature); + pointInfo.setRiskName(name); + pointInfo.setAddress(geographicalPosition); + pointInfo.setTargetId(id); + //默认类型为1 + pointInfo.setRiskType(1); + return pointInfo; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java new file mode 100644 index 0000000..08e89a0 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.device.handler; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class BoxDefaultHttpHeaderHandler extends DefaultHttpHeaderHandler { + /** + * 代理服务IP + */ + private String xTargetHost; + + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Access-Token", token); + } + if (StrUtil.isNotEmpty(xTargetHost)){ + base.addHeader("X-TARGET-HOST", xTargetHost); + } + } + + public String getXTargetHost() { + return xTargetHost; + } + + public void setXTargetHost(String XTargetHost) { + this.xTargetHost = XTargetHost; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java new file mode 100644 index 0000000..903e567 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.http; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class RiskHttpHandler extends DefaultHttpHeaderHandler { + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Authorization", token); + } + + } +} + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java new file mode 100644 index 0000000..9f75f42 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java @@ -0,0 +1,35 @@ +package com.casic.missiles.modular.task; + +import com.casic.missiles.modular.device.service.IRiskPointInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +@Slf4j +@Component +public class RiskTask { + + @Value("${casic.risk.open:false}") + private Boolean open; + + @Resource + private IRiskPointInfoService riskPointInfoService; + + /** + * 设备信息同步0 + * 每30分钟采集一次 + */ + @Scheduled(cron = "${casic.risk.corn:0 */1 * * * *}") + public void device() { + //风险点数据同步 + if (open) { + log.info("risk sync start...."); + riskPointInfoService.loadRiskInfo(); + log.info("risk sync end...."); + } + } + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java new file mode 100644 index 0000000..e4ca4f1 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.util; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.modular.http.RiskHttpHandler; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import com.casic.missiles.modular.system.utils.HttpUtils; + +import java.util.HashMap; +import java.util.Map; + +public class RiskHttpUtil { + public static final String loginUrl = "/rest/platform/systemLogin"; + public static final String pointDataUrl = "/rest/platform/dangerPointData"; + + public static String login(String baseUrl, String secret) { + Map param = new HashMap<>(); + param.put("secret", secret); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + defaultHeaderHandler.setJson(true); + String res = HttpUtils.sendPost(baseUrl + loginUrl, param, "", defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + public static String pointData(String baseUrl, String token) { + Map param = new HashMap<>(); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + + String res = HttpUtils.sendGet(baseUrl + pointDataUrl, param, token, defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + /** + * 登录数据加密 + * @param appId 加密id + * @param publicKey 公钥 + * @return + * @throws Exception + */ + public static String encrypt(String appId,String publicKey) throws Exception { + long ts = System.currentTimeMillis(); + return RSAUtils.encrypt(appId+"_"+ts,publicKey); + } + + +} diff --git a/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java new file mode 100644 index 0000000..9ba1e2a --- /dev/null +++ b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java @@ -0,0 +1,62 @@ +package com.casic.missiles.test; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.TypeReference; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.risk.SyncRiskDTO; +import com.casic.missiles.modular.device.util.AesUtil; +import com.casic.missiles.modular.util.RiskHttpUtil; +import com.casic.missiles.modular.util.WvpUtil; +import com.casic.missiles.modular.wvp.dto.MvpResponseDTO; + +import java.io.FileInputStream; +import java.security.MessageDigest; +import java.util.Date; +import java.util.HashMap; +import java.util.List; + +public class RiskTest { + public static void main(String[] args) throws Exception { +// File file = new File("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// String task = ZipFileUtil.getZipHandleTask("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(task); +// String md5 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(md5); +// String md52 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241122.zip"); +// System.out.println(md52); + + testDeviceLogin(); + System.out.println( DateUtil.offsetMinute(new Date(),-5)); + } + public static void testDeviceLogin() throws Exception { + Long time = System.currentTimeMillis(); + String str = "FXDDT_" + time; + String pubKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCynMBxzoNBemZKuxjlZzp04Lx/b0j1xRUznBKjlQSATwc+1DaxBpKdT4WfqAuFlSQLA7qLdntXw2cvUEvRxfdjJp2KfZLkEYRmYx3LT51WdCmouQREtMrR6j3mri8jV8TjktGCmBFMKX7eGeQM8O249yVjby6502bzZXehQ707JQIDAQAB"; + String sec = RSAUtils.encrypt(str, pubKey); + System.out.println(sec); + String priKey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALKcwHHOg0F6Zkq7GOVnOnTgvH9vSPXFFTOcEqOVBIBPBz7UNrEGkp1PhZ+oC4WVJAsDuot2e1fDZy9QS9HF92MmnYp9kuQRhGZjHctPnVZ0Kai5BES0ytHqPeauLyNXxOOS0YKYEUwpft4Z5Azw7bj3JWNvLrnTZvNld6FDvTslAgMBAAECgYAqN/kZLYpC+O6i7XSmDO95XwHPUXu6dDpdt5+EQR4OQh/hTwIaeAZB3uEj6vHGQomBfQEkI/5lsU97lIxHanbd+Hro7JyIhsGD5LR5XnZHVKzFiZW62OIU6FI9dlQNN8miiblnmyDwiMA3okaHl0O7qQjZ+IvY2csgmJc7AXpPpQJBAOhrhcfWFcgffj2O6HYNlBLFfbboc/ZzrEADDXKnxRSHlo5o8W+6gylG/L2NGtbag5S68B9VYzdkSQ1++5C+Ws8CQQDEu7h311PLEiKgqzGHpjzadQETmt/jMadaKQmT0TZwNVi6X8lR17U5hF8dAqZzUzr9kUC0HRIZhg4Uv1v3W3fLAkB4YPhxgJjXhjhEefg87Nt8vX1Xdx5Yz6CvpuUYNX0GHRQFvqUOUXQNtQ7CvorgLV1pc0lbcUZqMi8EJnj1hyJRAkEAjHXWm8GiMt+M15fCsi3vTq2xChVOekBuUsHv85iwvGZqJg7ThtpyqlEnM2g7/STUfkvhnXcQACclEI0blTy6BwJAPmFyhU+d0ejVpbc53TdrL2HqYYUHi/tTy/dtUa7lbypzdwwJ2M1Tv5PE8sQxr9tgMbebfxVb/RFKdiCCtzC4ng=="; + String s = RSAUtils.decrypt(sec,priKey); + System.out.println(s); + + + String appId = "5d7d4d81a64f4b8f"; + String publicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB"; + String secret = RiskHttpUtil.encrypt(appId,publicKey); + System.out.println(secret); + String res = RiskHttpUtil.login("http://101.201.36.107:12388",secret); + System.out.println(res); + JSONObject jsonObject = JSON.parseObject(res); + String token = jsonObject.getString("data"); + String resPoint = RiskHttpUtil.pointData("http://101.201.36.107:12388",token); + System.out.println(resPoint); + + + ResponseDataDTO> riskPointRes = JSON.parseObject(resPoint, new TypeReference>>() { + }); + + } + +} diff --git a/casic-web/src/main/resources/doc/20250609.md b/casic-web/src/main/resources/doc/20250609.md new file mode 100644 index 0000000..0cb3464 --- /dev/null +++ b/casic-web/src/main/resources/doc/20250609.md @@ -0,0 +1,30 @@ +## 一、数据库更新 + +1. 设备分组数据库增加 + +``` +ALTER TABLE bus_device_info ADD COLUMN GROUP_ID bigint; + +create table bus_device_group +( + id bigint not null comment '主键', + create_time datetime comment '创建时间', + update_time datetime comment '修改时间', + group_name varchar(255) comment '分组名称', + create_id bigint comment '创建人', + dept_id bigint comment '所属组织' +); + +alter table bus_device_group comment '设备分组管理信息'; + +``` + +casic.tenant.excludes 配置项中增加 bus_device_group + + +casic.no-login-urls 中增加如下配置 +,/sync/risk/dept,/sync/risk/user/list,/sync/risk/device/list + + + + diff --git a/casic-web/src/main/resources/doc/20250624.md b/casic-web/src/main/resources/doc/20250624.md new file mode 100644 index 0000000..7af561d --- /dev/null +++ b/casic-web/src/main/resources/doc/20250624.md @@ -0,0 +1,34 @@ +## 一、数据库更新 + +1. 风险点表添加同步ID + +``` +ALTER TABLE risk_point_info ADD COLUMN TARGET_ID VARCHAR(255); + +``` + +2. 风险点相关配置项 + +casic.risk.open 默认false 不开启 开启需配置true +casic.risk.corn 定时时间 默认0 */5 * * * * 5分钟 +casic.risk.appId 默认 5d7d4d81a64f4b8f 如变更需更改 +casic.risk.publicKey 公钥 默认MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB +casic.risk.host 风险点地址, 默认http://101.201.36.107:12388 生产需更改 + +3. 增加字典值 + hazardLevelName 风险危险等级(706映射) + 1 低风险 + 1 一般风险 + 2 较大风险 + 3 重大风险 + 以上字典值以706风险等级名称对应本系统风险点1 2 3 等级,如果706风险等级名称变更 修改对应字典值名称即可 + +4. 盒子代理服务模块添加 + 增加配置项 + casic.video.box.proxy 192.168.83.37:30064 此处需变更为部署代理nginx的ip及端口,具体配置参见国标级联及代理服务配置说明 + + + + + + diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" new file mode 100644 index 0000000..30cdcbd --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" new file mode 100644 index 0000000..6a0069c --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" new file mode 100644 index 0000000..f775124 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" new file mode 100644 index 0000000..9f65ff1 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" new file mode 100644 index 0000000..613ec69 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" new file mode 100644 index 0000000..1614b04 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" new file mode 100644 index 0000000..3f5083a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" new file mode 100644 index 0000000..134a604 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" new file mode 100644 index 0000000..7edeaa0 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" new file mode 100644 index 0000000..ccd0993 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" new file mode 100644 index 0000000..0cbf80d --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" new file mode 100644 index 0000000..613ec69 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" new file mode 100644 index 0000000..3f5083a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" new file mode 100644 index 0000000..7edeaa0 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image012.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image012.jpg" new file mode 100644 index 0000000..0cbf80d --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image012.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/themedata.thmx" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/themedata.thmx" new file mode 100644 index 0000000..67aae0a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/themedata.thmx" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/colorschememapping.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/colorschememapping.xml" new file mode 100644 index 0000000..6a0069c --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/colorschememapping.xml" @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image001.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image001.png" new file mode 100644 index 0000000..1614b04 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image001.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.gif" new file mode 100644 index 0000000..92bd844 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.png" new file mode 100644 index 0000000..9f65ff1 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.jpg" new file mode 100644 index 0000000..72b5d13 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.png" new file mode 100644 index 0000000..a5af4eb --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.gif" new file mode 100644 index 0000000..b4e65ac --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.jpg" new file mode 100644 index 0000000..b7fe03f --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image005.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image005.png" new file mode 100644 index 0000000..ccd0993 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image005.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image006.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image006.jpg" new file mode 100644 index 0000000..c8ca1b6 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image006.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image007.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image007.gif" new file mode 100644 index 0000000..92bd844 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image007.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image007.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image007.jpg" new file mode 100644 index 0000000..72b5d13 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image007.jpg" Binary files differ diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java new file mode 100644 index 0000000..77c14a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.device.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dictmap.DeviceGroupQueryDict; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.vo.BusDeviceGroupVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; + +/** + * 设备分组管理信息Controller + * + * @author lwh + * @date 2025-06-11 + */ +@Api(tags = "设备分组管理信息") +@RestController +@RequestMapping("/device/group") +public class BusDeviceGroupController extends BaseController { + + private final IBusDeviceGroupService busDeviceGroupService; + private final AbstractPermissionContext abstractPermissionContext; + + public BusDeviceGroupController(IBusDeviceGroupService busDeviceGroupService, AbstractPermissionContext abstractPermissionContext) { + this.busDeviceGroupService = busDeviceGroupService; + this.abstractPermissionContext = abstractPermissionContext; + } + + @ApiOperation(value = "列表查询") + @GetMapping(value = "/list") + public ResponseDataDTO> list(BusDeviceGroupVO busDeviceGroupVO) { + QueryWrapper query = busDeviceGroupVO.genQuery(); + return ResponseDataDTO.success(busDeviceGroupService.list(query)); + } + + @ApiOperation(value = "分组树结构查询") + @BussinessLog(value = "分组树结构查询") + @GetMapping(value = "/tree") + public ResponseDataDTO> groupTree() { + List groupDTOList = busDeviceGroupService.groupTree(); + return ResponseDataDTO.success(groupDTOList); + } + + @BussinessLog(value = "设备分组分页查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "分页查询") + @GetMapping(value = "/listPage") + public ResponseDataDTO> listPage(BusDeviceGroupVO busDeviceGroupVO) { + Page page = PageFactory.defaultPage(); + QueryWrapper query = busDeviceGroupVO.genQuery(); + List list = busDeviceGroupService.selectBusDeviceGroupPage(page, query); + page.setRecords(list); + return ResponseDataDTO.success(super.packForBT(page)); + } + + @BussinessLog(value = "设备分组新增", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "新增接口") + @PostMapping(value = "/add") + public ResponseDataDTO add(@RequestBody BusDeviceGroup busDeviceGroup) { + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + busDeviceGroup.setCreateId(user.getId()); + busDeviceGroup.setCreateTime(new Date()); + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.save(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组修改", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @PostMapping(value = "/update") + public ResponseDataDTO update(@RequestBody BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.updateById(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组删除", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "删除接口") + @GetMapping(value = "/delete") + public ResponseDataDTO delete(String id) { + busDeviceGroupService.removeById(id); + return ResponseDataDTO.success(); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { + busDeviceGroupService.removeByIds(ids.getIds()); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组详情查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "详情查询") + @GetMapping(value = "/detail") + public ResponseDataDTO detail(String id) { + return ResponseDataDTO.success(busDeviceGroupService.getById(id)); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java new file mode 100644 index 0000000..9d3726f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.device.dao; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import java.util.List; +/** + *

+ * 设备分组管理信息 Mapper 接口 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface BusDeviceGroupMapper extends BaseMapper { +/** +* 设备分组管理信息 分页检索 +*/ +List selectBusDeviceGroupPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml new file mode 100644 index 0000000..a6dd84f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + id + , + create_time as createTime , + update_time as updateTime , + group_name as groupName , + create_id as createId , + dept_id as deptId + + + a + . + id + , + a.create_time + as createTime , + a.update_time + as updateTime , + a.group_name + as groupName , + a.create_id + as createId , + a.dept_id + as deptId + + + + + + and group_name like concat('%',#{request.groupName},'%') + + + and dept_id = #{request.deptId} + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java new file mode 100644 index 0000000..a821e92 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dictmap; + +import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap; + +public class DeviceGroupQueryDict extends AbstractDictMap { + + @Override + public void init() { + put("id", "主键"); + put("deptId", "所属组织"); + put("groupName", "分组名称"); + + put("deptName", "所属单位"); + } + + @Override + protected void initBeWrapped() { + + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java new file mode 100644 index 0000000..d8d1712 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.device.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + + +/** + * 设备分组管理信息对象 bus_device_group + * + * @author lwh + * @date 2025-06-11 + */ +@Data +@TableName("bus_device_group") +public class BusDeviceGroup extends Model { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键", dataType = "Long") + @TableField("id") + private Long id; + + @ApiModelProperty(value = "创建时间", dataType = "Date") + @TableField("create_time") + private Date createTime; + + @ApiModelProperty(value = "修改时间", dataType = "Date") + @TableField("update_time") + private Date updateTime; + + @ApiModelProperty(value = "分组名称", dataType = "String") + @TableField("group_name") + private String groupName; + + @ApiModelProperty(value = "创建人", dataType = "Long") + @TableField("create_id") + private Long createId; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; + @TableField(exist = false) + private String deptName; + + @Override + public String toString() { + return "BusDeviceGroup{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "groupName=" + groupName + + "createId=" + createId + + "deptId=" + deptId + + "}"; + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java new file mode 100644 index 0000000..d2cee5c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; + +import java.util.List; + + +/** + *

+ * 设备分组管理信息 服务类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface IBusDeviceGroupService extends IService { + /** + * 设备分组管理信息 分页检索 + */ + List selectBusDeviceGroupPage(Page page, QueryWrapper query); + + /** + * 树结构查询 + * + * @return + */ + List groupTree(); + + DeptDTO convertDeptDTO(BusDeviceGroup group); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java new file mode 100644 index 0000000..a6f08b7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java @@ -0,0 +1,139 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractAuthService; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.modular.data.constants.DataConstants; +import com.casic.missiles.modular.device.dao.BusDeviceGroupMapper; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; +import com.casic.missiles.modular.system.model.Dept; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.data.constants.DataConstants.NODE_TYPE_DEPT; + + +/** + *

+ * 设备分组管理信息 服务实现类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +@Service +public class BusDeviceGroupServiceImpl extends ServiceImpl implements IBusDeviceGroupService { + @Resource + private AbstractDeptService deptService; + + @Override + public List selectBusDeviceGroupPage(Page page, QueryWrapper query) { + List list = this.baseMapper.selectBusDeviceGroupPage(page, query); + list.forEach(this::wrapperInfo); + return list; + } + + @Override + public List groupTree() { + List deptList = deviceDept(); + + List deptDTOS = new ArrayList<>(); + //树节点根 + List rootIds = new ArrayList<>(); + Set normalIds = new HashSet<>(); + + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setId(dept.getId()); + deptDTO.setPid(dept.getPid()); + deptDTO.setFullName(dept.getFullName()); + deptDTO.setName(dept.getSimpleName()); + deptDTO.setType(NODE_TYPE_DEPT); + + normalIds.add(dept.getId()); + deptDTOS.add(deptDTO); + + + //查询该组织下分组信息 + LambdaQueryWrapper deviceQuery = new LambdaQueryWrapper<>(); + deviceQuery.eq(BusDeviceGroup::getDeptId, deptDTO.getId()); + + deviceQuery.orderByAsc(BusDeviceGroup::getGroupName); + List deviceInfos = this.list(deviceQuery); + List deptDTOList = new ArrayList<>(); + for (BusDeviceGroup group : deviceInfos) { + DeptDTO deptDto = this.convertDeptDTO(group); + deptDTOList.add(deptDto); + } + deptDTO.setChildrenNodes(deptDTOList); + } + + for (DeptDTO deptDTO : deptDTOS) { + if (!normalIds.contains(deptDTO.getPid())) { + rootIds.add(deptDTO.getPid()); + } + } + + //过滤根节点 + DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); + List newTree = new ArrayList<>(); + rootIds = rootIds.stream().distinct().collect(Collectors.toList()); + for (Long rootId : rootIds) { + abstractTreeBuildFactory.setRootId(rootId + ""); + newTree.addAll(abstractTreeBuildFactory.doTreeBuild(deptDTOS)); + } + return newTree; + } + + public DeptDTO convertDeptDTO(BusDeviceGroup group) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setType(DataConstants.NODE_TYPE_GROUP); + deptDTO.setId(group.getId()); + deptDTO.setPid(group.getDeptId()); + deptDTO.setName(group.getGroupName()); + deptDTO.setGroup(group); + return deptDTO; + } + + @Resource + private AbstractAuthService authService; + + private List deviceDept() { + //查询可见组织 + DataScope scope = authService.getLoginUserDataScope(); + AuthUser user = authService.getLoginUser(); + + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); + deptQuery.inSql(Dept::getId, "select dept_id from bus_device_info "); + if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums().getCode())) { + deptQuery.in(Dept::getId, scope.getDeptIds()); + } + deptQuery.orderByAsc(Dept::getNum); + + List deptList = deptService.list(deptQuery); + return deptList; + } + + @Override + public List list() { + List list = super.list(); + list.forEach(this::wrapperInfo); + return list; + } + + private void wrapperInfo(BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setDeptName(deptService.getDeptName(busDeviceGroup.getDeptId())); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java new file mode 100644 index 0000000..413d7ac --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.device.vo; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 设备分组管理信息对象VO + * + * @author lwh + * @date 2025-06-11 + */ +@Data +public class BusDeviceGroupVO { + private static final long serialVersionUID = 1L; + + + @ApiModelProperty(value = "分组名称", dataType = "String") + private String groupName; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + private Long deptId; + + public QueryWrapper genQuery() { + QueryWrapper query = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(groupName)) { + query.like("group_name", groupName); + } + if (deptId != null) { + query.eq("dept_id", deptId); + } + return query; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java new file mode 100644 index 0000000..477435e --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java @@ -0,0 +1,163 @@ +package com.casic.missiles.modular.device.dto.risk; + +import cn.hutool.core.convert.Convert; +import com.casic.missiles.modular.device.model.RiskPointInfo; +import lombok.Data; + +@Data +public class SyncRiskDTO { + /** + * 主键 + */ + private String id; + private String name; + /** + * 重大风险 + * 风险等级 + */ + private String hazardLevel; + /** + * 危险因素 + */ + private String riskFactors; + /** + * 所属单位 + */ + private String affiliatedUnit; + /** + * 所属部门 + */ + private String department; + + /** + * 定员 + */ + private String staffing; + + /** + * 定量 + */ + private String ration; + + /** + * 地理位置 + */ + private String geographicalPosition; + + /** + * 责任人 + */ + private String personLiable; + + /** + * 现场负责人 + */ + private String siteLeader; + + /** + * 主要设备、设施设计制造单位 + */ + private String zysbZzdw; + + /** + * 所在单位 + */ + private String szdw; + + /** + * 作业人数 + */ + private String numberOperators; + + /** + * 主要性能参数 + */ + private String mainPerformanceParameters; + + /** + * 工作环境参数 + */ + private String workingEnvironmentParameters; + + /** + * 安装单位 + */ + private String installationUnit; + + /** + * 投产日期 + */ + private String productionDate; + + /** + * 设备总数 + */ + private String totalEquipment; + + /** + * 备注 + */ + private String note; + + /** + * 创建用户 + */ + private String createUser; + private String createTime; + private String updateUser; + private String updateTime; + /** + * 是否删除0:否;1:是(接口已过滤掉1的数据) + */ + private Integer isDel; + + /** + * 行政区域 + */ + private String xzqy; + /** + * 街道 + */ + private String jdxx; + + /** + * 楼房 + */ + private String loufang; + + /** + * 楼层 + */ + private String louceng; + + /** + * 房间 + */ + private String roomName; + /** + * 所属单位编码 + */ + private String affiliatedUnitsCode; + + /** + * 危险性质 + */ + private String hazardousNature; + + public RiskPointInfo convertToRisk(RiskPointInfo pointInfo) { + //风险点缺少密级 + pointInfo.setSecretLevel("1"); + // hazardLevel 是否有字典值? + + if (department != null) { + pointInfo.setDeptId(Convert.toLong(department)); + } + pointInfo.setNature(hazardousNature); + pointInfo.setRiskName(name); + pointInfo.setAddress(geographicalPosition); + pointInfo.setTargetId(id); + //默认类型为1 + pointInfo.setRiskType(1); + return pointInfo; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java new file mode 100644 index 0000000..08e89a0 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.device.handler; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class BoxDefaultHttpHeaderHandler extends DefaultHttpHeaderHandler { + /** + * 代理服务IP + */ + private String xTargetHost; + + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Access-Token", token); + } + if (StrUtil.isNotEmpty(xTargetHost)){ + base.addHeader("X-TARGET-HOST", xTargetHost); + } + } + + public String getXTargetHost() { + return xTargetHost; + } + + public void setXTargetHost(String XTargetHost) { + this.xTargetHost = XTargetHost; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java new file mode 100644 index 0000000..903e567 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.http; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class RiskHttpHandler extends DefaultHttpHeaderHandler { + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Authorization", token); + } + + } +} + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java new file mode 100644 index 0000000..9f75f42 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java @@ -0,0 +1,35 @@ +package com.casic.missiles.modular.task; + +import com.casic.missiles.modular.device.service.IRiskPointInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +@Slf4j +@Component +public class RiskTask { + + @Value("${casic.risk.open:false}") + private Boolean open; + + @Resource + private IRiskPointInfoService riskPointInfoService; + + /** + * 设备信息同步0 + * 每30分钟采集一次 + */ + @Scheduled(cron = "${casic.risk.corn:0 */1 * * * *}") + public void device() { + //风险点数据同步 + if (open) { + log.info("risk sync start...."); + riskPointInfoService.loadRiskInfo(); + log.info("risk sync end...."); + } + } + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java new file mode 100644 index 0000000..e4ca4f1 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.util; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.modular.http.RiskHttpHandler; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import com.casic.missiles.modular.system.utils.HttpUtils; + +import java.util.HashMap; +import java.util.Map; + +public class RiskHttpUtil { + public static final String loginUrl = "/rest/platform/systemLogin"; + public static final String pointDataUrl = "/rest/platform/dangerPointData"; + + public static String login(String baseUrl, String secret) { + Map param = new HashMap<>(); + param.put("secret", secret); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + defaultHeaderHandler.setJson(true); + String res = HttpUtils.sendPost(baseUrl + loginUrl, param, "", defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + public static String pointData(String baseUrl, String token) { + Map param = new HashMap<>(); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + + String res = HttpUtils.sendGet(baseUrl + pointDataUrl, param, token, defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + /** + * 登录数据加密 + * @param appId 加密id + * @param publicKey 公钥 + * @return + * @throws Exception + */ + public static String encrypt(String appId,String publicKey) throws Exception { + long ts = System.currentTimeMillis(); + return RSAUtils.encrypt(appId+"_"+ts,publicKey); + } + + +} diff --git a/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java new file mode 100644 index 0000000..9ba1e2a --- /dev/null +++ b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java @@ -0,0 +1,62 @@ +package com.casic.missiles.test; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.TypeReference; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.risk.SyncRiskDTO; +import com.casic.missiles.modular.device.util.AesUtil; +import com.casic.missiles.modular.util.RiskHttpUtil; +import com.casic.missiles.modular.util.WvpUtil; +import com.casic.missiles.modular.wvp.dto.MvpResponseDTO; + +import java.io.FileInputStream; +import java.security.MessageDigest; +import java.util.Date; +import java.util.HashMap; +import java.util.List; + +public class RiskTest { + public static void main(String[] args) throws Exception { +// File file = new File("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// String task = ZipFileUtil.getZipHandleTask("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(task); +// String md5 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(md5); +// String md52 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241122.zip"); +// System.out.println(md52); + + testDeviceLogin(); + System.out.println( DateUtil.offsetMinute(new Date(),-5)); + } + public static void testDeviceLogin() throws Exception { + Long time = System.currentTimeMillis(); + String str = "FXDDT_" + time; + String pubKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCynMBxzoNBemZKuxjlZzp04Lx/b0j1xRUznBKjlQSATwc+1DaxBpKdT4WfqAuFlSQLA7qLdntXw2cvUEvRxfdjJp2KfZLkEYRmYx3LT51WdCmouQREtMrR6j3mri8jV8TjktGCmBFMKX7eGeQM8O249yVjby6502bzZXehQ707JQIDAQAB"; + String sec = RSAUtils.encrypt(str, pubKey); + System.out.println(sec); + String priKey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALKcwHHOg0F6Zkq7GOVnOnTgvH9vSPXFFTOcEqOVBIBPBz7UNrEGkp1PhZ+oC4WVJAsDuot2e1fDZy9QS9HF92MmnYp9kuQRhGZjHctPnVZ0Kai5BES0ytHqPeauLyNXxOOS0YKYEUwpft4Z5Azw7bj3JWNvLrnTZvNld6FDvTslAgMBAAECgYAqN/kZLYpC+O6i7XSmDO95XwHPUXu6dDpdt5+EQR4OQh/hTwIaeAZB3uEj6vHGQomBfQEkI/5lsU97lIxHanbd+Hro7JyIhsGD5LR5XnZHVKzFiZW62OIU6FI9dlQNN8miiblnmyDwiMA3okaHl0O7qQjZ+IvY2csgmJc7AXpPpQJBAOhrhcfWFcgffj2O6HYNlBLFfbboc/ZzrEADDXKnxRSHlo5o8W+6gylG/L2NGtbag5S68B9VYzdkSQ1++5C+Ws8CQQDEu7h311PLEiKgqzGHpjzadQETmt/jMadaKQmT0TZwNVi6X8lR17U5hF8dAqZzUzr9kUC0HRIZhg4Uv1v3W3fLAkB4YPhxgJjXhjhEefg87Nt8vX1Xdx5Yz6CvpuUYNX0GHRQFvqUOUXQNtQ7CvorgLV1pc0lbcUZqMi8EJnj1hyJRAkEAjHXWm8GiMt+M15fCsi3vTq2xChVOekBuUsHv85iwvGZqJg7ThtpyqlEnM2g7/STUfkvhnXcQACclEI0blTy6BwJAPmFyhU+d0ejVpbc53TdrL2HqYYUHi/tTy/dtUa7lbypzdwwJ2M1Tv5PE8sQxr9tgMbebfxVb/RFKdiCCtzC4ng=="; + String s = RSAUtils.decrypt(sec,priKey); + System.out.println(s); + + + String appId = "5d7d4d81a64f4b8f"; + String publicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB"; + String secret = RiskHttpUtil.encrypt(appId,publicKey); + System.out.println(secret); + String res = RiskHttpUtil.login("http://101.201.36.107:12388",secret); + System.out.println(res); + JSONObject jsonObject = JSON.parseObject(res); + String token = jsonObject.getString("data"); + String resPoint = RiskHttpUtil.pointData("http://101.201.36.107:12388",token); + System.out.println(resPoint); + + + ResponseDataDTO> riskPointRes = JSON.parseObject(resPoint, new TypeReference>>() { + }); + + } + +} diff --git a/casic-web/src/main/resources/doc/20250609.md b/casic-web/src/main/resources/doc/20250609.md new file mode 100644 index 0000000..0cb3464 --- /dev/null +++ b/casic-web/src/main/resources/doc/20250609.md @@ -0,0 +1,30 @@ +## 一、数据库更新 + +1. 设备分组数据库增加 + +``` +ALTER TABLE bus_device_info ADD COLUMN GROUP_ID bigint; + +create table bus_device_group +( + id bigint not null comment '主键', + create_time datetime comment '创建时间', + update_time datetime comment '修改时间', + group_name varchar(255) comment '分组名称', + create_id bigint comment '创建人', + dept_id bigint comment '所属组织' +); + +alter table bus_device_group comment '设备分组管理信息'; + +``` + +casic.tenant.excludes 配置项中增加 bus_device_group + + +casic.no-login-urls 中增加如下配置 +,/sync/risk/dept,/sync/risk/user/list,/sync/risk/device/list + + + + diff --git a/casic-web/src/main/resources/doc/20250624.md b/casic-web/src/main/resources/doc/20250624.md new file mode 100644 index 0000000..7af561d --- /dev/null +++ b/casic-web/src/main/resources/doc/20250624.md @@ -0,0 +1,34 @@ +## 一、数据库更新 + +1. 风险点表添加同步ID + +``` +ALTER TABLE risk_point_info ADD COLUMN TARGET_ID VARCHAR(255); + +``` + +2. 风险点相关配置项 + +casic.risk.open 默认false 不开启 开启需配置true +casic.risk.corn 定时时间 默认0 */5 * * * * 5分钟 +casic.risk.appId 默认 5d7d4d81a64f4b8f 如变更需更改 +casic.risk.publicKey 公钥 默认MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB +casic.risk.host 风险点地址, 默认http://101.201.36.107:12388 生产需更改 + +3. 增加字典值 + hazardLevelName 风险危险等级(706映射) + 1 低风险 + 1 一般风险 + 2 较大风险 + 3 重大风险 + 以上字典值以706风险等级名称对应本系统风险点1 2 3 等级,如果706风险等级名称变更 修改对应字典值名称即可 + +4. 盒子代理服务模块添加 + 增加配置项 + casic.video.box.proxy 192.168.83.37:30064 此处需变更为部署代理nginx的ip及端口,具体配置参见国标级联及代理服务配置说明 + + + + + + diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" new file mode 100644 index 0000000..30cdcbd --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" new file mode 100644 index 0000000..6a0069c --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" new file mode 100644 index 0000000..f775124 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" new file mode 100644 index 0000000..9f65ff1 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" new file mode 100644 index 0000000..613ec69 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" new file mode 100644 index 0000000..1614b04 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" new file mode 100644 index 0000000..3f5083a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" new file mode 100644 index 0000000..134a604 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" new file mode 100644 index 0000000..7edeaa0 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" new file mode 100644 index 0000000..ccd0993 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" new file mode 100644 index 0000000..0cbf80d --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" new file mode 100644 index 0000000..613ec69 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" new file mode 100644 index 0000000..3f5083a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" new file mode 100644 index 0000000..7edeaa0 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image012.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image012.jpg" new file mode 100644 index 0000000..0cbf80d --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image012.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/themedata.thmx" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/themedata.thmx" new file mode 100644 index 0000000..67aae0a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/themedata.thmx" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/colorschememapping.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/colorschememapping.xml" new file mode 100644 index 0000000..6a0069c --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/colorschememapping.xml" @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image001.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image001.png" new file mode 100644 index 0000000..1614b04 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image001.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.gif" new file mode 100644 index 0000000..92bd844 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.png" new file mode 100644 index 0000000..9f65ff1 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.jpg" new file mode 100644 index 0000000..72b5d13 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.png" new file mode 100644 index 0000000..a5af4eb --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.gif" new file mode 100644 index 0000000..b4e65ac --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.jpg" new file mode 100644 index 0000000..b7fe03f --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image005.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image005.png" new file mode 100644 index 0000000..ccd0993 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image005.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image006.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image006.jpg" new file mode 100644 index 0000000..c8ca1b6 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image006.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image007.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image007.gif" new file mode 100644 index 0000000..92bd844 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image007.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image007.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image007.jpg" new file mode 100644 index 0000000..72b5d13 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image007.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image008.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image008.png" new file mode 100644 index 0000000..134a604 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image008.png" Binary files differ diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java new file mode 100644 index 0000000..77c14a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.device.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dictmap.DeviceGroupQueryDict; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.vo.BusDeviceGroupVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; + +/** + * 设备分组管理信息Controller + * + * @author lwh + * @date 2025-06-11 + */ +@Api(tags = "设备分组管理信息") +@RestController +@RequestMapping("/device/group") +public class BusDeviceGroupController extends BaseController { + + private final IBusDeviceGroupService busDeviceGroupService; + private final AbstractPermissionContext abstractPermissionContext; + + public BusDeviceGroupController(IBusDeviceGroupService busDeviceGroupService, AbstractPermissionContext abstractPermissionContext) { + this.busDeviceGroupService = busDeviceGroupService; + this.abstractPermissionContext = abstractPermissionContext; + } + + @ApiOperation(value = "列表查询") + @GetMapping(value = "/list") + public ResponseDataDTO> list(BusDeviceGroupVO busDeviceGroupVO) { + QueryWrapper query = busDeviceGroupVO.genQuery(); + return ResponseDataDTO.success(busDeviceGroupService.list(query)); + } + + @ApiOperation(value = "分组树结构查询") + @BussinessLog(value = "分组树结构查询") + @GetMapping(value = "/tree") + public ResponseDataDTO> groupTree() { + List groupDTOList = busDeviceGroupService.groupTree(); + return ResponseDataDTO.success(groupDTOList); + } + + @BussinessLog(value = "设备分组分页查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "分页查询") + @GetMapping(value = "/listPage") + public ResponseDataDTO> listPage(BusDeviceGroupVO busDeviceGroupVO) { + Page page = PageFactory.defaultPage(); + QueryWrapper query = busDeviceGroupVO.genQuery(); + List list = busDeviceGroupService.selectBusDeviceGroupPage(page, query); + page.setRecords(list); + return ResponseDataDTO.success(super.packForBT(page)); + } + + @BussinessLog(value = "设备分组新增", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "新增接口") + @PostMapping(value = "/add") + public ResponseDataDTO add(@RequestBody BusDeviceGroup busDeviceGroup) { + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + busDeviceGroup.setCreateId(user.getId()); + busDeviceGroup.setCreateTime(new Date()); + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.save(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组修改", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @PostMapping(value = "/update") + public ResponseDataDTO update(@RequestBody BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.updateById(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组删除", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "删除接口") + @GetMapping(value = "/delete") + public ResponseDataDTO delete(String id) { + busDeviceGroupService.removeById(id); + return ResponseDataDTO.success(); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { + busDeviceGroupService.removeByIds(ids.getIds()); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组详情查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "详情查询") + @GetMapping(value = "/detail") + public ResponseDataDTO detail(String id) { + return ResponseDataDTO.success(busDeviceGroupService.getById(id)); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java new file mode 100644 index 0000000..9d3726f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.device.dao; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import java.util.List; +/** + *

+ * 设备分组管理信息 Mapper 接口 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface BusDeviceGroupMapper extends BaseMapper { +/** +* 设备分组管理信息 分页检索 +*/ +List selectBusDeviceGroupPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml new file mode 100644 index 0000000..a6dd84f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + id + , + create_time as createTime , + update_time as updateTime , + group_name as groupName , + create_id as createId , + dept_id as deptId + + + a + . + id + , + a.create_time + as createTime , + a.update_time + as updateTime , + a.group_name + as groupName , + a.create_id + as createId , + a.dept_id + as deptId + + + + + + and group_name like concat('%',#{request.groupName},'%') + + + and dept_id = #{request.deptId} + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java new file mode 100644 index 0000000..a821e92 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dictmap; + +import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap; + +public class DeviceGroupQueryDict extends AbstractDictMap { + + @Override + public void init() { + put("id", "主键"); + put("deptId", "所属组织"); + put("groupName", "分组名称"); + + put("deptName", "所属单位"); + } + + @Override + protected void initBeWrapped() { + + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java new file mode 100644 index 0000000..d8d1712 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.device.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + + +/** + * 设备分组管理信息对象 bus_device_group + * + * @author lwh + * @date 2025-06-11 + */ +@Data +@TableName("bus_device_group") +public class BusDeviceGroup extends Model { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键", dataType = "Long") + @TableField("id") + private Long id; + + @ApiModelProperty(value = "创建时间", dataType = "Date") + @TableField("create_time") + private Date createTime; + + @ApiModelProperty(value = "修改时间", dataType = "Date") + @TableField("update_time") + private Date updateTime; + + @ApiModelProperty(value = "分组名称", dataType = "String") + @TableField("group_name") + private String groupName; + + @ApiModelProperty(value = "创建人", dataType = "Long") + @TableField("create_id") + private Long createId; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; + @TableField(exist = false) + private String deptName; + + @Override + public String toString() { + return "BusDeviceGroup{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "groupName=" + groupName + + "createId=" + createId + + "deptId=" + deptId + + "}"; + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java new file mode 100644 index 0000000..d2cee5c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; + +import java.util.List; + + +/** + *

+ * 设备分组管理信息 服务类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface IBusDeviceGroupService extends IService { + /** + * 设备分组管理信息 分页检索 + */ + List selectBusDeviceGroupPage(Page page, QueryWrapper query); + + /** + * 树结构查询 + * + * @return + */ + List groupTree(); + + DeptDTO convertDeptDTO(BusDeviceGroup group); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java new file mode 100644 index 0000000..a6f08b7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java @@ -0,0 +1,139 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractAuthService; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.modular.data.constants.DataConstants; +import com.casic.missiles.modular.device.dao.BusDeviceGroupMapper; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; +import com.casic.missiles.modular.system.model.Dept; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.data.constants.DataConstants.NODE_TYPE_DEPT; + + +/** + *

+ * 设备分组管理信息 服务实现类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +@Service +public class BusDeviceGroupServiceImpl extends ServiceImpl implements IBusDeviceGroupService { + @Resource + private AbstractDeptService deptService; + + @Override + public List selectBusDeviceGroupPage(Page page, QueryWrapper query) { + List list = this.baseMapper.selectBusDeviceGroupPage(page, query); + list.forEach(this::wrapperInfo); + return list; + } + + @Override + public List groupTree() { + List deptList = deviceDept(); + + List deptDTOS = new ArrayList<>(); + //树节点根 + List rootIds = new ArrayList<>(); + Set normalIds = new HashSet<>(); + + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setId(dept.getId()); + deptDTO.setPid(dept.getPid()); + deptDTO.setFullName(dept.getFullName()); + deptDTO.setName(dept.getSimpleName()); + deptDTO.setType(NODE_TYPE_DEPT); + + normalIds.add(dept.getId()); + deptDTOS.add(deptDTO); + + + //查询该组织下分组信息 + LambdaQueryWrapper deviceQuery = new LambdaQueryWrapper<>(); + deviceQuery.eq(BusDeviceGroup::getDeptId, deptDTO.getId()); + + deviceQuery.orderByAsc(BusDeviceGroup::getGroupName); + List deviceInfos = this.list(deviceQuery); + List deptDTOList = new ArrayList<>(); + for (BusDeviceGroup group : deviceInfos) { + DeptDTO deptDto = this.convertDeptDTO(group); + deptDTOList.add(deptDto); + } + deptDTO.setChildrenNodes(deptDTOList); + } + + for (DeptDTO deptDTO : deptDTOS) { + if (!normalIds.contains(deptDTO.getPid())) { + rootIds.add(deptDTO.getPid()); + } + } + + //过滤根节点 + DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); + List newTree = new ArrayList<>(); + rootIds = rootIds.stream().distinct().collect(Collectors.toList()); + for (Long rootId : rootIds) { + abstractTreeBuildFactory.setRootId(rootId + ""); + newTree.addAll(abstractTreeBuildFactory.doTreeBuild(deptDTOS)); + } + return newTree; + } + + public DeptDTO convertDeptDTO(BusDeviceGroup group) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setType(DataConstants.NODE_TYPE_GROUP); + deptDTO.setId(group.getId()); + deptDTO.setPid(group.getDeptId()); + deptDTO.setName(group.getGroupName()); + deptDTO.setGroup(group); + return deptDTO; + } + + @Resource + private AbstractAuthService authService; + + private List deviceDept() { + //查询可见组织 + DataScope scope = authService.getLoginUserDataScope(); + AuthUser user = authService.getLoginUser(); + + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); + deptQuery.inSql(Dept::getId, "select dept_id from bus_device_info "); + if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums().getCode())) { + deptQuery.in(Dept::getId, scope.getDeptIds()); + } + deptQuery.orderByAsc(Dept::getNum); + + List deptList = deptService.list(deptQuery); + return deptList; + } + + @Override + public List list() { + List list = super.list(); + list.forEach(this::wrapperInfo); + return list; + } + + private void wrapperInfo(BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setDeptName(deptService.getDeptName(busDeviceGroup.getDeptId())); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java new file mode 100644 index 0000000..413d7ac --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.device.vo; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 设备分组管理信息对象VO + * + * @author lwh + * @date 2025-06-11 + */ +@Data +public class BusDeviceGroupVO { + private static final long serialVersionUID = 1L; + + + @ApiModelProperty(value = "分组名称", dataType = "String") + private String groupName; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + private Long deptId; + + public QueryWrapper genQuery() { + QueryWrapper query = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(groupName)) { + query.like("group_name", groupName); + } + if (deptId != null) { + query.eq("dept_id", deptId); + } + return query; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java new file mode 100644 index 0000000..477435e --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java @@ -0,0 +1,163 @@ +package com.casic.missiles.modular.device.dto.risk; + +import cn.hutool.core.convert.Convert; +import com.casic.missiles.modular.device.model.RiskPointInfo; +import lombok.Data; + +@Data +public class SyncRiskDTO { + /** + * 主键 + */ + private String id; + private String name; + /** + * 重大风险 + * 风险等级 + */ + private String hazardLevel; + /** + * 危险因素 + */ + private String riskFactors; + /** + * 所属单位 + */ + private String affiliatedUnit; + /** + * 所属部门 + */ + private String department; + + /** + * 定员 + */ + private String staffing; + + /** + * 定量 + */ + private String ration; + + /** + * 地理位置 + */ + private String geographicalPosition; + + /** + * 责任人 + */ + private String personLiable; + + /** + * 现场负责人 + */ + private String siteLeader; + + /** + * 主要设备、设施设计制造单位 + */ + private String zysbZzdw; + + /** + * 所在单位 + */ + private String szdw; + + /** + * 作业人数 + */ + private String numberOperators; + + /** + * 主要性能参数 + */ + private String mainPerformanceParameters; + + /** + * 工作环境参数 + */ + private String workingEnvironmentParameters; + + /** + * 安装单位 + */ + private String installationUnit; + + /** + * 投产日期 + */ + private String productionDate; + + /** + * 设备总数 + */ + private String totalEquipment; + + /** + * 备注 + */ + private String note; + + /** + * 创建用户 + */ + private String createUser; + private String createTime; + private String updateUser; + private String updateTime; + /** + * 是否删除0:否;1:是(接口已过滤掉1的数据) + */ + private Integer isDel; + + /** + * 行政区域 + */ + private String xzqy; + /** + * 街道 + */ + private String jdxx; + + /** + * 楼房 + */ + private String loufang; + + /** + * 楼层 + */ + private String louceng; + + /** + * 房间 + */ + private String roomName; + /** + * 所属单位编码 + */ + private String affiliatedUnitsCode; + + /** + * 危险性质 + */ + private String hazardousNature; + + public RiskPointInfo convertToRisk(RiskPointInfo pointInfo) { + //风险点缺少密级 + pointInfo.setSecretLevel("1"); + // hazardLevel 是否有字典值? + + if (department != null) { + pointInfo.setDeptId(Convert.toLong(department)); + } + pointInfo.setNature(hazardousNature); + pointInfo.setRiskName(name); + pointInfo.setAddress(geographicalPosition); + pointInfo.setTargetId(id); + //默认类型为1 + pointInfo.setRiskType(1); + return pointInfo; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java new file mode 100644 index 0000000..08e89a0 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.device.handler; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class BoxDefaultHttpHeaderHandler extends DefaultHttpHeaderHandler { + /** + * 代理服务IP + */ + private String xTargetHost; + + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Access-Token", token); + } + if (StrUtil.isNotEmpty(xTargetHost)){ + base.addHeader("X-TARGET-HOST", xTargetHost); + } + } + + public String getXTargetHost() { + return xTargetHost; + } + + public void setXTargetHost(String XTargetHost) { + this.xTargetHost = XTargetHost; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java new file mode 100644 index 0000000..903e567 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.http; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class RiskHttpHandler extends DefaultHttpHeaderHandler { + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Authorization", token); + } + + } +} + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java new file mode 100644 index 0000000..9f75f42 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java @@ -0,0 +1,35 @@ +package com.casic.missiles.modular.task; + +import com.casic.missiles.modular.device.service.IRiskPointInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +@Slf4j +@Component +public class RiskTask { + + @Value("${casic.risk.open:false}") + private Boolean open; + + @Resource + private IRiskPointInfoService riskPointInfoService; + + /** + * 设备信息同步0 + * 每30分钟采集一次 + */ + @Scheduled(cron = "${casic.risk.corn:0 */1 * * * *}") + public void device() { + //风险点数据同步 + if (open) { + log.info("risk sync start...."); + riskPointInfoService.loadRiskInfo(); + log.info("risk sync end...."); + } + } + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java new file mode 100644 index 0000000..e4ca4f1 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.util; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.modular.http.RiskHttpHandler; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import com.casic.missiles.modular.system.utils.HttpUtils; + +import java.util.HashMap; +import java.util.Map; + +public class RiskHttpUtil { + public static final String loginUrl = "/rest/platform/systemLogin"; + public static final String pointDataUrl = "/rest/platform/dangerPointData"; + + public static String login(String baseUrl, String secret) { + Map param = new HashMap<>(); + param.put("secret", secret); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + defaultHeaderHandler.setJson(true); + String res = HttpUtils.sendPost(baseUrl + loginUrl, param, "", defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + public static String pointData(String baseUrl, String token) { + Map param = new HashMap<>(); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + + String res = HttpUtils.sendGet(baseUrl + pointDataUrl, param, token, defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + /** + * 登录数据加密 + * @param appId 加密id + * @param publicKey 公钥 + * @return + * @throws Exception + */ + public static String encrypt(String appId,String publicKey) throws Exception { + long ts = System.currentTimeMillis(); + return RSAUtils.encrypt(appId+"_"+ts,publicKey); + } + + +} diff --git a/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java new file mode 100644 index 0000000..9ba1e2a --- /dev/null +++ b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java @@ -0,0 +1,62 @@ +package com.casic.missiles.test; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.TypeReference; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.risk.SyncRiskDTO; +import com.casic.missiles.modular.device.util.AesUtil; +import com.casic.missiles.modular.util.RiskHttpUtil; +import com.casic.missiles.modular.util.WvpUtil; +import com.casic.missiles.modular.wvp.dto.MvpResponseDTO; + +import java.io.FileInputStream; +import java.security.MessageDigest; +import java.util.Date; +import java.util.HashMap; +import java.util.List; + +public class RiskTest { + public static void main(String[] args) throws Exception { +// File file = new File("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// String task = ZipFileUtil.getZipHandleTask("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(task); +// String md5 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(md5); +// String md52 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241122.zip"); +// System.out.println(md52); + + testDeviceLogin(); + System.out.println( DateUtil.offsetMinute(new Date(),-5)); + } + public static void testDeviceLogin() throws Exception { + Long time = System.currentTimeMillis(); + String str = "FXDDT_" + time; + String pubKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCynMBxzoNBemZKuxjlZzp04Lx/b0j1xRUznBKjlQSATwc+1DaxBpKdT4WfqAuFlSQLA7qLdntXw2cvUEvRxfdjJp2KfZLkEYRmYx3LT51WdCmouQREtMrR6j3mri8jV8TjktGCmBFMKX7eGeQM8O249yVjby6502bzZXehQ707JQIDAQAB"; + String sec = RSAUtils.encrypt(str, pubKey); + System.out.println(sec); + String priKey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALKcwHHOg0F6Zkq7GOVnOnTgvH9vSPXFFTOcEqOVBIBPBz7UNrEGkp1PhZ+oC4WVJAsDuot2e1fDZy9QS9HF92MmnYp9kuQRhGZjHctPnVZ0Kai5BES0ytHqPeauLyNXxOOS0YKYEUwpft4Z5Azw7bj3JWNvLrnTZvNld6FDvTslAgMBAAECgYAqN/kZLYpC+O6i7XSmDO95XwHPUXu6dDpdt5+EQR4OQh/hTwIaeAZB3uEj6vHGQomBfQEkI/5lsU97lIxHanbd+Hro7JyIhsGD5LR5XnZHVKzFiZW62OIU6FI9dlQNN8miiblnmyDwiMA3okaHl0O7qQjZ+IvY2csgmJc7AXpPpQJBAOhrhcfWFcgffj2O6HYNlBLFfbboc/ZzrEADDXKnxRSHlo5o8W+6gylG/L2NGtbag5S68B9VYzdkSQ1++5C+Ws8CQQDEu7h311PLEiKgqzGHpjzadQETmt/jMadaKQmT0TZwNVi6X8lR17U5hF8dAqZzUzr9kUC0HRIZhg4Uv1v3W3fLAkB4YPhxgJjXhjhEefg87Nt8vX1Xdx5Yz6CvpuUYNX0GHRQFvqUOUXQNtQ7CvorgLV1pc0lbcUZqMi8EJnj1hyJRAkEAjHXWm8GiMt+M15fCsi3vTq2xChVOekBuUsHv85iwvGZqJg7ThtpyqlEnM2g7/STUfkvhnXcQACclEI0blTy6BwJAPmFyhU+d0ejVpbc53TdrL2HqYYUHi/tTy/dtUa7lbypzdwwJ2M1Tv5PE8sQxr9tgMbebfxVb/RFKdiCCtzC4ng=="; + String s = RSAUtils.decrypt(sec,priKey); + System.out.println(s); + + + String appId = "5d7d4d81a64f4b8f"; + String publicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB"; + String secret = RiskHttpUtil.encrypt(appId,publicKey); + System.out.println(secret); + String res = RiskHttpUtil.login("http://101.201.36.107:12388",secret); + System.out.println(res); + JSONObject jsonObject = JSON.parseObject(res); + String token = jsonObject.getString("data"); + String resPoint = RiskHttpUtil.pointData("http://101.201.36.107:12388",token); + System.out.println(resPoint); + + + ResponseDataDTO> riskPointRes = JSON.parseObject(resPoint, new TypeReference>>() { + }); + + } + +} diff --git a/casic-web/src/main/resources/doc/20250609.md b/casic-web/src/main/resources/doc/20250609.md new file mode 100644 index 0000000..0cb3464 --- /dev/null +++ b/casic-web/src/main/resources/doc/20250609.md @@ -0,0 +1,30 @@ +## 一、数据库更新 + +1. 设备分组数据库增加 + +``` +ALTER TABLE bus_device_info ADD COLUMN GROUP_ID bigint; + +create table bus_device_group +( + id bigint not null comment '主键', + create_time datetime comment '创建时间', + update_time datetime comment '修改时间', + group_name varchar(255) comment '分组名称', + create_id bigint comment '创建人', + dept_id bigint comment '所属组织' +); + +alter table bus_device_group comment '设备分组管理信息'; + +``` + +casic.tenant.excludes 配置项中增加 bus_device_group + + +casic.no-login-urls 中增加如下配置 +,/sync/risk/dept,/sync/risk/user/list,/sync/risk/device/list + + + + diff --git a/casic-web/src/main/resources/doc/20250624.md b/casic-web/src/main/resources/doc/20250624.md new file mode 100644 index 0000000..7af561d --- /dev/null +++ b/casic-web/src/main/resources/doc/20250624.md @@ -0,0 +1,34 @@ +## 一、数据库更新 + +1. 风险点表添加同步ID + +``` +ALTER TABLE risk_point_info ADD COLUMN TARGET_ID VARCHAR(255); + +``` + +2. 风险点相关配置项 + +casic.risk.open 默认false 不开启 开启需配置true +casic.risk.corn 定时时间 默认0 */5 * * * * 5分钟 +casic.risk.appId 默认 5d7d4d81a64f4b8f 如变更需更改 +casic.risk.publicKey 公钥 默认MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB +casic.risk.host 风险点地址, 默认http://101.201.36.107:12388 生产需更改 + +3. 增加字典值 + hazardLevelName 风险危险等级(706映射) + 1 低风险 + 1 一般风险 + 2 较大风险 + 3 重大风险 + 以上字典值以706风险等级名称对应本系统风险点1 2 3 等级,如果706风险等级名称变更 修改对应字典值名称即可 + +4. 盒子代理服务模块添加 + 增加配置项 + casic.video.box.proxy 192.168.83.37:30064 此处需变更为部署代理nginx的ip及端口,具体配置参见国标级联及代理服务配置说明 + + + + + + diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" new file mode 100644 index 0000000..30cdcbd --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" new file mode 100644 index 0000000..6a0069c --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" new file mode 100644 index 0000000..f775124 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" new file mode 100644 index 0000000..9f65ff1 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" new file mode 100644 index 0000000..613ec69 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" new file mode 100644 index 0000000..1614b04 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" new file mode 100644 index 0000000..3f5083a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" new file mode 100644 index 0000000..134a604 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" new file mode 100644 index 0000000..7edeaa0 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" new file mode 100644 index 0000000..ccd0993 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" new file mode 100644 index 0000000..0cbf80d --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" new file mode 100644 index 0000000..613ec69 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" new file mode 100644 index 0000000..3f5083a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" new file mode 100644 index 0000000..7edeaa0 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image012.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image012.jpg" new file mode 100644 index 0000000..0cbf80d --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image012.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/themedata.thmx" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/themedata.thmx" new file mode 100644 index 0000000..67aae0a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/themedata.thmx" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/colorschememapping.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/colorschememapping.xml" new file mode 100644 index 0000000..6a0069c --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/colorschememapping.xml" @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image001.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image001.png" new file mode 100644 index 0000000..1614b04 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image001.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.gif" new file mode 100644 index 0000000..92bd844 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.png" new file mode 100644 index 0000000..9f65ff1 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.jpg" new file mode 100644 index 0000000..72b5d13 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.png" new file mode 100644 index 0000000..a5af4eb --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.gif" new file mode 100644 index 0000000..b4e65ac --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.jpg" new file mode 100644 index 0000000..b7fe03f --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image005.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image005.png" new file mode 100644 index 0000000..ccd0993 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image005.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image006.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image006.jpg" new file mode 100644 index 0000000..c8ca1b6 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image006.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image007.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image007.gif" new file mode 100644 index 0000000..92bd844 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image007.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image007.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image007.jpg" new file mode 100644 index 0000000..72b5d13 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image007.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image008.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image008.png" new file mode 100644 index 0000000..134a604 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image008.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image009.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image009.gif" new file mode 100644 index 0000000..b4e65ac --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image009.gif" Binary files differ diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java new file mode 100644 index 0000000..77c14a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.device.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dictmap.DeviceGroupQueryDict; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.vo.BusDeviceGroupVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; + +/** + * 设备分组管理信息Controller + * + * @author lwh + * @date 2025-06-11 + */ +@Api(tags = "设备分组管理信息") +@RestController +@RequestMapping("/device/group") +public class BusDeviceGroupController extends BaseController { + + private final IBusDeviceGroupService busDeviceGroupService; + private final AbstractPermissionContext abstractPermissionContext; + + public BusDeviceGroupController(IBusDeviceGroupService busDeviceGroupService, AbstractPermissionContext abstractPermissionContext) { + this.busDeviceGroupService = busDeviceGroupService; + this.abstractPermissionContext = abstractPermissionContext; + } + + @ApiOperation(value = "列表查询") + @GetMapping(value = "/list") + public ResponseDataDTO> list(BusDeviceGroupVO busDeviceGroupVO) { + QueryWrapper query = busDeviceGroupVO.genQuery(); + return ResponseDataDTO.success(busDeviceGroupService.list(query)); + } + + @ApiOperation(value = "分组树结构查询") + @BussinessLog(value = "分组树结构查询") + @GetMapping(value = "/tree") + public ResponseDataDTO> groupTree() { + List groupDTOList = busDeviceGroupService.groupTree(); + return ResponseDataDTO.success(groupDTOList); + } + + @BussinessLog(value = "设备分组分页查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "分页查询") + @GetMapping(value = "/listPage") + public ResponseDataDTO> listPage(BusDeviceGroupVO busDeviceGroupVO) { + Page page = PageFactory.defaultPage(); + QueryWrapper query = busDeviceGroupVO.genQuery(); + List list = busDeviceGroupService.selectBusDeviceGroupPage(page, query); + page.setRecords(list); + return ResponseDataDTO.success(super.packForBT(page)); + } + + @BussinessLog(value = "设备分组新增", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "新增接口") + @PostMapping(value = "/add") + public ResponseDataDTO add(@RequestBody BusDeviceGroup busDeviceGroup) { + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + busDeviceGroup.setCreateId(user.getId()); + busDeviceGroup.setCreateTime(new Date()); + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.save(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组修改", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @PostMapping(value = "/update") + public ResponseDataDTO update(@RequestBody BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.updateById(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组删除", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "删除接口") + @GetMapping(value = "/delete") + public ResponseDataDTO delete(String id) { + busDeviceGroupService.removeById(id); + return ResponseDataDTO.success(); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { + busDeviceGroupService.removeByIds(ids.getIds()); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组详情查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "详情查询") + @GetMapping(value = "/detail") + public ResponseDataDTO detail(String id) { + return ResponseDataDTO.success(busDeviceGroupService.getById(id)); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java new file mode 100644 index 0000000..9d3726f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.device.dao; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import java.util.List; +/** + *

+ * 设备分组管理信息 Mapper 接口 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface BusDeviceGroupMapper extends BaseMapper { +/** +* 设备分组管理信息 分页检索 +*/ +List selectBusDeviceGroupPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml new file mode 100644 index 0000000..a6dd84f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + id + , + create_time as createTime , + update_time as updateTime , + group_name as groupName , + create_id as createId , + dept_id as deptId + + + a + . + id + , + a.create_time + as createTime , + a.update_time + as updateTime , + a.group_name + as groupName , + a.create_id + as createId , + a.dept_id + as deptId + + + + + + and group_name like concat('%',#{request.groupName},'%') + + + and dept_id = #{request.deptId} + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java new file mode 100644 index 0000000..a821e92 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dictmap; + +import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap; + +public class DeviceGroupQueryDict extends AbstractDictMap { + + @Override + public void init() { + put("id", "主键"); + put("deptId", "所属组织"); + put("groupName", "分组名称"); + + put("deptName", "所属单位"); + } + + @Override + protected void initBeWrapped() { + + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java new file mode 100644 index 0000000..d8d1712 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.device.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + + +/** + * 设备分组管理信息对象 bus_device_group + * + * @author lwh + * @date 2025-06-11 + */ +@Data +@TableName("bus_device_group") +public class BusDeviceGroup extends Model { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键", dataType = "Long") + @TableField("id") + private Long id; + + @ApiModelProperty(value = "创建时间", dataType = "Date") + @TableField("create_time") + private Date createTime; + + @ApiModelProperty(value = "修改时间", dataType = "Date") + @TableField("update_time") + private Date updateTime; + + @ApiModelProperty(value = "分组名称", dataType = "String") + @TableField("group_name") + private String groupName; + + @ApiModelProperty(value = "创建人", dataType = "Long") + @TableField("create_id") + private Long createId; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; + @TableField(exist = false) + private String deptName; + + @Override + public String toString() { + return "BusDeviceGroup{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "groupName=" + groupName + + "createId=" + createId + + "deptId=" + deptId + + "}"; + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java new file mode 100644 index 0000000..d2cee5c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; + +import java.util.List; + + +/** + *

+ * 设备分组管理信息 服务类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface IBusDeviceGroupService extends IService { + /** + * 设备分组管理信息 分页检索 + */ + List selectBusDeviceGroupPage(Page page, QueryWrapper query); + + /** + * 树结构查询 + * + * @return + */ + List groupTree(); + + DeptDTO convertDeptDTO(BusDeviceGroup group); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java new file mode 100644 index 0000000..a6f08b7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java @@ -0,0 +1,139 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractAuthService; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.modular.data.constants.DataConstants; +import com.casic.missiles.modular.device.dao.BusDeviceGroupMapper; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; +import com.casic.missiles.modular.system.model.Dept; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.data.constants.DataConstants.NODE_TYPE_DEPT; + + +/** + *

+ * 设备分组管理信息 服务实现类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +@Service +public class BusDeviceGroupServiceImpl extends ServiceImpl implements IBusDeviceGroupService { + @Resource + private AbstractDeptService deptService; + + @Override + public List selectBusDeviceGroupPage(Page page, QueryWrapper query) { + List list = this.baseMapper.selectBusDeviceGroupPage(page, query); + list.forEach(this::wrapperInfo); + return list; + } + + @Override + public List groupTree() { + List deptList = deviceDept(); + + List deptDTOS = new ArrayList<>(); + //树节点根 + List rootIds = new ArrayList<>(); + Set normalIds = new HashSet<>(); + + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setId(dept.getId()); + deptDTO.setPid(dept.getPid()); + deptDTO.setFullName(dept.getFullName()); + deptDTO.setName(dept.getSimpleName()); + deptDTO.setType(NODE_TYPE_DEPT); + + normalIds.add(dept.getId()); + deptDTOS.add(deptDTO); + + + //查询该组织下分组信息 + LambdaQueryWrapper deviceQuery = new LambdaQueryWrapper<>(); + deviceQuery.eq(BusDeviceGroup::getDeptId, deptDTO.getId()); + + deviceQuery.orderByAsc(BusDeviceGroup::getGroupName); + List deviceInfos = this.list(deviceQuery); + List deptDTOList = new ArrayList<>(); + for (BusDeviceGroup group : deviceInfos) { + DeptDTO deptDto = this.convertDeptDTO(group); + deptDTOList.add(deptDto); + } + deptDTO.setChildrenNodes(deptDTOList); + } + + for (DeptDTO deptDTO : deptDTOS) { + if (!normalIds.contains(deptDTO.getPid())) { + rootIds.add(deptDTO.getPid()); + } + } + + //过滤根节点 + DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); + List newTree = new ArrayList<>(); + rootIds = rootIds.stream().distinct().collect(Collectors.toList()); + for (Long rootId : rootIds) { + abstractTreeBuildFactory.setRootId(rootId + ""); + newTree.addAll(abstractTreeBuildFactory.doTreeBuild(deptDTOS)); + } + return newTree; + } + + public DeptDTO convertDeptDTO(BusDeviceGroup group) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setType(DataConstants.NODE_TYPE_GROUP); + deptDTO.setId(group.getId()); + deptDTO.setPid(group.getDeptId()); + deptDTO.setName(group.getGroupName()); + deptDTO.setGroup(group); + return deptDTO; + } + + @Resource + private AbstractAuthService authService; + + private List deviceDept() { + //查询可见组织 + DataScope scope = authService.getLoginUserDataScope(); + AuthUser user = authService.getLoginUser(); + + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); + deptQuery.inSql(Dept::getId, "select dept_id from bus_device_info "); + if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums().getCode())) { + deptQuery.in(Dept::getId, scope.getDeptIds()); + } + deptQuery.orderByAsc(Dept::getNum); + + List deptList = deptService.list(deptQuery); + return deptList; + } + + @Override + public List list() { + List list = super.list(); + list.forEach(this::wrapperInfo); + return list; + } + + private void wrapperInfo(BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setDeptName(deptService.getDeptName(busDeviceGroup.getDeptId())); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java new file mode 100644 index 0000000..413d7ac --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.device.vo; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 设备分组管理信息对象VO + * + * @author lwh + * @date 2025-06-11 + */ +@Data +public class BusDeviceGroupVO { + private static final long serialVersionUID = 1L; + + + @ApiModelProperty(value = "分组名称", dataType = "String") + private String groupName; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + private Long deptId; + + public QueryWrapper genQuery() { + QueryWrapper query = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(groupName)) { + query.like("group_name", groupName); + } + if (deptId != null) { + query.eq("dept_id", deptId); + } + return query; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java new file mode 100644 index 0000000..477435e --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java @@ -0,0 +1,163 @@ +package com.casic.missiles.modular.device.dto.risk; + +import cn.hutool.core.convert.Convert; +import com.casic.missiles.modular.device.model.RiskPointInfo; +import lombok.Data; + +@Data +public class SyncRiskDTO { + /** + * 主键 + */ + private String id; + private String name; + /** + * 重大风险 + * 风险等级 + */ + private String hazardLevel; + /** + * 危险因素 + */ + private String riskFactors; + /** + * 所属单位 + */ + private String affiliatedUnit; + /** + * 所属部门 + */ + private String department; + + /** + * 定员 + */ + private String staffing; + + /** + * 定量 + */ + private String ration; + + /** + * 地理位置 + */ + private String geographicalPosition; + + /** + * 责任人 + */ + private String personLiable; + + /** + * 现场负责人 + */ + private String siteLeader; + + /** + * 主要设备、设施设计制造单位 + */ + private String zysbZzdw; + + /** + * 所在单位 + */ + private String szdw; + + /** + * 作业人数 + */ + private String numberOperators; + + /** + * 主要性能参数 + */ + private String mainPerformanceParameters; + + /** + * 工作环境参数 + */ + private String workingEnvironmentParameters; + + /** + * 安装单位 + */ + private String installationUnit; + + /** + * 投产日期 + */ + private String productionDate; + + /** + * 设备总数 + */ + private String totalEquipment; + + /** + * 备注 + */ + private String note; + + /** + * 创建用户 + */ + private String createUser; + private String createTime; + private String updateUser; + private String updateTime; + /** + * 是否删除0:否;1:是(接口已过滤掉1的数据) + */ + private Integer isDel; + + /** + * 行政区域 + */ + private String xzqy; + /** + * 街道 + */ + private String jdxx; + + /** + * 楼房 + */ + private String loufang; + + /** + * 楼层 + */ + private String louceng; + + /** + * 房间 + */ + private String roomName; + /** + * 所属单位编码 + */ + private String affiliatedUnitsCode; + + /** + * 危险性质 + */ + private String hazardousNature; + + public RiskPointInfo convertToRisk(RiskPointInfo pointInfo) { + //风险点缺少密级 + pointInfo.setSecretLevel("1"); + // hazardLevel 是否有字典值? + + if (department != null) { + pointInfo.setDeptId(Convert.toLong(department)); + } + pointInfo.setNature(hazardousNature); + pointInfo.setRiskName(name); + pointInfo.setAddress(geographicalPosition); + pointInfo.setTargetId(id); + //默认类型为1 + pointInfo.setRiskType(1); + return pointInfo; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java new file mode 100644 index 0000000..08e89a0 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.device.handler; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class BoxDefaultHttpHeaderHandler extends DefaultHttpHeaderHandler { + /** + * 代理服务IP + */ + private String xTargetHost; + + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Access-Token", token); + } + if (StrUtil.isNotEmpty(xTargetHost)){ + base.addHeader("X-TARGET-HOST", xTargetHost); + } + } + + public String getXTargetHost() { + return xTargetHost; + } + + public void setXTargetHost(String XTargetHost) { + this.xTargetHost = XTargetHost; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java new file mode 100644 index 0000000..903e567 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.http; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class RiskHttpHandler extends DefaultHttpHeaderHandler { + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Authorization", token); + } + + } +} + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java new file mode 100644 index 0000000..9f75f42 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java @@ -0,0 +1,35 @@ +package com.casic.missiles.modular.task; + +import com.casic.missiles.modular.device.service.IRiskPointInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +@Slf4j +@Component +public class RiskTask { + + @Value("${casic.risk.open:false}") + private Boolean open; + + @Resource + private IRiskPointInfoService riskPointInfoService; + + /** + * 设备信息同步0 + * 每30分钟采集一次 + */ + @Scheduled(cron = "${casic.risk.corn:0 */1 * * * *}") + public void device() { + //风险点数据同步 + if (open) { + log.info("risk sync start...."); + riskPointInfoService.loadRiskInfo(); + log.info("risk sync end...."); + } + } + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java new file mode 100644 index 0000000..e4ca4f1 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.util; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.modular.http.RiskHttpHandler; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import com.casic.missiles.modular.system.utils.HttpUtils; + +import java.util.HashMap; +import java.util.Map; + +public class RiskHttpUtil { + public static final String loginUrl = "/rest/platform/systemLogin"; + public static final String pointDataUrl = "/rest/platform/dangerPointData"; + + public static String login(String baseUrl, String secret) { + Map param = new HashMap<>(); + param.put("secret", secret); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + defaultHeaderHandler.setJson(true); + String res = HttpUtils.sendPost(baseUrl + loginUrl, param, "", defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + public static String pointData(String baseUrl, String token) { + Map param = new HashMap<>(); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + + String res = HttpUtils.sendGet(baseUrl + pointDataUrl, param, token, defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + /** + * 登录数据加密 + * @param appId 加密id + * @param publicKey 公钥 + * @return + * @throws Exception + */ + public static String encrypt(String appId,String publicKey) throws Exception { + long ts = System.currentTimeMillis(); + return RSAUtils.encrypt(appId+"_"+ts,publicKey); + } + + +} diff --git a/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java new file mode 100644 index 0000000..9ba1e2a --- /dev/null +++ b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java @@ -0,0 +1,62 @@ +package com.casic.missiles.test; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.TypeReference; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.risk.SyncRiskDTO; +import com.casic.missiles.modular.device.util.AesUtil; +import com.casic.missiles.modular.util.RiskHttpUtil; +import com.casic.missiles.modular.util.WvpUtil; +import com.casic.missiles.modular.wvp.dto.MvpResponseDTO; + +import java.io.FileInputStream; +import java.security.MessageDigest; +import java.util.Date; +import java.util.HashMap; +import java.util.List; + +public class RiskTest { + public static void main(String[] args) throws Exception { +// File file = new File("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// String task = ZipFileUtil.getZipHandleTask("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(task); +// String md5 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(md5); +// String md52 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241122.zip"); +// System.out.println(md52); + + testDeviceLogin(); + System.out.println( DateUtil.offsetMinute(new Date(),-5)); + } + public static void testDeviceLogin() throws Exception { + Long time = System.currentTimeMillis(); + String str = "FXDDT_" + time; + String pubKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCynMBxzoNBemZKuxjlZzp04Lx/b0j1xRUznBKjlQSATwc+1DaxBpKdT4WfqAuFlSQLA7qLdntXw2cvUEvRxfdjJp2KfZLkEYRmYx3LT51WdCmouQREtMrR6j3mri8jV8TjktGCmBFMKX7eGeQM8O249yVjby6502bzZXehQ707JQIDAQAB"; + String sec = RSAUtils.encrypt(str, pubKey); + System.out.println(sec); + String priKey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALKcwHHOg0F6Zkq7GOVnOnTgvH9vSPXFFTOcEqOVBIBPBz7UNrEGkp1PhZ+oC4WVJAsDuot2e1fDZy9QS9HF92MmnYp9kuQRhGZjHctPnVZ0Kai5BES0ytHqPeauLyNXxOOS0YKYEUwpft4Z5Azw7bj3JWNvLrnTZvNld6FDvTslAgMBAAECgYAqN/kZLYpC+O6i7XSmDO95XwHPUXu6dDpdt5+EQR4OQh/hTwIaeAZB3uEj6vHGQomBfQEkI/5lsU97lIxHanbd+Hro7JyIhsGD5LR5XnZHVKzFiZW62OIU6FI9dlQNN8miiblnmyDwiMA3okaHl0O7qQjZ+IvY2csgmJc7AXpPpQJBAOhrhcfWFcgffj2O6HYNlBLFfbboc/ZzrEADDXKnxRSHlo5o8W+6gylG/L2NGtbag5S68B9VYzdkSQ1++5C+Ws8CQQDEu7h311PLEiKgqzGHpjzadQETmt/jMadaKQmT0TZwNVi6X8lR17U5hF8dAqZzUzr9kUC0HRIZhg4Uv1v3W3fLAkB4YPhxgJjXhjhEefg87Nt8vX1Xdx5Yz6CvpuUYNX0GHRQFvqUOUXQNtQ7CvorgLV1pc0lbcUZqMi8EJnj1hyJRAkEAjHXWm8GiMt+M15fCsi3vTq2xChVOekBuUsHv85iwvGZqJg7ThtpyqlEnM2g7/STUfkvhnXcQACclEI0blTy6BwJAPmFyhU+d0ejVpbc53TdrL2HqYYUHi/tTy/dtUa7lbypzdwwJ2M1Tv5PE8sQxr9tgMbebfxVb/RFKdiCCtzC4ng=="; + String s = RSAUtils.decrypt(sec,priKey); + System.out.println(s); + + + String appId = "5d7d4d81a64f4b8f"; + String publicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB"; + String secret = RiskHttpUtil.encrypt(appId,publicKey); + System.out.println(secret); + String res = RiskHttpUtil.login("http://101.201.36.107:12388",secret); + System.out.println(res); + JSONObject jsonObject = JSON.parseObject(res); + String token = jsonObject.getString("data"); + String resPoint = RiskHttpUtil.pointData("http://101.201.36.107:12388",token); + System.out.println(resPoint); + + + ResponseDataDTO> riskPointRes = JSON.parseObject(resPoint, new TypeReference>>() { + }); + + } + +} diff --git a/casic-web/src/main/resources/doc/20250609.md b/casic-web/src/main/resources/doc/20250609.md new file mode 100644 index 0000000..0cb3464 --- /dev/null +++ b/casic-web/src/main/resources/doc/20250609.md @@ -0,0 +1,30 @@ +## 一、数据库更新 + +1. 设备分组数据库增加 + +``` +ALTER TABLE bus_device_info ADD COLUMN GROUP_ID bigint; + +create table bus_device_group +( + id bigint not null comment '主键', + create_time datetime comment '创建时间', + update_time datetime comment '修改时间', + group_name varchar(255) comment '分组名称', + create_id bigint comment '创建人', + dept_id bigint comment '所属组织' +); + +alter table bus_device_group comment '设备分组管理信息'; + +``` + +casic.tenant.excludes 配置项中增加 bus_device_group + + +casic.no-login-urls 中增加如下配置 +,/sync/risk/dept,/sync/risk/user/list,/sync/risk/device/list + + + + diff --git a/casic-web/src/main/resources/doc/20250624.md b/casic-web/src/main/resources/doc/20250624.md new file mode 100644 index 0000000..7af561d --- /dev/null +++ b/casic-web/src/main/resources/doc/20250624.md @@ -0,0 +1,34 @@ +## 一、数据库更新 + +1. 风险点表添加同步ID + +``` +ALTER TABLE risk_point_info ADD COLUMN TARGET_ID VARCHAR(255); + +``` + +2. 风险点相关配置项 + +casic.risk.open 默认false 不开启 开启需配置true +casic.risk.corn 定时时间 默认0 */5 * * * * 5分钟 +casic.risk.appId 默认 5d7d4d81a64f4b8f 如变更需更改 +casic.risk.publicKey 公钥 默认MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB +casic.risk.host 风险点地址, 默认http://101.201.36.107:12388 生产需更改 + +3. 增加字典值 + hazardLevelName 风险危险等级(706映射) + 1 低风险 + 1 一般风险 + 2 较大风险 + 3 重大风险 + 以上字典值以706风险等级名称对应本系统风险点1 2 3 等级,如果706风险等级名称变更 修改对应字典值名称即可 + +4. 盒子代理服务模块添加 + 增加配置项 + casic.video.box.proxy 192.168.83.37:30064 此处需变更为部署代理nginx的ip及端口,具体配置参见国标级联及代理服务配置说明 + + + + + + diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" new file mode 100644 index 0000000..30cdcbd --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" new file mode 100644 index 0000000..6a0069c --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" new file mode 100644 index 0000000..f775124 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" new file mode 100644 index 0000000..9f65ff1 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" new file mode 100644 index 0000000..613ec69 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" new file mode 100644 index 0000000..1614b04 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" new file mode 100644 index 0000000..3f5083a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" new file mode 100644 index 0000000..134a604 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" new file mode 100644 index 0000000..7edeaa0 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" new file mode 100644 index 0000000..ccd0993 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" new file mode 100644 index 0000000..0cbf80d --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" new file mode 100644 index 0000000..613ec69 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" new file mode 100644 index 0000000..3f5083a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" new file mode 100644 index 0000000..7edeaa0 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image012.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image012.jpg" new file mode 100644 index 0000000..0cbf80d --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image012.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/themedata.thmx" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/themedata.thmx" new file mode 100644 index 0000000..67aae0a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/themedata.thmx" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/colorschememapping.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/colorschememapping.xml" new file mode 100644 index 0000000..6a0069c --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/colorschememapping.xml" @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image001.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image001.png" new file mode 100644 index 0000000..1614b04 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image001.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.gif" new file mode 100644 index 0000000..92bd844 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.png" new file mode 100644 index 0000000..9f65ff1 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.jpg" new file mode 100644 index 0000000..72b5d13 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.png" new file mode 100644 index 0000000..a5af4eb --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.gif" new file mode 100644 index 0000000..b4e65ac --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.jpg" new file mode 100644 index 0000000..b7fe03f --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image005.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image005.png" new file mode 100644 index 0000000..ccd0993 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image005.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image006.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image006.jpg" new file mode 100644 index 0000000..c8ca1b6 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image006.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image007.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image007.gif" new file mode 100644 index 0000000..92bd844 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image007.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image007.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image007.jpg" new file mode 100644 index 0000000..72b5d13 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image007.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image008.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image008.png" new file mode 100644 index 0000000..134a604 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image008.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image009.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image009.gif" new file mode 100644 index 0000000..b4e65ac --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image009.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image009.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image009.jpg" new file mode 100644 index 0000000..c8ca1b6 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image009.jpg" Binary files differ diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java new file mode 100644 index 0000000..77c14a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.device.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dictmap.DeviceGroupQueryDict; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.vo.BusDeviceGroupVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; + +/** + * 设备分组管理信息Controller + * + * @author lwh + * @date 2025-06-11 + */ +@Api(tags = "设备分组管理信息") +@RestController +@RequestMapping("/device/group") +public class BusDeviceGroupController extends BaseController { + + private final IBusDeviceGroupService busDeviceGroupService; + private final AbstractPermissionContext abstractPermissionContext; + + public BusDeviceGroupController(IBusDeviceGroupService busDeviceGroupService, AbstractPermissionContext abstractPermissionContext) { + this.busDeviceGroupService = busDeviceGroupService; + this.abstractPermissionContext = abstractPermissionContext; + } + + @ApiOperation(value = "列表查询") + @GetMapping(value = "/list") + public ResponseDataDTO> list(BusDeviceGroupVO busDeviceGroupVO) { + QueryWrapper query = busDeviceGroupVO.genQuery(); + return ResponseDataDTO.success(busDeviceGroupService.list(query)); + } + + @ApiOperation(value = "分组树结构查询") + @BussinessLog(value = "分组树结构查询") + @GetMapping(value = "/tree") + public ResponseDataDTO> groupTree() { + List groupDTOList = busDeviceGroupService.groupTree(); + return ResponseDataDTO.success(groupDTOList); + } + + @BussinessLog(value = "设备分组分页查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "分页查询") + @GetMapping(value = "/listPage") + public ResponseDataDTO> listPage(BusDeviceGroupVO busDeviceGroupVO) { + Page page = PageFactory.defaultPage(); + QueryWrapper query = busDeviceGroupVO.genQuery(); + List list = busDeviceGroupService.selectBusDeviceGroupPage(page, query); + page.setRecords(list); + return ResponseDataDTO.success(super.packForBT(page)); + } + + @BussinessLog(value = "设备分组新增", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "新增接口") + @PostMapping(value = "/add") + public ResponseDataDTO add(@RequestBody BusDeviceGroup busDeviceGroup) { + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + busDeviceGroup.setCreateId(user.getId()); + busDeviceGroup.setCreateTime(new Date()); + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.save(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组修改", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @PostMapping(value = "/update") + public ResponseDataDTO update(@RequestBody BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.updateById(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组删除", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "删除接口") + @GetMapping(value = "/delete") + public ResponseDataDTO delete(String id) { + busDeviceGroupService.removeById(id); + return ResponseDataDTO.success(); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { + busDeviceGroupService.removeByIds(ids.getIds()); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组详情查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "详情查询") + @GetMapping(value = "/detail") + public ResponseDataDTO detail(String id) { + return ResponseDataDTO.success(busDeviceGroupService.getById(id)); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java new file mode 100644 index 0000000..9d3726f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.device.dao; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import java.util.List; +/** + *

+ * 设备分组管理信息 Mapper 接口 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface BusDeviceGroupMapper extends BaseMapper { +/** +* 设备分组管理信息 分页检索 +*/ +List selectBusDeviceGroupPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml new file mode 100644 index 0000000..a6dd84f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + id + , + create_time as createTime , + update_time as updateTime , + group_name as groupName , + create_id as createId , + dept_id as deptId + + + a + . + id + , + a.create_time + as createTime , + a.update_time + as updateTime , + a.group_name + as groupName , + a.create_id + as createId , + a.dept_id + as deptId + + + + + + and group_name like concat('%',#{request.groupName},'%') + + + and dept_id = #{request.deptId} + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java new file mode 100644 index 0000000..a821e92 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dictmap; + +import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap; + +public class DeviceGroupQueryDict extends AbstractDictMap { + + @Override + public void init() { + put("id", "主键"); + put("deptId", "所属组织"); + put("groupName", "分组名称"); + + put("deptName", "所属单位"); + } + + @Override + protected void initBeWrapped() { + + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java new file mode 100644 index 0000000..d8d1712 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.device.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + + +/** + * 设备分组管理信息对象 bus_device_group + * + * @author lwh + * @date 2025-06-11 + */ +@Data +@TableName("bus_device_group") +public class BusDeviceGroup extends Model { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键", dataType = "Long") + @TableField("id") + private Long id; + + @ApiModelProperty(value = "创建时间", dataType = "Date") + @TableField("create_time") + private Date createTime; + + @ApiModelProperty(value = "修改时间", dataType = "Date") + @TableField("update_time") + private Date updateTime; + + @ApiModelProperty(value = "分组名称", dataType = "String") + @TableField("group_name") + private String groupName; + + @ApiModelProperty(value = "创建人", dataType = "Long") + @TableField("create_id") + private Long createId; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; + @TableField(exist = false) + private String deptName; + + @Override + public String toString() { + return "BusDeviceGroup{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "groupName=" + groupName + + "createId=" + createId + + "deptId=" + deptId + + "}"; + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java new file mode 100644 index 0000000..d2cee5c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; + +import java.util.List; + + +/** + *

+ * 设备分组管理信息 服务类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface IBusDeviceGroupService extends IService { + /** + * 设备分组管理信息 分页检索 + */ + List selectBusDeviceGroupPage(Page page, QueryWrapper query); + + /** + * 树结构查询 + * + * @return + */ + List groupTree(); + + DeptDTO convertDeptDTO(BusDeviceGroup group); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java new file mode 100644 index 0000000..a6f08b7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java @@ -0,0 +1,139 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractAuthService; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.modular.data.constants.DataConstants; +import com.casic.missiles.modular.device.dao.BusDeviceGroupMapper; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; +import com.casic.missiles.modular.system.model.Dept; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.data.constants.DataConstants.NODE_TYPE_DEPT; + + +/** + *

+ * 设备分组管理信息 服务实现类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +@Service +public class BusDeviceGroupServiceImpl extends ServiceImpl implements IBusDeviceGroupService { + @Resource + private AbstractDeptService deptService; + + @Override + public List selectBusDeviceGroupPage(Page page, QueryWrapper query) { + List list = this.baseMapper.selectBusDeviceGroupPage(page, query); + list.forEach(this::wrapperInfo); + return list; + } + + @Override + public List groupTree() { + List deptList = deviceDept(); + + List deptDTOS = new ArrayList<>(); + //树节点根 + List rootIds = new ArrayList<>(); + Set normalIds = new HashSet<>(); + + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setId(dept.getId()); + deptDTO.setPid(dept.getPid()); + deptDTO.setFullName(dept.getFullName()); + deptDTO.setName(dept.getSimpleName()); + deptDTO.setType(NODE_TYPE_DEPT); + + normalIds.add(dept.getId()); + deptDTOS.add(deptDTO); + + + //查询该组织下分组信息 + LambdaQueryWrapper deviceQuery = new LambdaQueryWrapper<>(); + deviceQuery.eq(BusDeviceGroup::getDeptId, deptDTO.getId()); + + deviceQuery.orderByAsc(BusDeviceGroup::getGroupName); + List deviceInfos = this.list(deviceQuery); + List deptDTOList = new ArrayList<>(); + for (BusDeviceGroup group : deviceInfos) { + DeptDTO deptDto = this.convertDeptDTO(group); + deptDTOList.add(deptDto); + } + deptDTO.setChildrenNodes(deptDTOList); + } + + for (DeptDTO deptDTO : deptDTOS) { + if (!normalIds.contains(deptDTO.getPid())) { + rootIds.add(deptDTO.getPid()); + } + } + + //过滤根节点 + DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); + List newTree = new ArrayList<>(); + rootIds = rootIds.stream().distinct().collect(Collectors.toList()); + for (Long rootId : rootIds) { + abstractTreeBuildFactory.setRootId(rootId + ""); + newTree.addAll(abstractTreeBuildFactory.doTreeBuild(deptDTOS)); + } + return newTree; + } + + public DeptDTO convertDeptDTO(BusDeviceGroup group) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setType(DataConstants.NODE_TYPE_GROUP); + deptDTO.setId(group.getId()); + deptDTO.setPid(group.getDeptId()); + deptDTO.setName(group.getGroupName()); + deptDTO.setGroup(group); + return deptDTO; + } + + @Resource + private AbstractAuthService authService; + + private List deviceDept() { + //查询可见组织 + DataScope scope = authService.getLoginUserDataScope(); + AuthUser user = authService.getLoginUser(); + + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); + deptQuery.inSql(Dept::getId, "select dept_id from bus_device_info "); + if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums().getCode())) { + deptQuery.in(Dept::getId, scope.getDeptIds()); + } + deptQuery.orderByAsc(Dept::getNum); + + List deptList = deptService.list(deptQuery); + return deptList; + } + + @Override + public List list() { + List list = super.list(); + list.forEach(this::wrapperInfo); + return list; + } + + private void wrapperInfo(BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setDeptName(deptService.getDeptName(busDeviceGroup.getDeptId())); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java new file mode 100644 index 0000000..413d7ac --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.device.vo; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 设备分组管理信息对象VO + * + * @author lwh + * @date 2025-06-11 + */ +@Data +public class BusDeviceGroupVO { + private static final long serialVersionUID = 1L; + + + @ApiModelProperty(value = "分组名称", dataType = "String") + private String groupName; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + private Long deptId; + + public QueryWrapper genQuery() { + QueryWrapper query = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(groupName)) { + query.like("group_name", groupName); + } + if (deptId != null) { + query.eq("dept_id", deptId); + } + return query; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java new file mode 100644 index 0000000..477435e --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java @@ -0,0 +1,163 @@ +package com.casic.missiles.modular.device.dto.risk; + +import cn.hutool.core.convert.Convert; +import com.casic.missiles.modular.device.model.RiskPointInfo; +import lombok.Data; + +@Data +public class SyncRiskDTO { + /** + * 主键 + */ + private String id; + private String name; + /** + * 重大风险 + * 风险等级 + */ + private String hazardLevel; + /** + * 危险因素 + */ + private String riskFactors; + /** + * 所属单位 + */ + private String affiliatedUnit; + /** + * 所属部门 + */ + private String department; + + /** + * 定员 + */ + private String staffing; + + /** + * 定量 + */ + private String ration; + + /** + * 地理位置 + */ + private String geographicalPosition; + + /** + * 责任人 + */ + private String personLiable; + + /** + * 现场负责人 + */ + private String siteLeader; + + /** + * 主要设备、设施设计制造单位 + */ + private String zysbZzdw; + + /** + * 所在单位 + */ + private String szdw; + + /** + * 作业人数 + */ + private String numberOperators; + + /** + * 主要性能参数 + */ + private String mainPerformanceParameters; + + /** + * 工作环境参数 + */ + private String workingEnvironmentParameters; + + /** + * 安装单位 + */ + private String installationUnit; + + /** + * 投产日期 + */ + private String productionDate; + + /** + * 设备总数 + */ + private String totalEquipment; + + /** + * 备注 + */ + private String note; + + /** + * 创建用户 + */ + private String createUser; + private String createTime; + private String updateUser; + private String updateTime; + /** + * 是否删除0:否;1:是(接口已过滤掉1的数据) + */ + private Integer isDel; + + /** + * 行政区域 + */ + private String xzqy; + /** + * 街道 + */ + private String jdxx; + + /** + * 楼房 + */ + private String loufang; + + /** + * 楼层 + */ + private String louceng; + + /** + * 房间 + */ + private String roomName; + /** + * 所属单位编码 + */ + private String affiliatedUnitsCode; + + /** + * 危险性质 + */ + private String hazardousNature; + + public RiskPointInfo convertToRisk(RiskPointInfo pointInfo) { + //风险点缺少密级 + pointInfo.setSecretLevel("1"); + // hazardLevel 是否有字典值? + + if (department != null) { + pointInfo.setDeptId(Convert.toLong(department)); + } + pointInfo.setNature(hazardousNature); + pointInfo.setRiskName(name); + pointInfo.setAddress(geographicalPosition); + pointInfo.setTargetId(id); + //默认类型为1 + pointInfo.setRiskType(1); + return pointInfo; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java new file mode 100644 index 0000000..08e89a0 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.device.handler; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class BoxDefaultHttpHeaderHandler extends DefaultHttpHeaderHandler { + /** + * 代理服务IP + */ + private String xTargetHost; + + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Access-Token", token); + } + if (StrUtil.isNotEmpty(xTargetHost)){ + base.addHeader("X-TARGET-HOST", xTargetHost); + } + } + + public String getXTargetHost() { + return xTargetHost; + } + + public void setXTargetHost(String XTargetHost) { + this.xTargetHost = XTargetHost; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java new file mode 100644 index 0000000..903e567 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.http; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class RiskHttpHandler extends DefaultHttpHeaderHandler { + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Authorization", token); + } + + } +} + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java new file mode 100644 index 0000000..9f75f42 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java @@ -0,0 +1,35 @@ +package com.casic.missiles.modular.task; + +import com.casic.missiles.modular.device.service.IRiskPointInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +@Slf4j +@Component +public class RiskTask { + + @Value("${casic.risk.open:false}") + private Boolean open; + + @Resource + private IRiskPointInfoService riskPointInfoService; + + /** + * 设备信息同步0 + * 每30分钟采集一次 + */ + @Scheduled(cron = "${casic.risk.corn:0 */1 * * * *}") + public void device() { + //风险点数据同步 + if (open) { + log.info("risk sync start...."); + riskPointInfoService.loadRiskInfo(); + log.info("risk sync end...."); + } + } + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java new file mode 100644 index 0000000..e4ca4f1 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.util; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.modular.http.RiskHttpHandler; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import com.casic.missiles.modular.system.utils.HttpUtils; + +import java.util.HashMap; +import java.util.Map; + +public class RiskHttpUtil { + public static final String loginUrl = "/rest/platform/systemLogin"; + public static final String pointDataUrl = "/rest/platform/dangerPointData"; + + public static String login(String baseUrl, String secret) { + Map param = new HashMap<>(); + param.put("secret", secret); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + defaultHeaderHandler.setJson(true); + String res = HttpUtils.sendPost(baseUrl + loginUrl, param, "", defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + public static String pointData(String baseUrl, String token) { + Map param = new HashMap<>(); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + + String res = HttpUtils.sendGet(baseUrl + pointDataUrl, param, token, defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + /** + * 登录数据加密 + * @param appId 加密id + * @param publicKey 公钥 + * @return + * @throws Exception + */ + public static String encrypt(String appId,String publicKey) throws Exception { + long ts = System.currentTimeMillis(); + return RSAUtils.encrypt(appId+"_"+ts,publicKey); + } + + +} diff --git a/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java new file mode 100644 index 0000000..9ba1e2a --- /dev/null +++ b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java @@ -0,0 +1,62 @@ +package com.casic.missiles.test; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.TypeReference; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.risk.SyncRiskDTO; +import com.casic.missiles.modular.device.util.AesUtil; +import com.casic.missiles.modular.util.RiskHttpUtil; +import com.casic.missiles.modular.util.WvpUtil; +import com.casic.missiles.modular.wvp.dto.MvpResponseDTO; + +import java.io.FileInputStream; +import java.security.MessageDigest; +import java.util.Date; +import java.util.HashMap; +import java.util.List; + +public class RiskTest { + public static void main(String[] args) throws Exception { +// File file = new File("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// String task = ZipFileUtil.getZipHandleTask("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(task); +// String md5 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(md5); +// String md52 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241122.zip"); +// System.out.println(md52); + + testDeviceLogin(); + System.out.println( DateUtil.offsetMinute(new Date(),-5)); + } + public static void testDeviceLogin() throws Exception { + Long time = System.currentTimeMillis(); + String str = "FXDDT_" + time; + String pubKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCynMBxzoNBemZKuxjlZzp04Lx/b0j1xRUznBKjlQSATwc+1DaxBpKdT4WfqAuFlSQLA7qLdntXw2cvUEvRxfdjJp2KfZLkEYRmYx3LT51WdCmouQREtMrR6j3mri8jV8TjktGCmBFMKX7eGeQM8O249yVjby6502bzZXehQ707JQIDAQAB"; + String sec = RSAUtils.encrypt(str, pubKey); + System.out.println(sec); + String priKey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALKcwHHOg0F6Zkq7GOVnOnTgvH9vSPXFFTOcEqOVBIBPBz7UNrEGkp1PhZ+oC4WVJAsDuot2e1fDZy9QS9HF92MmnYp9kuQRhGZjHctPnVZ0Kai5BES0ytHqPeauLyNXxOOS0YKYEUwpft4Z5Azw7bj3JWNvLrnTZvNld6FDvTslAgMBAAECgYAqN/kZLYpC+O6i7XSmDO95XwHPUXu6dDpdt5+EQR4OQh/hTwIaeAZB3uEj6vHGQomBfQEkI/5lsU97lIxHanbd+Hro7JyIhsGD5LR5XnZHVKzFiZW62OIU6FI9dlQNN8miiblnmyDwiMA3okaHl0O7qQjZ+IvY2csgmJc7AXpPpQJBAOhrhcfWFcgffj2O6HYNlBLFfbboc/ZzrEADDXKnxRSHlo5o8W+6gylG/L2NGtbag5S68B9VYzdkSQ1++5C+Ws8CQQDEu7h311PLEiKgqzGHpjzadQETmt/jMadaKQmT0TZwNVi6X8lR17U5hF8dAqZzUzr9kUC0HRIZhg4Uv1v3W3fLAkB4YPhxgJjXhjhEefg87Nt8vX1Xdx5Yz6CvpuUYNX0GHRQFvqUOUXQNtQ7CvorgLV1pc0lbcUZqMi8EJnj1hyJRAkEAjHXWm8GiMt+M15fCsi3vTq2xChVOekBuUsHv85iwvGZqJg7ThtpyqlEnM2g7/STUfkvhnXcQACclEI0blTy6BwJAPmFyhU+d0ejVpbc53TdrL2HqYYUHi/tTy/dtUa7lbypzdwwJ2M1Tv5PE8sQxr9tgMbebfxVb/RFKdiCCtzC4ng=="; + String s = RSAUtils.decrypt(sec,priKey); + System.out.println(s); + + + String appId = "5d7d4d81a64f4b8f"; + String publicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB"; + String secret = RiskHttpUtil.encrypt(appId,publicKey); + System.out.println(secret); + String res = RiskHttpUtil.login("http://101.201.36.107:12388",secret); + System.out.println(res); + JSONObject jsonObject = JSON.parseObject(res); + String token = jsonObject.getString("data"); + String resPoint = RiskHttpUtil.pointData("http://101.201.36.107:12388",token); + System.out.println(resPoint); + + + ResponseDataDTO> riskPointRes = JSON.parseObject(resPoint, new TypeReference>>() { + }); + + } + +} diff --git a/casic-web/src/main/resources/doc/20250609.md b/casic-web/src/main/resources/doc/20250609.md new file mode 100644 index 0000000..0cb3464 --- /dev/null +++ b/casic-web/src/main/resources/doc/20250609.md @@ -0,0 +1,30 @@ +## 一、数据库更新 + +1. 设备分组数据库增加 + +``` +ALTER TABLE bus_device_info ADD COLUMN GROUP_ID bigint; + +create table bus_device_group +( + id bigint not null comment '主键', + create_time datetime comment '创建时间', + update_time datetime comment '修改时间', + group_name varchar(255) comment '分组名称', + create_id bigint comment '创建人', + dept_id bigint comment '所属组织' +); + +alter table bus_device_group comment '设备分组管理信息'; + +``` + +casic.tenant.excludes 配置项中增加 bus_device_group + + +casic.no-login-urls 中增加如下配置 +,/sync/risk/dept,/sync/risk/user/list,/sync/risk/device/list + + + + diff --git a/casic-web/src/main/resources/doc/20250624.md b/casic-web/src/main/resources/doc/20250624.md new file mode 100644 index 0000000..7af561d --- /dev/null +++ b/casic-web/src/main/resources/doc/20250624.md @@ -0,0 +1,34 @@ +## 一、数据库更新 + +1. 风险点表添加同步ID + +``` +ALTER TABLE risk_point_info ADD COLUMN TARGET_ID VARCHAR(255); + +``` + +2. 风险点相关配置项 + +casic.risk.open 默认false 不开启 开启需配置true +casic.risk.corn 定时时间 默认0 */5 * * * * 5分钟 +casic.risk.appId 默认 5d7d4d81a64f4b8f 如变更需更改 +casic.risk.publicKey 公钥 默认MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB +casic.risk.host 风险点地址, 默认http://101.201.36.107:12388 生产需更改 + +3. 增加字典值 + hazardLevelName 风险危险等级(706映射) + 1 低风险 + 1 一般风险 + 2 较大风险 + 3 重大风险 + 以上字典值以706风险等级名称对应本系统风险点1 2 3 等级,如果706风险等级名称变更 修改对应字典值名称即可 + +4. 盒子代理服务模块添加 + 增加配置项 + casic.video.box.proxy 192.168.83.37:30064 此处需变更为部署代理nginx的ip及端口,具体配置参见国标级联及代理服务配置说明 + + + + + + diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" new file mode 100644 index 0000000..30cdcbd --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" new file mode 100644 index 0000000..6a0069c --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" new file mode 100644 index 0000000..f775124 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" new file mode 100644 index 0000000..9f65ff1 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" new file mode 100644 index 0000000..613ec69 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" new file mode 100644 index 0000000..1614b04 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" new file mode 100644 index 0000000..3f5083a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" new file mode 100644 index 0000000..134a604 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" new file mode 100644 index 0000000..7edeaa0 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" new file mode 100644 index 0000000..ccd0993 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" new file mode 100644 index 0000000..0cbf80d --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" new file mode 100644 index 0000000..613ec69 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" new file mode 100644 index 0000000..3f5083a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" new file mode 100644 index 0000000..7edeaa0 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image012.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image012.jpg" new file mode 100644 index 0000000..0cbf80d --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image012.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/themedata.thmx" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/themedata.thmx" new file mode 100644 index 0000000..67aae0a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/themedata.thmx" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/colorschememapping.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/colorschememapping.xml" new file mode 100644 index 0000000..6a0069c --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/colorschememapping.xml" @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image001.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image001.png" new file mode 100644 index 0000000..1614b04 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image001.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.gif" new file mode 100644 index 0000000..92bd844 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.png" new file mode 100644 index 0000000..9f65ff1 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.jpg" new file mode 100644 index 0000000..72b5d13 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.png" new file mode 100644 index 0000000..a5af4eb --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.gif" new file mode 100644 index 0000000..b4e65ac --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.jpg" new file mode 100644 index 0000000..b7fe03f --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image005.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image005.png" new file mode 100644 index 0000000..ccd0993 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image005.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image006.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image006.jpg" new file mode 100644 index 0000000..c8ca1b6 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image006.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image007.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image007.gif" new file mode 100644 index 0000000..92bd844 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image007.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image007.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image007.jpg" new file mode 100644 index 0000000..72b5d13 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image007.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image008.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image008.png" new file mode 100644 index 0000000..134a604 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image008.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image009.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image009.gif" new file mode 100644 index 0000000..b4e65ac --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image009.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image009.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image009.jpg" new file mode 100644 index 0000000..c8ca1b6 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image009.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image010.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image010.jpg" new file mode 100644 index 0000000..c8ca1b6 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image010.jpg" Binary files differ diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java new file mode 100644 index 0000000..77c14a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.device.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dictmap.DeviceGroupQueryDict; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.vo.BusDeviceGroupVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; + +/** + * 设备分组管理信息Controller + * + * @author lwh + * @date 2025-06-11 + */ +@Api(tags = "设备分组管理信息") +@RestController +@RequestMapping("/device/group") +public class BusDeviceGroupController extends BaseController { + + private final IBusDeviceGroupService busDeviceGroupService; + private final AbstractPermissionContext abstractPermissionContext; + + public BusDeviceGroupController(IBusDeviceGroupService busDeviceGroupService, AbstractPermissionContext abstractPermissionContext) { + this.busDeviceGroupService = busDeviceGroupService; + this.abstractPermissionContext = abstractPermissionContext; + } + + @ApiOperation(value = "列表查询") + @GetMapping(value = "/list") + public ResponseDataDTO> list(BusDeviceGroupVO busDeviceGroupVO) { + QueryWrapper query = busDeviceGroupVO.genQuery(); + return ResponseDataDTO.success(busDeviceGroupService.list(query)); + } + + @ApiOperation(value = "分组树结构查询") + @BussinessLog(value = "分组树结构查询") + @GetMapping(value = "/tree") + public ResponseDataDTO> groupTree() { + List groupDTOList = busDeviceGroupService.groupTree(); + return ResponseDataDTO.success(groupDTOList); + } + + @BussinessLog(value = "设备分组分页查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "分页查询") + @GetMapping(value = "/listPage") + public ResponseDataDTO> listPage(BusDeviceGroupVO busDeviceGroupVO) { + Page page = PageFactory.defaultPage(); + QueryWrapper query = busDeviceGroupVO.genQuery(); + List list = busDeviceGroupService.selectBusDeviceGroupPage(page, query); + page.setRecords(list); + return ResponseDataDTO.success(super.packForBT(page)); + } + + @BussinessLog(value = "设备分组新增", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "新增接口") + @PostMapping(value = "/add") + public ResponseDataDTO add(@RequestBody BusDeviceGroup busDeviceGroup) { + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + busDeviceGroup.setCreateId(user.getId()); + busDeviceGroup.setCreateTime(new Date()); + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.save(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组修改", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @PostMapping(value = "/update") + public ResponseDataDTO update(@RequestBody BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.updateById(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组删除", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "删除接口") + @GetMapping(value = "/delete") + public ResponseDataDTO delete(String id) { + busDeviceGroupService.removeById(id); + return ResponseDataDTO.success(); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { + busDeviceGroupService.removeByIds(ids.getIds()); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组详情查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "详情查询") + @GetMapping(value = "/detail") + public ResponseDataDTO detail(String id) { + return ResponseDataDTO.success(busDeviceGroupService.getById(id)); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java new file mode 100644 index 0000000..9d3726f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.device.dao; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import java.util.List; +/** + *

+ * 设备分组管理信息 Mapper 接口 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface BusDeviceGroupMapper extends BaseMapper { +/** +* 设备分组管理信息 分页检索 +*/ +List selectBusDeviceGroupPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml new file mode 100644 index 0000000..a6dd84f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + id + , + create_time as createTime , + update_time as updateTime , + group_name as groupName , + create_id as createId , + dept_id as deptId + + + a + . + id + , + a.create_time + as createTime , + a.update_time + as updateTime , + a.group_name + as groupName , + a.create_id + as createId , + a.dept_id + as deptId + + + + + + and group_name like concat('%',#{request.groupName},'%') + + + and dept_id = #{request.deptId} + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java new file mode 100644 index 0000000..a821e92 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dictmap; + +import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap; + +public class DeviceGroupQueryDict extends AbstractDictMap { + + @Override + public void init() { + put("id", "主键"); + put("deptId", "所属组织"); + put("groupName", "分组名称"); + + put("deptName", "所属单位"); + } + + @Override + protected void initBeWrapped() { + + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java new file mode 100644 index 0000000..d8d1712 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.device.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + + +/** + * 设备分组管理信息对象 bus_device_group + * + * @author lwh + * @date 2025-06-11 + */ +@Data +@TableName("bus_device_group") +public class BusDeviceGroup extends Model { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键", dataType = "Long") + @TableField("id") + private Long id; + + @ApiModelProperty(value = "创建时间", dataType = "Date") + @TableField("create_time") + private Date createTime; + + @ApiModelProperty(value = "修改时间", dataType = "Date") + @TableField("update_time") + private Date updateTime; + + @ApiModelProperty(value = "分组名称", dataType = "String") + @TableField("group_name") + private String groupName; + + @ApiModelProperty(value = "创建人", dataType = "Long") + @TableField("create_id") + private Long createId; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; + @TableField(exist = false) + private String deptName; + + @Override + public String toString() { + return "BusDeviceGroup{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "groupName=" + groupName + + "createId=" + createId + + "deptId=" + deptId + + "}"; + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java new file mode 100644 index 0000000..d2cee5c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; + +import java.util.List; + + +/** + *

+ * 设备分组管理信息 服务类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface IBusDeviceGroupService extends IService { + /** + * 设备分组管理信息 分页检索 + */ + List selectBusDeviceGroupPage(Page page, QueryWrapper query); + + /** + * 树结构查询 + * + * @return + */ + List groupTree(); + + DeptDTO convertDeptDTO(BusDeviceGroup group); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java new file mode 100644 index 0000000..a6f08b7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java @@ -0,0 +1,139 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractAuthService; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.modular.data.constants.DataConstants; +import com.casic.missiles.modular.device.dao.BusDeviceGroupMapper; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; +import com.casic.missiles.modular.system.model.Dept; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.data.constants.DataConstants.NODE_TYPE_DEPT; + + +/** + *

+ * 设备分组管理信息 服务实现类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +@Service +public class BusDeviceGroupServiceImpl extends ServiceImpl implements IBusDeviceGroupService { + @Resource + private AbstractDeptService deptService; + + @Override + public List selectBusDeviceGroupPage(Page page, QueryWrapper query) { + List list = this.baseMapper.selectBusDeviceGroupPage(page, query); + list.forEach(this::wrapperInfo); + return list; + } + + @Override + public List groupTree() { + List deptList = deviceDept(); + + List deptDTOS = new ArrayList<>(); + //树节点根 + List rootIds = new ArrayList<>(); + Set normalIds = new HashSet<>(); + + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setId(dept.getId()); + deptDTO.setPid(dept.getPid()); + deptDTO.setFullName(dept.getFullName()); + deptDTO.setName(dept.getSimpleName()); + deptDTO.setType(NODE_TYPE_DEPT); + + normalIds.add(dept.getId()); + deptDTOS.add(deptDTO); + + + //查询该组织下分组信息 + LambdaQueryWrapper deviceQuery = new LambdaQueryWrapper<>(); + deviceQuery.eq(BusDeviceGroup::getDeptId, deptDTO.getId()); + + deviceQuery.orderByAsc(BusDeviceGroup::getGroupName); + List deviceInfos = this.list(deviceQuery); + List deptDTOList = new ArrayList<>(); + for (BusDeviceGroup group : deviceInfos) { + DeptDTO deptDto = this.convertDeptDTO(group); + deptDTOList.add(deptDto); + } + deptDTO.setChildrenNodes(deptDTOList); + } + + for (DeptDTO deptDTO : deptDTOS) { + if (!normalIds.contains(deptDTO.getPid())) { + rootIds.add(deptDTO.getPid()); + } + } + + //过滤根节点 + DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); + List newTree = new ArrayList<>(); + rootIds = rootIds.stream().distinct().collect(Collectors.toList()); + for (Long rootId : rootIds) { + abstractTreeBuildFactory.setRootId(rootId + ""); + newTree.addAll(abstractTreeBuildFactory.doTreeBuild(deptDTOS)); + } + return newTree; + } + + public DeptDTO convertDeptDTO(BusDeviceGroup group) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setType(DataConstants.NODE_TYPE_GROUP); + deptDTO.setId(group.getId()); + deptDTO.setPid(group.getDeptId()); + deptDTO.setName(group.getGroupName()); + deptDTO.setGroup(group); + return deptDTO; + } + + @Resource + private AbstractAuthService authService; + + private List deviceDept() { + //查询可见组织 + DataScope scope = authService.getLoginUserDataScope(); + AuthUser user = authService.getLoginUser(); + + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); + deptQuery.inSql(Dept::getId, "select dept_id from bus_device_info "); + if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums().getCode())) { + deptQuery.in(Dept::getId, scope.getDeptIds()); + } + deptQuery.orderByAsc(Dept::getNum); + + List deptList = deptService.list(deptQuery); + return deptList; + } + + @Override + public List list() { + List list = super.list(); + list.forEach(this::wrapperInfo); + return list; + } + + private void wrapperInfo(BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setDeptName(deptService.getDeptName(busDeviceGroup.getDeptId())); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java new file mode 100644 index 0000000..413d7ac --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.device.vo; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 设备分组管理信息对象VO + * + * @author lwh + * @date 2025-06-11 + */ +@Data +public class BusDeviceGroupVO { + private static final long serialVersionUID = 1L; + + + @ApiModelProperty(value = "分组名称", dataType = "String") + private String groupName; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + private Long deptId; + + public QueryWrapper genQuery() { + QueryWrapper query = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(groupName)) { + query.like("group_name", groupName); + } + if (deptId != null) { + query.eq("dept_id", deptId); + } + return query; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java new file mode 100644 index 0000000..477435e --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java @@ -0,0 +1,163 @@ +package com.casic.missiles.modular.device.dto.risk; + +import cn.hutool.core.convert.Convert; +import com.casic.missiles.modular.device.model.RiskPointInfo; +import lombok.Data; + +@Data +public class SyncRiskDTO { + /** + * 主键 + */ + private String id; + private String name; + /** + * 重大风险 + * 风险等级 + */ + private String hazardLevel; + /** + * 危险因素 + */ + private String riskFactors; + /** + * 所属单位 + */ + private String affiliatedUnit; + /** + * 所属部门 + */ + private String department; + + /** + * 定员 + */ + private String staffing; + + /** + * 定量 + */ + private String ration; + + /** + * 地理位置 + */ + private String geographicalPosition; + + /** + * 责任人 + */ + private String personLiable; + + /** + * 现场负责人 + */ + private String siteLeader; + + /** + * 主要设备、设施设计制造单位 + */ + private String zysbZzdw; + + /** + * 所在单位 + */ + private String szdw; + + /** + * 作业人数 + */ + private String numberOperators; + + /** + * 主要性能参数 + */ + private String mainPerformanceParameters; + + /** + * 工作环境参数 + */ + private String workingEnvironmentParameters; + + /** + * 安装单位 + */ + private String installationUnit; + + /** + * 投产日期 + */ + private String productionDate; + + /** + * 设备总数 + */ + private String totalEquipment; + + /** + * 备注 + */ + private String note; + + /** + * 创建用户 + */ + private String createUser; + private String createTime; + private String updateUser; + private String updateTime; + /** + * 是否删除0:否;1:是(接口已过滤掉1的数据) + */ + private Integer isDel; + + /** + * 行政区域 + */ + private String xzqy; + /** + * 街道 + */ + private String jdxx; + + /** + * 楼房 + */ + private String loufang; + + /** + * 楼层 + */ + private String louceng; + + /** + * 房间 + */ + private String roomName; + /** + * 所属单位编码 + */ + private String affiliatedUnitsCode; + + /** + * 危险性质 + */ + private String hazardousNature; + + public RiskPointInfo convertToRisk(RiskPointInfo pointInfo) { + //风险点缺少密级 + pointInfo.setSecretLevel("1"); + // hazardLevel 是否有字典值? + + if (department != null) { + pointInfo.setDeptId(Convert.toLong(department)); + } + pointInfo.setNature(hazardousNature); + pointInfo.setRiskName(name); + pointInfo.setAddress(geographicalPosition); + pointInfo.setTargetId(id); + //默认类型为1 + pointInfo.setRiskType(1); + return pointInfo; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java new file mode 100644 index 0000000..08e89a0 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.device.handler; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class BoxDefaultHttpHeaderHandler extends DefaultHttpHeaderHandler { + /** + * 代理服务IP + */ + private String xTargetHost; + + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Access-Token", token); + } + if (StrUtil.isNotEmpty(xTargetHost)){ + base.addHeader("X-TARGET-HOST", xTargetHost); + } + } + + public String getXTargetHost() { + return xTargetHost; + } + + public void setXTargetHost(String XTargetHost) { + this.xTargetHost = XTargetHost; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java new file mode 100644 index 0000000..903e567 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.http; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class RiskHttpHandler extends DefaultHttpHeaderHandler { + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Authorization", token); + } + + } +} + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java new file mode 100644 index 0000000..9f75f42 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java @@ -0,0 +1,35 @@ +package com.casic.missiles.modular.task; + +import com.casic.missiles.modular.device.service.IRiskPointInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +@Slf4j +@Component +public class RiskTask { + + @Value("${casic.risk.open:false}") + private Boolean open; + + @Resource + private IRiskPointInfoService riskPointInfoService; + + /** + * 设备信息同步0 + * 每30分钟采集一次 + */ + @Scheduled(cron = "${casic.risk.corn:0 */1 * * * *}") + public void device() { + //风险点数据同步 + if (open) { + log.info("risk sync start...."); + riskPointInfoService.loadRiskInfo(); + log.info("risk sync end...."); + } + } + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java new file mode 100644 index 0000000..e4ca4f1 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.util; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.modular.http.RiskHttpHandler; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import com.casic.missiles.modular.system.utils.HttpUtils; + +import java.util.HashMap; +import java.util.Map; + +public class RiskHttpUtil { + public static final String loginUrl = "/rest/platform/systemLogin"; + public static final String pointDataUrl = "/rest/platform/dangerPointData"; + + public static String login(String baseUrl, String secret) { + Map param = new HashMap<>(); + param.put("secret", secret); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + defaultHeaderHandler.setJson(true); + String res = HttpUtils.sendPost(baseUrl + loginUrl, param, "", defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + public static String pointData(String baseUrl, String token) { + Map param = new HashMap<>(); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + + String res = HttpUtils.sendGet(baseUrl + pointDataUrl, param, token, defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + /** + * 登录数据加密 + * @param appId 加密id + * @param publicKey 公钥 + * @return + * @throws Exception + */ + public static String encrypt(String appId,String publicKey) throws Exception { + long ts = System.currentTimeMillis(); + return RSAUtils.encrypt(appId+"_"+ts,publicKey); + } + + +} diff --git a/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java new file mode 100644 index 0000000..9ba1e2a --- /dev/null +++ b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java @@ -0,0 +1,62 @@ +package com.casic.missiles.test; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.TypeReference; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.risk.SyncRiskDTO; +import com.casic.missiles.modular.device.util.AesUtil; +import com.casic.missiles.modular.util.RiskHttpUtil; +import com.casic.missiles.modular.util.WvpUtil; +import com.casic.missiles.modular.wvp.dto.MvpResponseDTO; + +import java.io.FileInputStream; +import java.security.MessageDigest; +import java.util.Date; +import java.util.HashMap; +import java.util.List; + +public class RiskTest { + public static void main(String[] args) throws Exception { +// File file = new File("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// String task = ZipFileUtil.getZipHandleTask("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(task); +// String md5 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(md5); +// String md52 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241122.zip"); +// System.out.println(md52); + + testDeviceLogin(); + System.out.println( DateUtil.offsetMinute(new Date(),-5)); + } + public static void testDeviceLogin() throws Exception { + Long time = System.currentTimeMillis(); + String str = "FXDDT_" + time; + String pubKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCynMBxzoNBemZKuxjlZzp04Lx/b0j1xRUznBKjlQSATwc+1DaxBpKdT4WfqAuFlSQLA7qLdntXw2cvUEvRxfdjJp2KfZLkEYRmYx3LT51WdCmouQREtMrR6j3mri8jV8TjktGCmBFMKX7eGeQM8O249yVjby6502bzZXehQ707JQIDAQAB"; + String sec = RSAUtils.encrypt(str, pubKey); + System.out.println(sec); + String priKey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALKcwHHOg0F6Zkq7GOVnOnTgvH9vSPXFFTOcEqOVBIBPBz7UNrEGkp1PhZ+oC4WVJAsDuot2e1fDZy9QS9HF92MmnYp9kuQRhGZjHctPnVZ0Kai5BES0ytHqPeauLyNXxOOS0YKYEUwpft4Z5Azw7bj3JWNvLrnTZvNld6FDvTslAgMBAAECgYAqN/kZLYpC+O6i7XSmDO95XwHPUXu6dDpdt5+EQR4OQh/hTwIaeAZB3uEj6vHGQomBfQEkI/5lsU97lIxHanbd+Hro7JyIhsGD5LR5XnZHVKzFiZW62OIU6FI9dlQNN8miiblnmyDwiMA3okaHl0O7qQjZ+IvY2csgmJc7AXpPpQJBAOhrhcfWFcgffj2O6HYNlBLFfbboc/ZzrEADDXKnxRSHlo5o8W+6gylG/L2NGtbag5S68B9VYzdkSQ1++5C+Ws8CQQDEu7h311PLEiKgqzGHpjzadQETmt/jMadaKQmT0TZwNVi6X8lR17U5hF8dAqZzUzr9kUC0HRIZhg4Uv1v3W3fLAkB4YPhxgJjXhjhEefg87Nt8vX1Xdx5Yz6CvpuUYNX0GHRQFvqUOUXQNtQ7CvorgLV1pc0lbcUZqMi8EJnj1hyJRAkEAjHXWm8GiMt+M15fCsi3vTq2xChVOekBuUsHv85iwvGZqJg7ThtpyqlEnM2g7/STUfkvhnXcQACclEI0blTy6BwJAPmFyhU+d0ejVpbc53TdrL2HqYYUHi/tTy/dtUa7lbypzdwwJ2M1Tv5PE8sQxr9tgMbebfxVb/RFKdiCCtzC4ng=="; + String s = RSAUtils.decrypt(sec,priKey); + System.out.println(s); + + + String appId = "5d7d4d81a64f4b8f"; + String publicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB"; + String secret = RiskHttpUtil.encrypt(appId,publicKey); + System.out.println(secret); + String res = RiskHttpUtil.login("http://101.201.36.107:12388",secret); + System.out.println(res); + JSONObject jsonObject = JSON.parseObject(res); + String token = jsonObject.getString("data"); + String resPoint = RiskHttpUtil.pointData("http://101.201.36.107:12388",token); + System.out.println(resPoint); + + + ResponseDataDTO> riskPointRes = JSON.parseObject(resPoint, new TypeReference>>() { + }); + + } + +} diff --git a/casic-web/src/main/resources/doc/20250609.md b/casic-web/src/main/resources/doc/20250609.md new file mode 100644 index 0000000..0cb3464 --- /dev/null +++ b/casic-web/src/main/resources/doc/20250609.md @@ -0,0 +1,30 @@ +## 一、数据库更新 + +1. 设备分组数据库增加 + +``` +ALTER TABLE bus_device_info ADD COLUMN GROUP_ID bigint; + +create table bus_device_group +( + id bigint not null comment '主键', + create_time datetime comment '创建时间', + update_time datetime comment '修改时间', + group_name varchar(255) comment '分组名称', + create_id bigint comment '创建人', + dept_id bigint comment '所属组织' +); + +alter table bus_device_group comment '设备分组管理信息'; + +``` + +casic.tenant.excludes 配置项中增加 bus_device_group + + +casic.no-login-urls 中增加如下配置 +,/sync/risk/dept,/sync/risk/user/list,/sync/risk/device/list + + + + diff --git a/casic-web/src/main/resources/doc/20250624.md b/casic-web/src/main/resources/doc/20250624.md new file mode 100644 index 0000000..7af561d --- /dev/null +++ b/casic-web/src/main/resources/doc/20250624.md @@ -0,0 +1,34 @@ +## 一、数据库更新 + +1. 风险点表添加同步ID + +``` +ALTER TABLE risk_point_info ADD COLUMN TARGET_ID VARCHAR(255); + +``` + +2. 风险点相关配置项 + +casic.risk.open 默认false 不开启 开启需配置true +casic.risk.corn 定时时间 默认0 */5 * * * * 5分钟 +casic.risk.appId 默认 5d7d4d81a64f4b8f 如变更需更改 +casic.risk.publicKey 公钥 默认MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB +casic.risk.host 风险点地址, 默认http://101.201.36.107:12388 生产需更改 + +3. 增加字典值 + hazardLevelName 风险危险等级(706映射) + 1 低风险 + 1 一般风险 + 2 较大风险 + 3 重大风险 + 以上字典值以706风险等级名称对应本系统风险点1 2 3 等级,如果706风险等级名称变更 修改对应字典值名称即可 + +4. 盒子代理服务模块添加 + 增加配置项 + casic.video.box.proxy 192.168.83.37:30064 此处需变更为部署代理nginx的ip及端口,具体配置参见国标级联及代理服务配置说明 + + + + + + diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" new file mode 100644 index 0000000..30cdcbd --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" new file mode 100644 index 0000000..6a0069c --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" new file mode 100644 index 0000000..f775124 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" new file mode 100644 index 0000000..9f65ff1 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" new file mode 100644 index 0000000..613ec69 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" new file mode 100644 index 0000000..1614b04 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" new file mode 100644 index 0000000..3f5083a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" new file mode 100644 index 0000000..134a604 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" new file mode 100644 index 0000000..7edeaa0 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" new file mode 100644 index 0000000..ccd0993 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" new file mode 100644 index 0000000..0cbf80d --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" new file mode 100644 index 0000000..613ec69 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" new file mode 100644 index 0000000..3f5083a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" new file mode 100644 index 0000000..7edeaa0 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image012.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image012.jpg" new file mode 100644 index 0000000..0cbf80d --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image012.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/themedata.thmx" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/themedata.thmx" new file mode 100644 index 0000000..67aae0a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/themedata.thmx" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/colorschememapping.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/colorschememapping.xml" new file mode 100644 index 0000000..6a0069c --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/colorschememapping.xml" @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image001.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image001.png" new file mode 100644 index 0000000..1614b04 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image001.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.gif" new file mode 100644 index 0000000..92bd844 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.png" new file mode 100644 index 0000000..9f65ff1 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.jpg" new file mode 100644 index 0000000..72b5d13 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.png" new file mode 100644 index 0000000..a5af4eb --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.gif" new file mode 100644 index 0000000..b4e65ac --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.jpg" new file mode 100644 index 0000000..b7fe03f --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image005.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image005.png" new file mode 100644 index 0000000..ccd0993 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image005.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image006.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image006.jpg" new file mode 100644 index 0000000..c8ca1b6 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image006.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image007.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image007.gif" new file mode 100644 index 0000000..92bd844 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image007.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image007.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image007.jpg" new file mode 100644 index 0000000..72b5d13 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image007.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image008.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image008.png" new file mode 100644 index 0000000..134a604 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image008.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image009.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image009.gif" new file mode 100644 index 0000000..b4e65ac --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image009.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image009.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image009.jpg" new file mode 100644 index 0000000..c8ca1b6 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image009.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image010.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image010.jpg" new file mode 100644 index 0000000..c8ca1b6 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image010.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image011.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image011.jpg" new file mode 100644 index 0000000..2cee4a1 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image011.jpg" Binary files differ diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java new file mode 100644 index 0000000..77c14a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.device.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dictmap.DeviceGroupQueryDict; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.vo.BusDeviceGroupVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; + +/** + * 设备分组管理信息Controller + * + * @author lwh + * @date 2025-06-11 + */ +@Api(tags = "设备分组管理信息") +@RestController +@RequestMapping("/device/group") +public class BusDeviceGroupController extends BaseController { + + private final IBusDeviceGroupService busDeviceGroupService; + private final AbstractPermissionContext abstractPermissionContext; + + public BusDeviceGroupController(IBusDeviceGroupService busDeviceGroupService, AbstractPermissionContext abstractPermissionContext) { + this.busDeviceGroupService = busDeviceGroupService; + this.abstractPermissionContext = abstractPermissionContext; + } + + @ApiOperation(value = "列表查询") + @GetMapping(value = "/list") + public ResponseDataDTO> list(BusDeviceGroupVO busDeviceGroupVO) { + QueryWrapper query = busDeviceGroupVO.genQuery(); + return ResponseDataDTO.success(busDeviceGroupService.list(query)); + } + + @ApiOperation(value = "分组树结构查询") + @BussinessLog(value = "分组树结构查询") + @GetMapping(value = "/tree") + public ResponseDataDTO> groupTree() { + List groupDTOList = busDeviceGroupService.groupTree(); + return ResponseDataDTO.success(groupDTOList); + } + + @BussinessLog(value = "设备分组分页查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "分页查询") + @GetMapping(value = "/listPage") + public ResponseDataDTO> listPage(BusDeviceGroupVO busDeviceGroupVO) { + Page page = PageFactory.defaultPage(); + QueryWrapper query = busDeviceGroupVO.genQuery(); + List list = busDeviceGroupService.selectBusDeviceGroupPage(page, query); + page.setRecords(list); + return ResponseDataDTO.success(super.packForBT(page)); + } + + @BussinessLog(value = "设备分组新增", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "新增接口") + @PostMapping(value = "/add") + public ResponseDataDTO add(@RequestBody BusDeviceGroup busDeviceGroup) { + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + busDeviceGroup.setCreateId(user.getId()); + busDeviceGroup.setCreateTime(new Date()); + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.save(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组修改", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @PostMapping(value = "/update") + public ResponseDataDTO update(@RequestBody BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.updateById(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组删除", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "删除接口") + @GetMapping(value = "/delete") + public ResponseDataDTO delete(String id) { + busDeviceGroupService.removeById(id); + return ResponseDataDTO.success(); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { + busDeviceGroupService.removeByIds(ids.getIds()); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组详情查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "详情查询") + @GetMapping(value = "/detail") + public ResponseDataDTO detail(String id) { + return ResponseDataDTO.success(busDeviceGroupService.getById(id)); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java new file mode 100644 index 0000000..9d3726f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.device.dao; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import java.util.List; +/** + *

+ * 设备分组管理信息 Mapper 接口 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface BusDeviceGroupMapper extends BaseMapper { +/** +* 设备分组管理信息 分页检索 +*/ +List selectBusDeviceGroupPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml new file mode 100644 index 0000000..a6dd84f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + id + , + create_time as createTime , + update_time as updateTime , + group_name as groupName , + create_id as createId , + dept_id as deptId + + + a + . + id + , + a.create_time + as createTime , + a.update_time + as updateTime , + a.group_name + as groupName , + a.create_id + as createId , + a.dept_id + as deptId + + + + + + and group_name like concat('%',#{request.groupName},'%') + + + and dept_id = #{request.deptId} + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java new file mode 100644 index 0000000..a821e92 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dictmap; + +import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap; + +public class DeviceGroupQueryDict extends AbstractDictMap { + + @Override + public void init() { + put("id", "主键"); + put("deptId", "所属组织"); + put("groupName", "分组名称"); + + put("deptName", "所属单位"); + } + + @Override + protected void initBeWrapped() { + + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java new file mode 100644 index 0000000..d8d1712 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.device.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + + +/** + * 设备分组管理信息对象 bus_device_group + * + * @author lwh + * @date 2025-06-11 + */ +@Data +@TableName("bus_device_group") +public class BusDeviceGroup extends Model { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键", dataType = "Long") + @TableField("id") + private Long id; + + @ApiModelProperty(value = "创建时间", dataType = "Date") + @TableField("create_time") + private Date createTime; + + @ApiModelProperty(value = "修改时间", dataType = "Date") + @TableField("update_time") + private Date updateTime; + + @ApiModelProperty(value = "分组名称", dataType = "String") + @TableField("group_name") + private String groupName; + + @ApiModelProperty(value = "创建人", dataType = "Long") + @TableField("create_id") + private Long createId; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; + @TableField(exist = false) + private String deptName; + + @Override + public String toString() { + return "BusDeviceGroup{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "groupName=" + groupName + + "createId=" + createId + + "deptId=" + deptId + + "}"; + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java new file mode 100644 index 0000000..d2cee5c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; + +import java.util.List; + + +/** + *

+ * 设备分组管理信息 服务类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface IBusDeviceGroupService extends IService { + /** + * 设备分组管理信息 分页检索 + */ + List selectBusDeviceGroupPage(Page page, QueryWrapper query); + + /** + * 树结构查询 + * + * @return + */ + List groupTree(); + + DeptDTO convertDeptDTO(BusDeviceGroup group); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java new file mode 100644 index 0000000..a6f08b7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java @@ -0,0 +1,139 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractAuthService; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.modular.data.constants.DataConstants; +import com.casic.missiles.modular.device.dao.BusDeviceGroupMapper; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; +import com.casic.missiles.modular.system.model.Dept; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.data.constants.DataConstants.NODE_TYPE_DEPT; + + +/** + *

+ * 设备分组管理信息 服务实现类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +@Service +public class BusDeviceGroupServiceImpl extends ServiceImpl implements IBusDeviceGroupService { + @Resource + private AbstractDeptService deptService; + + @Override + public List selectBusDeviceGroupPage(Page page, QueryWrapper query) { + List list = this.baseMapper.selectBusDeviceGroupPage(page, query); + list.forEach(this::wrapperInfo); + return list; + } + + @Override + public List groupTree() { + List deptList = deviceDept(); + + List deptDTOS = new ArrayList<>(); + //树节点根 + List rootIds = new ArrayList<>(); + Set normalIds = new HashSet<>(); + + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setId(dept.getId()); + deptDTO.setPid(dept.getPid()); + deptDTO.setFullName(dept.getFullName()); + deptDTO.setName(dept.getSimpleName()); + deptDTO.setType(NODE_TYPE_DEPT); + + normalIds.add(dept.getId()); + deptDTOS.add(deptDTO); + + + //查询该组织下分组信息 + LambdaQueryWrapper deviceQuery = new LambdaQueryWrapper<>(); + deviceQuery.eq(BusDeviceGroup::getDeptId, deptDTO.getId()); + + deviceQuery.orderByAsc(BusDeviceGroup::getGroupName); + List deviceInfos = this.list(deviceQuery); + List deptDTOList = new ArrayList<>(); + for (BusDeviceGroup group : deviceInfos) { + DeptDTO deptDto = this.convertDeptDTO(group); + deptDTOList.add(deptDto); + } + deptDTO.setChildrenNodes(deptDTOList); + } + + for (DeptDTO deptDTO : deptDTOS) { + if (!normalIds.contains(deptDTO.getPid())) { + rootIds.add(deptDTO.getPid()); + } + } + + //过滤根节点 + DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); + List newTree = new ArrayList<>(); + rootIds = rootIds.stream().distinct().collect(Collectors.toList()); + for (Long rootId : rootIds) { + abstractTreeBuildFactory.setRootId(rootId + ""); + newTree.addAll(abstractTreeBuildFactory.doTreeBuild(deptDTOS)); + } + return newTree; + } + + public DeptDTO convertDeptDTO(BusDeviceGroup group) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setType(DataConstants.NODE_TYPE_GROUP); + deptDTO.setId(group.getId()); + deptDTO.setPid(group.getDeptId()); + deptDTO.setName(group.getGroupName()); + deptDTO.setGroup(group); + return deptDTO; + } + + @Resource + private AbstractAuthService authService; + + private List deviceDept() { + //查询可见组织 + DataScope scope = authService.getLoginUserDataScope(); + AuthUser user = authService.getLoginUser(); + + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); + deptQuery.inSql(Dept::getId, "select dept_id from bus_device_info "); + if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums().getCode())) { + deptQuery.in(Dept::getId, scope.getDeptIds()); + } + deptQuery.orderByAsc(Dept::getNum); + + List deptList = deptService.list(deptQuery); + return deptList; + } + + @Override + public List list() { + List list = super.list(); + list.forEach(this::wrapperInfo); + return list; + } + + private void wrapperInfo(BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setDeptName(deptService.getDeptName(busDeviceGroup.getDeptId())); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java new file mode 100644 index 0000000..413d7ac --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.device.vo; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 设备分组管理信息对象VO + * + * @author lwh + * @date 2025-06-11 + */ +@Data +public class BusDeviceGroupVO { + private static final long serialVersionUID = 1L; + + + @ApiModelProperty(value = "分组名称", dataType = "String") + private String groupName; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + private Long deptId; + + public QueryWrapper genQuery() { + QueryWrapper query = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(groupName)) { + query.like("group_name", groupName); + } + if (deptId != null) { + query.eq("dept_id", deptId); + } + return query; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java new file mode 100644 index 0000000..477435e --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java @@ -0,0 +1,163 @@ +package com.casic.missiles.modular.device.dto.risk; + +import cn.hutool.core.convert.Convert; +import com.casic.missiles.modular.device.model.RiskPointInfo; +import lombok.Data; + +@Data +public class SyncRiskDTO { + /** + * 主键 + */ + private String id; + private String name; + /** + * 重大风险 + * 风险等级 + */ + private String hazardLevel; + /** + * 危险因素 + */ + private String riskFactors; + /** + * 所属单位 + */ + private String affiliatedUnit; + /** + * 所属部门 + */ + private String department; + + /** + * 定员 + */ + private String staffing; + + /** + * 定量 + */ + private String ration; + + /** + * 地理位置 + */ + private String geographicalPosition; + + /** + * 责任人 + */ + private String personLiable; + + /** + * 现场负责人 + */ + private String siteLeader; + + /** + * 主要设备、设施设计制造单位 + */ + private String zysbZzdw; + + /** + * 所在单位 + */ + private String szdw; + + /** + * 作业人数 + */ + private String numberOperators; + + /** + * 主要性能参数 + */ + private String mainPerformanceParameters; + + /** + * 工作环境参数 + */ + private String workingEnvironmentParameters; + + /** + * 安装单位 + */ + private String installationUnit; + + /** + * 投产日期 + */ + private String productionDate; + + /** + * 设备总数 + */ + private String totalEquipment; + + /** + * 备注 + */ + private String note; + + /** + * 创建用户 + */ + private String createUser; + private String createTime; + private String updateUser; + private String updateTime; + /** + * 是否删除0:否;1:是(接口已过滤掉1的数据) + */ + private Integer isDel; + + /** + * 行政区域 + */ + private String xzqy; + /** + * 街道 + */ + private String jdxx; + + /** + * 楼房 + */ + private String loufang; + + /** + * 楼层 + */ + private String louceng; + + /** + * 房间 + */ + private String roomName; + /** + * 所属单位编码 + */ + private String affiliatedUnitsCode; + + /** + * 危险性质 + */ + private String hazardousNature; + + public RiskPointInfo convertToRisk(RiskPointInfo pointInfo) { + //风险点缺少密级 + pointInfo.setSecretLevel("1"); + // hazardLevel 是否有字典值? + + if (department != null) { + pointInfo.setDeptId(Convert.toLong(department)); + } + pointInfo.setNature(hazardousNature); + pointInfo.setRiskName(name); + pointInfo.setAddress(geographicalPosition); + pointInfo.setTargetId(id); + //默认类型为1 + pointInfo.setRiskType(1); + return pointInfo; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java new file mode 100644 index 0000000..08e89a0 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.device.handler; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class BoxDefaultHttpHeaderHandler extends DefaultHttpHeaderHandler { + /** + * 代理服务IP + */ + private String xTargetHost; + + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Access-Token", token); + } + if (StrUtil.isNotEmpty(xTargetHost)){ + base.addHeader("X-TARGET-HOST", xTargetHost); + } + } + + public String getXTargetHost() { + return xTargetHost; + } + + public void setXTargetHost(String XTargetHost) { + this.xTargetHost = XTargetHost; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java new file mode 100644 index 0000000..903e567 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.http; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class RiskHttpHandler extends DefaultHttpHeaderHandler { + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Authorization", token); + } + + } +} + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java new file mode 100644 index 0000000..9f75f42 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java @@ -0,0 +1,35 @@ +package com.casic.missiles.modular.task; + +import com.casic.missiles.modular.device.service.IRiskPointInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +@Slf4j +@Component +public class RiskTask { + + @Value("${casic.risk.open:false}") + private Boolean open; + + @Resource + private IRiskPointInfoService riskPointInfoService; + + /** + * 设备信息同步0 + * 每30分钟采集一次 + */ + @Scheduled(cron = "${casic.risk.corn:0 */1 * * * *}") + public void device() { + //风险点数据同步 + if (open) { + log.info("risk sync start...."); + riskPointInfoService.loadRiskInfo(); + log.info("risk sync end...."); + } + } + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java new file mode 100644 index 0000000..e4ca4f1 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.util; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.modular.http.RiskHttpHandler; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import com.casic.missiles.modular.system.utils.HttpUtils; + +import java.util.HashMap; +import java.util.Map; + +public class RiskHttpUtil { + public static final String loginUrl = "/rest/platform/systemLogin"; + public static final String pointDataUrl = "/rest/platform/dangerPointData"; + + public static String login(String baseUrl, String secret) { + Map param = new HashMap<>(); + param.put("secret", secret); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + defaultHeaderHandler.setJson(true); + String res = HttpUtils.sendPost(baseUrl + loginUrl, param, "", defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + public static String pointData(String baseUrl, String token) { + Map param = new HashMap<>(); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + + String res = HttpUtils.sendGet(baseUrl + pointDataUrl, param, token, defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + /** + * 登录数据加密 + * @param appId 加密id + * @param publicKey 公钥 + * @return + * @throws Exception + */ + public static String encrypt(String appId,String publicKey) throws Exception { + long ts = System.currentTimeMillis(); + return RSAUtils.encrypt(appId+"_"+ts,publicKey); + } + + +} diff --git a/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java new file mode 100644 index 0000000..9ba1e2a --- /dev/null +++ b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java @@ -0,0 +1,62 @@ +package com.casic.missiles.test; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.TypeReference; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.risk.SyncRiskDTO; +import com.casic.missiles.modular.device.util.AesUtil; +import com.casic.missiles.modular.util.RiskHttpUtil; +import com.casic.missiles.modular.util.WvpUtil; +import com.casic.missiles.modular.wvp.dto.MvpResponseDTO; + +import java.io.FileInputStream; +import java.security.MessageDigest; +import java.util.Date; +import java.util.HashMap; +import java.util.List; + +public class RiskTest { + public static void main(String[] args) throws Exception { +// File file = new File("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// String task = ZipFileUtil.getZipHandleTask("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(task); +// String md5 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(md5); +// String md52 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241122.zip"); +// System.out.println(md52); + + testDeviceLogin(); + System.out.println( DateUtil.offsetMinute(new Date(),-5)); + } + public static void testDeviceLogin() throws Exception { + Long time = System.currentTimeMillis(); + String str = "FXDDT_" + time; + String pubKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCynMBxzoNBemZKuxjlZzp04Lx/b0j1xRUznBKjlQSATwc+1DaxBpKdT4WfqAuFlSQLA7qLdntXw2cvUEvRxfdjJp2KfZLkEYRmYx3LT51WdCmouQREtMrR6j3mri8jV8TjktGCmBFMKX7eGeQM8O249yVjby6502bzZXehQ707JQIDAQAB"; + String sec = RSAUtils.encrypt(str, pubKey); + System.out.println(sec); + String priKey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALKcwHHOg0F6Zkq7GOVnOnTgvH9vSPXFFTOcEqOVBIBPBz7UNrEGkp1PhZ+oC4WVJAsDuot2e1fDZy9QS9HF92MmnYp9kuQRhGZjHctPnVZ0Kai5BES0ytHqPeauLyNXxOOS0YKYEUwpft4Z5Azw7bj3JWNvLrnTZvNld6FDvTslAgMBAAECgYAqN/kZLYpC+O6i7XSmDO95XwHPUXu6dDpdt5+EQR4OQh/hTwIaeAZB3uEj6vHGQomBfQEkI/5lsU97lIxHanbd+Hro7JyIhsGD5LR5XnZHVKzFiZW62OIU6FI9dlQNN8miiblnmyDwiMA3okaHl0O7qQjZ+IvY2csgmJc7AXpPpQJBAOhrhcfWFcgffj2O6HYNlBLFfbboc/ZzrEADDXKnxRSHlo5o8W+6gylG/L2NGtbag5S68B9VYzdkSQ1++5C+Ws8CQQDEu7h311PLEiKgqzGHpjzadQETmt/jMadaKQmT0TZwNVi6X8lR17U5hF8dAqZzUzr9kUC0HRIZhg4Uv1v3W3fLAkB4YPhxgJjXhjhEefg87Nt8vX1Xdx5Yz6CvpuUYNX0GHRQFvqUOUXQNtQ7CvorgLV1pc0lbcUZqMi8EJnj1hyJRAkEAjHXWm8GiMt+M15fCsi3vTq2xChVOekBuUsHv85iwvGZqJg7ThtpyqlEnM2g7/STUfkvhnXcQACclEI0blTy6BwJAPmFyhU+d0ejVpbc53TdrL2HqYYUHi/tTy/dtUa7lbypzdwwJ2M1Tv5PE8sQxr9tgMbebfxVb/RFKdiCCtzC4ng=="; + String s = RSAUtils.decrypt(sec,priKey); + System.out.println(s); + + + String appId = "5d7d4d81a64f4b8f"; + String publicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB"; + String secret = RiskHttpUtil.encrypt(appId,publicKey); + System.out.println(secret); + String res = RiskHttpUtil.login("http://101.201.36.107:12388",secret); + System.out.println(res); + JSONObject jsonObject = JSON.parseObject(res); + String token = jsonObject.getString("data"); + String resPoint = RiskHttpUtil.pointData("http://101.201.36.107:12388",token); + System.out.println(resPoint); + + + ResponseDataDTO> riskPointRes = JSON.parseObject(resPoint, new TypeReference>>() { + }); + + } + +} diff --git a/casic-web/src/main/resources/doc/20250609.md b/casic-web/src/main/resources/doc/20250609.md new file mode 100644 index 0000000..0cb3464 --- /dev/null +++ b/casic-web/src/main/resources/doc/20250609.md @@ -0,0 +1,30 @@ +## 一、数据库更新 + +1. 设备分组数据库增加 + +``` +ALTER TABLE bus_device_info ADD COLUMN GROUP_ID bigint; + +create table bus_device_group +( + id bigint not null comment '主键', + create_time datetime comment '创建时间', + update_time datetime comment '修改时间', + group_name varchar(255) comment '分组名称', + create_id bigint comment '创建人', + dept_id bigint comment '所属组织' +); + +alter table bus_device_group comment '设备分组管理信息'; + +``` + +casic.tenant.excludes 配置项中增加 bus_device_group + + +casic.no-login-urls 中增加如下配置 +,/sync/risk/dept,/sync/risk/user/list,/sync/risk/device/list + + + + diff --git a/casic-web/src/main/resources/doc/20250624.md b/casic-web/src/main/resources/doc/20250624.md new file mode 100644 index 0000000..7af561d --- /dev/null +++ b/casic-web/src/main/resources/doc/20250624.md @@ -0,0 +1,34 @@ +## 一、数据库更新 + +1. 风险点表添加同步ID + +``` +ALTER TABLE risk_point_info ADD COLUMN TARGET_ID VARCHAR(255); + +``` + +2. 风险点相关配置项 + +casic.risk.open 默认false 不开启 开启需配置true +casic.risk.corn 定时时间 默认0 */5 * * * * 5分钟 +casic.risk.appId 默认 5d7d4d81a64f4b8f 如变更需更改 +casic.risk.publicKey 公钥 默认MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB +casic.risk.host 风险点地址, 默认http://101.201.36.107:12388 生产需更改 + +3. 增加字典值 + hazardLevelName 风险危险等级(706映射) + 1 低风险 + 1 一般风险 + 2 较大风险 + 3 重大风险 + 以上字典值以706风险等级名称对应本系统风险点1 2 3 等级,如果706风险等级名称变更 修改对应字典值名称即可 + +4. 盒子代理服务模块添加 + 增加配置项 + casic.video.box.proxy 192.168.83.37:30064 此处需变更为部署代理nginx的ip及端口,具体配置参见国标级联及代理服务配置说明 + + + + + + diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" new file mode 100644 index 0000000..30cdcbd --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" new file mode 100644 index 0000000..6a0069c --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" new file mode 100644 index 0000000..f775124 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" new file mode 100644 index 0000000..9f65ff1 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" new file mode 100644 index 0000000..613ec69 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" new file mode 100644 index 0000000..1614b04 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" new file mode 100644 index 0000000..3f5083a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" new file mode 100644 index 0000000..134a604 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" new file mode 100644 index 0000000..7edeaa0 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" new file mode 100644 index 0000000..ccd0993 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" new file mode 100644 index 0000000..0cbf80d --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" new file mode 100644 index 0000000..613ec69 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" new file mode 100644 index 0000000..3f5083a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" new file mode 100644 index 0000000..7edeaa0 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image012.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image012.jpg" new file mode 100644 index 0000000..0cbf80d --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image012.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/themedata.thmx" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/themedata.thmx" new file mode 100644 index 0000000..67aae0a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/themedata.thmx" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/colorschememapping.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/colorschememapping.xml" new file mode 100644 index 0000000..6a0069c --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/colorschememapping.xml" @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image001.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image001.png" new file mode 100644 index 0000000..1614b04 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image001.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.gif" new file mode 100644 index 0000000..92bd844 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.png" new file mode 100644 index 0000000..9f65ff1 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.jpg" new file mode 100644 index 0000000..72b5d13 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.png" new file mode 100644 index 0000000..a5af4eb --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.gif" new file mode 100644 index 0000000..b4e65ac --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.jpg" new file mode 100644 index 0000000..b7fe03f --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image005.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image005.png" new file mode 100644 index 0000000..ccd0993 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image005.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image006.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image006.jpg" new file mode 100644 index 0000000..c8ca1b6 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image006.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image007.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image007.gif" new file mode 100644 index 0000000..92bd844 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image007.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image007.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image007.jpg" new file mode 100644 index 0000000..72b5d13 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image007.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image008.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image008.png" new file mode 100644 index 0000000..134a604 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image008.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image009.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image009.gif" new file mode 100644 index 0000000..b4e65ac --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image009.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image009.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image009.jpg" new file mode 100644 index 0000000..c8ca1b6 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image009.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image010.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image010.jpg" new file mode 100644 index 0000000..c8ca1b6 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image010.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image011.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image011.jpg" new file mode 100644 index 0000000..2cee4a1 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image011.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image012.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image012.jpg" new file mode 100644 index 0000000..2cee4a1 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image012.jpg" Binary files differ diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java new file mode 100644 index 0000000..77c14a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceGroupController.java @@ -0,0 +1,111 @@ +package com.casic.missiles.modular.device.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dictmap.DeviceGroupQueryDict; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.vo.BusDeviceGroupVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; + +/** + * 设备分组管理信息Controller + * + * @author lwh + * @date 2025-06-11 + */ +@Api(tags = "设备分组管理信息") +@RestController +@RequestMapping("/device/group") +public class BusDeviceGroupController extends BaseController { + + private final IBusDeviceGroupService busDeviceGroupService; + private final AbstractPermissionContext abstractPermissionContext; + + public BusDeviceGroupController(IBusDeviceGroupService busDeviceGroupService, AbstractPermissionContext abstractPermissionContext) { + this.busDeviceGroupService = busDeviceGroupService; + this.abstractPermissionContext = abstractPermissionContext; + } + + @ApiOperation(value = "列表查询") + @GetMapping(value = "/list") + public ResponseDataDTO> list(BusDeviceGroupVO busDeviceGroupVO) { + QueryWrapper query = busDeviceGroupVO.genQuery(); + return ResponseDataDTO.success(busDeviceGroupService.list(query)); + } + + @ApiOperation(value = "分组树结构查询") + @BussinessLog(value = "分组树结构查询") + @GetMapping(value = "/tree") + public ResponseDataDTO> groupTree() { + List groupDTOList = busDeviceGroupService.groupTree(); + return ResponseDataDTO.success(groupDTOList); + } + + @BussinessLog(value = "设备分组分页查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "分页查询") + @GetMapping(value = "/listPage") + public ResponseDataDTO> listPage(BusDeviceGroupVO busDeviceGroupVO) { + Page page = PageFactory.defaultPage(); + QueryWrapper query = busDeviceGroupVO.genQuery(); + List list = busDeviceGroupService.selectBusDeviceGroupPage(page, query); + page.setRecords(list); + return ResponseDataDTO.success(super.packForBT(page)); + } + + @BussinessLog(value = "设备分组新增", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "新增接口") + @PostMapping(value = "/add") + public ResponseDataDTO add(@RequestBody BusDeviceGroup busDeviceGroup) { + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + busDeviceGroup.setCreateId(user.getId()); + busDeviceGroup.setCreateTime(new Date()); + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.save(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组修改", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @PostMapping(value = "/update") + public ResponseDataDTO update(@RequestBody BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setUpdateTime(new Date()); + busDeviceGroupService.updateById(busDeviceGroup); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组删除", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "删除接口") + @GetMapping(value = "/delete") + public ResponseDataDTO delete(String id) { + busDeviceGroupService.removeById(id); + return ResponseDataDTO.success(); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { + busDeviceGroupService.removeByIds(ids.getIds()); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "设备分组详情查询", key = "deptId,groupName", dict = DeviceGroupQueryDict.class) + @ApiOperation(value = "详情查询") + @GetMapping(value = "/detail") + public ResponseDataDTO detail(String id) { + return ResponseDataDTO.success(busDeviceGroupService.getById(id)); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java new file mode 100644 index 0000000..9d3726f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceGroupMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.device.dao; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import java.util.List; +/** + *

+ * 设备分组管理信息 Mapper 接口 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface BusDeviceGroupMapper extends BaseMapper { +/** +* 设备分组管理信息 分页检索 +*/ +List selectBusDeviceGroupPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml new file mode 100644 index 0000000..a6dd84f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceGroupMapper.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + id + , + create_time as createTime , + update_time as updateTime , + group_name as groupName , + create_id as createId , + dept_id as deptId + + + a + . + id + , + a.create_time + as createTime , + a.update_time + as updateTime , + a.group_name + as groupName , + a.create_id + as createId , + a.dept_id + as deptId + + + + + + and group_name like concat('%',#{request.groupName},'%') + + + and dept_id = #{request.deptId} + + + + \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java new file mode 100644 index 0000000..a821e92 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dictmap/DeviceGroupQueryDict.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dictmap; + +import com.casic.missiles.core.common.constant.dictmap.base.AbstractDictMap; + +public class DeviceGroupQueryDict extends AbstractDictMap { + + @Override + public void init() { + put("id", "主键"); + put("deptId", "所属组织"); + put("groupName", "分组名称"); + + put("deptName", "所属单位"); + } + + @Override + protected void initBeWrapped() { + + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java new file mode 100644 index 0000000..d8d1712 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceGroup.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.device.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + + +/** + * 设备分组管理信息对象 bus_device_group + * + * @author lwh + * @date 2025-06-11 + */ +@Data +@TableName("bus_device_group") +public class BusDeviceGroup extends Model { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键", dataType = "Long") + @TableField("id") + private Long id; + + @ApiModelProperty(value = "创建时间", dataType = "Date") + @TableField("create_time") + private Date createTime; + + @ApiModelProperty(value = "修改时间", dataType = "Date") + @TableField("update_time") + private Date updateTime; + + @ApiModelProperty(value = "分组名称", dataType = "String") + @TableField("group_name") + private String groupName; + + @ApiModelProperty(value = "创建人", dataType = "Long") + @TableField("create_id") + private Long createId; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; + @TableField(exist = false) + private String deptName; + + @Override + public String toString() { + return "BusDeviceGroup{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "groupName=" + groupName + + "createId=" + createId + + "deptId=" + deptId + + "}"; + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java new file mode 100644 index 0000000..d2cee5c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceGroupService.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; + +import java.util.List; + + +/** + *

+ * 设备分组管理信息 服务类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +public interface IBusDeviceGroupService extends IService { + /** + * 设备分组管理信息 分页检索 + */ + List selectBusDeviceGroupPage(Page page, QueryWrapper query); + + /** + * 树结构查询 + * + * @return + */ + List groupTree(); + + DeptDTO convertDeptDTO(BusDeviceGroup group); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java new file mode 100644 index 0000000..a6f08b7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceGroupServiceImpl.java @@ -0,0 +1,139 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractAuthService; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.modular.data.constants.DataConstants; +import com.casic.missiles.modular.device.dao.BusDeviceGroupMapper; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import com.casic.missiles.modular.device.service.IBusDeviceGroupService; +import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; +import com.casic.missiles.modular.system.model.Dept; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +import static com.casic.missiles.modular.data.constants.DataConstants.NODE_TYPE_DEPT; + + +/** + *

+ * 设备分组管理信息 服务实现类 + *

+ * + * @author lwh + * @date 2025-06-11 + */ +@Service +public class BusDeviceGroupServiceImpl extends ServiceImpl implements IBusDeviceGroupService { + @Resource + private AbstractDeptService deptService; + + @Override + public List selectBusDeviceGroupPage(Page page, QueryWrapper query) { + List list = this.baseMapper.selectBusDeviceGroupPage(page, query); + list.forEach(this::wrapperInfo); + return list; + } + + @Override + public List groupTree() { + List deptList = deviceDept(); + + List deptDTOS = new ArrayList<>(); + //树节点根 + List rootIds = new ArrayList<>(); + Set normalIds = new HashSet<>(); + + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setId(dept.getId()); + deptDTO.setPid(dept.getPid()); + deptDTO.setFullName(dept.getFullName()); + deptDTO.setName(dept.getSimpleName()); + deptDTO.setType(NODE_TYPE_DEPT); + + normalIds.add(dept.getId()); + deptDTOS.add(deptDTO); + + + //查询该组织下分组信息 + LambdaQueryWrapper deviceQuery = new LambdaQueryWrapper<>(); + deviceQuery.eq(BusDeviceGroup::getDeptId, deptDTO.getId()); + + deviceQuery.orderByAsc(BusDeviceGroup::getGroupName); + List deviceInfos = this.list(deviceQuery); + List deptDTOList = new ArrayList<>(); + for (BusDeviceGroup group : deviceInfos) { + DeptDTO deptDto = this.convertDeptDTO(group); + deptDTOList.add(deptDto); + } + deptDTO.setChildrenNodes(deptDTOList); + } + + for (DeptDTO deptDTO : deptDTOS) { + if (!normalIds.contains(deptDTO.getPid())) { + rootIds.add(deptDTO.getPid()); + } + } + + //过滤根节点 + DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); + List newTree = new ArrayList<>(); + rootIds = rootIds.stream().distinct().collect(Collectors.toList()); + for (Long rootId : rootIds) { + abstractTreeBuildFactory.setRootId(rootId + ""); + newTree.addAll(abstractTreeBuildFactory.doTreeBuild(deptDTOS)); + } + return newTree; + } + + public DeptDTO convertDeptDTO(BusDeviceGroup group) { + DeptDTO deptDTO = new DeptDTO(); + deptDTO.setType(DataConstants.NODE_TYPE_GROUP); + deptDTO.setId(group.getId()); + deptDTO.setPid(group.getDeptId()); + deptDTO.setName(group.getGroupName()); + deptDTO.setGroup(group); + return deptDTO; + } + + @Resource + private AbstractAuthService authService; + + private List deviceDept() { + //查询可见组织 + DataScope scope = authService.getLoginUserDataScope(); + AuthUser user = authService.getLoginUser(); + + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); + deptQuery.inSql(Dept::getId, "select dept_id from bus_device_info "); + if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums().getCode())) { + deptQuery.in(Dept::getId, scope.getDeptIds()); + } + deptQuery.orderByAsc(Dept::getNum); + + List deptList = deptService.list(deptQuery); + return deptList; + } + + @Override + public List list() { + List list = super.list(); + list.forEach(this::wrapperInfo); + return list; + } + + private void wrapperInfo(BusDeviceGroup busDeviceGroup) { + busDeviceGroup.setDeptName(deptService.getDeptName(busDeviceGroup.getDeptId())); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java new file mode 100644 index 0000000..413d7ac --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/vo/BusDeviceGroupVO.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.device.vo; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.device.model.BusDeviceGroup; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 设备分组管理信息对象VO + * + * @author lwh + * @date 2025-06-11 + */ +@Data +public class BusDeviceGroupVO { + private static final long serialVersionUID = 1L; + + + @ApiModelProperty(value = "分组名称", dataType = "String") + private String groupName; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + private Long deptId; + + public QueryWrapper genQuery() { + QueryWrapper query = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(groupName)) { + query.like("group_name", groupName); + } + if (deptId != null) { + query.eq("dept_id", deptId); + } + return query; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java new file mode 100644 index 0000000..477435e --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dto/risk/SyncRiskDTO.java @@ -0,0 +1,163 @@ +package com.casic.missiles.modular.device.dto.risk; + +import cn.hutool.core.convert.Convert; +import com.casic.missiles.modular.device.model.RiskPointInfo; +import lombok.Data; + +@Data +public class SyncRiskDTO { + /** + * 主键 + */ + private String id; + private String name; + /** + * 重大风险 + * 风险等级 + */ + private String hazardLevel; + /** + * 危险因素 + */ + private String riskFactors; + /** + * 所属单位 + */ + private String affiliatedUnit; + /** + * 所属部门 + */ + private String department; + + /** + * 定员 + */ + private String staffing; + + /** + * 定量 + */ + private String ration; + + /** + * 地理位置 + */ + private String geographicalPosition; + + /** + * 责任人 + */ + private String personLiable; + + /** + * 现场负责人 + */ + private String siteLeader; + + /** + * 主要设备、设施设计制造单位 + */ + private String zysbZzdw; + + /** + * 所在单位 + */ + private String szdw; + + /** + * 作业人数 + */ + private String numberOperators; + + /** + * 主要性能参数 + */ + private String mainPerformanceParameters; + + /** + * 工作环境参数 + */ + private String workingEnvironmentParameters; + + /** + * 安装单位 + */ + private String installationUnit; + + /** + * 投产日期 + */ + private String productionDate; + + /** + * 设备总数 + */ + private String totalEquipment; + + /** + * 备注 + */ + private String note; + + /** + * 创建用户 + */ + private String createUser; + private String createTime; + private String updateUser; + private String updateTime; + /** + * 是否删除0:否;1:是(接口已过滤掉1的数据) + */ + private Integer isDel; + + /** + * 行政区域 + */ + private String xzqy; + /** + * 街道 + */ + private String jdxx; + + /** + * 楼房 + */ + private String loufang; + + /** + * 楼层 + */ + private String louceng; + + /** + * 房间 + */ + private String roomName; + /** + * 所属单位编码 + */ + private String affiliatedUnitsCode; + + /** + * 危险性质 + */ + private String hazardousNature; + + public RiskPointInfo convertToRisk(RiskPointInfo pointInfo) { + //风险点缺少密级 + pointInfo.setSecretLevel("1"); + // hazardLevel 是否有字典值? + + if (department != null) { + pointInfo.setDeptId(Convert.toLong(department)); + } + pointInfo.setNature(hazardousNature); + pointInfo.setRiskName(name); + pointInfo.setAddress(geographicalPosition); + pointInfo.setTargetId(id); + //默认类型为1 + pointInfo.setRiskType(1); + return pointInfo; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java new file mode 100644 index 0000000..08e89a0 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/handler/BoxDefaultHttpHeaderHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.device.handler; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class BoxDefaultHttpHeaderHandler extends DefaultHttpHeaderHandler { + /** + * 代理服务IP + */ + private String xTargetHost; + + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Access-Token", token); + } + if (StrUtil.isNotEmpty(xTargetHost)){ + base.addHeader("X-TARGET-HOST", xTargetHost); + } + } + + public String getXTargetHost() { + return xTargetHost; + } + + public void setXTargetHost(String XTargetHost) { + this.xTargetHost = XTargetHost; + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java new file mode 100644 index 0000000..903e567 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/http/RiskHttpHandler.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.http; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import org.apache.http.client.methods.HttpRequestBase; + +public class RiskHttpHandler extends DefaultHttpHeaderHandler { + public void setHeader(HttpRequestBase base, String token) { + base.addHeader("Content-type", DEFAULT_CONTEXTTYPE); + if (StrUtil.isNotEmpty(token)) { + base.addHeader("Authorization", token); + } + + } +} + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java new file mode 100644 index 0000000..9f75f42 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/task/RiskTask.java @@ -0,0 +1,35 @@ +package com.casic.missiles.modular.task; + +import com.casic.missiles.modular.device.service.IRiskPointInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +@Slf4j +@Component +public class RiskTask { + + @Value("${casic.risk.open:false}") + private Boolean open; + + @Resource + private IRiskPointInfoService riskPointInfoService; + + /** + * 设备信息同步0 + * 每30分钟采集一次 + */ + @Scheduled(cron = "${casic.risk.corn:0 */1 * * * *}") + public void device() { + //风险点数据同步 + if (open) { + log.info("risk sync start...."); + riskPointInfoService.loadRiskInfo(); + log.info("risk sync end...."); + } + } + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java new file mode 100644 index 0000000..e4ca4f1 --- /dev/null +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/util/RiskHttpUtil.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.util; + +import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.modular.http.RiskHttpHandler; +import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler; +import com.casic.missiles.modular.system.utils.HttpUtils; + +import java.util.HashMap; +import java.util.Map; + +public class RiskHttpUtil { + public static final String loginUrl = "/rest/platform/systemLogin"; + public static final String pointDataUrl = "/rest/platform/dangerPointData"; + + public static String login(String baseUrl, String secret) { + Map param = new HashMap<>(); + param.put("secret", secret); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + defaultHeaderHandler.setJson(true); + String res = HttpUtils.sendPost(baseUrl + loginUrl, param, "", defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + public static String pointData(String baseUrl, String token) { + Map param = new HashMap<>(); + DefaultHttpHeaderHandler defaultHeaderHandler = new RiskHttpHandler(); + + String res = HttpUtils.sendGet(baseUrl + pointDataUrl, param, token, defaultHeaderHandler); + if (StrUtil.isEmpty(res)) { + ServiceException serviceException = new ServiceException(CoreExceptionEnum.SERVICE_ERROR); + serviceException.setErrorMessage("风险点获取服务异常,请联系管理员"); + throw serviceException; + } + + return res; + } + + /** + * 登录数据加密 + * @param appId 加密id + * @param publicKey 公钥 + * @return + * @throws Exception + */ + public static String encrypt(String appId,String publicKey) throws Exception { + long ts = System.currentTimeMillis(); + return RSAUtils.encrypt(appId+"_"+ts,publicKey); + } + + +} diff --git a/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java new file mode 100644 index 0000000..9ba1e2a --- /dev/null +++ b/casic-web/src/main/java/com/casic/missiles/test/RiskTest.java @@ -0,0 +1,62 @@ +package com.casic.missiles.test; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.TypeReference; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.risk.SyncRiskDTO; +import com.casic.missiles.modular.device.util.AesUtil; +import com.casic.missiles.modular.util.RiskHttpUtil; +import com.casic.missiles.modular.util.WvpUtil; +import com.casic.missiles.modular.wvp.dto.MvpResponseDTO; + +import java.io.FileInputStream; +import java.security.MessageDigest; +import java.util.Date; +import java.util.HashMap; +import java.util.List; + +public class RiskTest { + public static void main(String[] args) throws Exception { +// File file = new File("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// String task = ZipFileUtil.getZipHandleTask("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(task); +// String md5 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241121.zip"); +// System.out.println(md5); +// String md52 = calculateMD5("C:\\Users\\lwh\\Desktop\\zip\\safe-v5-20241122.zip"); +// System.out.println(md52); + + testDeviceLogin(); + System.out.println( DateUtil.offsetMinute(new Date(),-5)); + } + public static void testDeviceLogin() throws Exception { + Long time = System.currentTimeMillis(); + String str = "FXDDT_" + time; + String pubKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCynMBxzoNBemZKuxjlZzp04Lx/b0j1xRUznBKjlQSATwc+1DaxBpKdT4WfqAuFlSQLA7qLdntXw2cvUEvRxfdjJp2KfZLkEYRmYx3LT51WdCmouQREtMrR6j3mri8jV8TjktGCmBFMKX7eGeQM8O249yVjby6502bzZXehQ707JQIDAQAB"; + String sec = RSAUtils.encrypt(str, pubKey); + System.out.println(sec); + String priKey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALKcwHHOg0F6Zkq7GOVnOnTgvH9vSPXFFTOcEqOVBIBPBz7UNrEGkp1PhZ+oC4WVJAsDuot2e1fDZy9QS9HF92MmnYp9kuQRhGZjHctPnVZ0Kai5BES0ytHqPeauLyNXxOOS0YKYEUwpft4Z5Azw7bj3JWNvLrnTZvNld6FDvTslAgMBAAECgYAqN/kZLYpC+O6i7XSmDO95XwHPUXu6dDpdt5+EQR4OQh/hTwIaeAZB3uEj6vHGQomBfQEkI/5lsU97lIxHanbd+Hro7JyIhsGD5LR5XnZHVKzFiZW62OIU6FI9dlQNN8miiblnmyDwiMA3okaHl0O7qQjZ+IvY2csgmJc7AXpPpQJBAOhrhcfWFcgffj2O6HYNlBLFfbboc/ZzrEADDXKnxRSHlo5o8W+6gylG/L2NGtbag5S68B9VYzdkSQ1++5C+Ws8CQQDEu7h311PLEiKgqzGHpjzadQETmt/jMadaKQmT0TZwNVi6X8lR17U5hF8dAqZzUzr9kUC0HRIZhg4Uv1v3W3fLAkB4YPhxgJjXhjhEefg87Nt8vX1Xdx5Yz6CvpuUYNX0GHRQFvqUOUXQNtQ7CvorgLV1pc0lbcUZqMi8EJnj1hyJRAkEAjHXWm8GiMt+M15fCsi3vTq2xChVOekBuUsHv85iwvGZqJg7ThtpyqlEnM2g7/STUfkvhnXcQACclEI0blTy6BwJAPmFyhU+d0ejVpbc53TdrL2HqYYUHi/tTy/dtUa7lbypzdwwJ2M1Tv5PE8sQxr9tgMbebfxVb/RFKdiCCtzC4ng=="; + String s = RSAUtils.decrypt(sec,priKey); + System.out.println(s); + + + String appId = "5d7d4d81a64f4b8f"; + String publicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB"; + String secret = RiskHttpUtil.encrypt(appId,publicKey); + System.out.println(secret); + String res = RiskHttpUtil.login("http://101.201.36.107:12388",secret); + System.out.println(res); + JSONObject jsonObject = JSON.parseObject(res); + String token = jsonObject.getString("data"); + String resPoint = RiskHttpUtil.pointData("http://101.201.36.107:12388",token); + System.out.println(resPoint); + + + ResponseDataDTO> riskPointRes = JSON.parseObject(resPoint, new TypeReference>>() { + }); + + } + +} diff --git a/casic-web/src/main/resources/doc/20250609.md b/casic-web/src/main/resources/doc/20250609.md new file mode 100644 index 0000000..0cb3464 --- /dev/null +++ b/casic-web/src/main/resources/doc/20250609.md @@ -0,0 +1,30 @@ +## 一、数据库更新 + +1. 设备分组数据库增加 + +``` +ALTER TABLE bus_device_info ADD COLUMN GROUP_ID bigint; + +create table bus_device_group +( + id bigint not null comment '主键', + create_time datetime comment '创建时间', + update_time datetime comment '修改时间', + group_name varchar(255) comment '分组名称', + create_id bigint comment '创建人', + dept_id bigint comment '所属组织' +); + +alter table bus_device_group comment '设备分组管理信息'; + +``` + +casic.tenant.excludes 配置项中增加 bus_device_group + + +casic.no-login-urls 中增加如下配置 +,/sync/risk/dept,/sync/risk/user/list,/sync/risk/device/list + + + + diff --git a/casic-web/src/main/resources/doc/20250624.md b/casic-web/src/main/resources/doc/20250624.md new file mode 100644 index 0000000..7af561d --- /dev/null +++ b/casic-web/src/main/resources/doc/20250624.md @@ -0,0 +1,34 @@ +## 一、数据库更新 + +1. 风险点表添加同步ID + +``` +ALTER TABLE risk_point_info ADD COLUMN TARGET_ID VARCHAR(255); + +``` + +2. 风险点相关配置项 + +casic.risk.open 默认false 不开启 开启需配置true +casic.risk.corn 定时时间 默认0 */5 * * * * 5分钟 +casic.risk.appId 默认 5d7d4d81a64f4b8f 如变更需更改 +casic.risk.publicKey 公钥 默认MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBd623jjAPNqOaabM7adkbUZL0qK3ojfHj9D2EF7Lql4vTtboKjhBhaehOoKP2kEuAjsMw8lF57SwFUM3Xt/GC46un2g21Q9sFxdKYp1EdyeXgPH73VgC27RAqqtnbQBDhKrBfFWXx3lT9hsje6gQ8msd1cwIFQgE0HA7frSgWIHWJ5vvjAMZ/4t3iUbe2iaz46BnxN3achbNil8MxSYET8RQVN0TsicGbFFgIH1z5e507c89kt6XPEKg5c5xLvkmclAUnwD51/lSUBn2tnHfW71EkGtABlQAj/e3zng2lemAhHmb2ouPFHdsNhp4/S97yrzgQwGdLA9C+PDw5PSGQIDAQAB +casic.risk.host 风险点地址, 默认http://101.201.36.107:12388 生产需更改 + +3. 增加字典值 + hazardLevelName 风险危险等级(706映射) + 1 低风险 + 1 一般风险 + 2 较大风险 + 3 重大风险 + 以上字典值以706风险等级名称对应本系统风险点1 2 3 等级,如果706风险等级名称变更 修改对应字典值名称即可 + +4. 盒子代理服务模块添加 + 增加配置项 + casic.video.box.proxy 192.168.83.37:30064 此处需变更为部署代理nginx的ip及端口,具体配置参见国标级联及代理服务配置说明 + + + + + + diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" new file mode 100644 index 0000000..30cdcbd --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.doc" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" new file mode 100644 index 0000000..6a0069c --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/colorschememapping.xml" @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" new file mode 100644 index 0000000..f775124 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/filelist.xml" @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" new file mode 100644 index 0000000..9f65ff1 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image001.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" new file mode 100644 index 0000000..613ec69 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image002.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" new file mode 100644 index 0000000..1614b04 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image003.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" new file mode 100644 index 0000000..3f5083a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image004.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" new file mode 100644 index 0000000..134a604 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image005.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" new file mode 100644 index 0000000..7edeaa0 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image006.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" new file mode 100644 index 0000000..ccd0993 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image007.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" new file mode 100644 index 0000000..0cbf80d --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image008.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" new file mode 100644 index 0000000..613ec69 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image009.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" new file mode 100644 index 0000000..3f5083a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image010.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" new file mode 100644 index 0000000..7edeaa0 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image011.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image012.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image012.jpg" new file mode 100644 index 0000000..0cbf80d --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/image012.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/themedata.thmx" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/themedata.thmx" new file mode 100644 index 0000000..67aae0a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\345\217\212\344\273\243\347\220\206\346\234\215\345\212\241\351\205\215\347\275\256\350\257\264\346\230\216.files/themedata.thmx" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/colorschememapping.xml" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/colorschememapping.xml" new file mode 100644 index 0000000..6a0069c --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/colorschememapping.xml" @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image001.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image001.png" new file mode 100644 index 0000000..1614b04 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image001.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.gif" new file mode 100644 index 0000000..92bd844 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.png" new file mode 100644 index 0000000..9f65ff1 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image002.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.jpg" new file mode 100644 index 0000000..72b5d13 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.png" new file mode 100644 index 0000000..a5af4eb --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image003.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.gif" new file mode 100644 index 0000000..b4e65ac --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.jpg" new file mode 100644 index 0000000..b7fe03f --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image004.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image005.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image005.png" new file mode 100644 index 0000000..ccd0993 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image005.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image006.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image006.jpg" new file mode 100644 index 0000000..c8ca1b6 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image006.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image007.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image007.gif" new file mode 100644 index 0000000..92bd844 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image007.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image007.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image007.jpg" new file mode 100644 index 0000000..72b5d13 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image007.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image008.png" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image008.png" new file mode 100644 index 0000000..134a604 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image008.png" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image009.gif" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image009.gif" new file mode 100644 index 0000000..b4e65ac --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image009.gif" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image009.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image009.jpg" new file mode 100644 index 0000000..c8ca1b6 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image009.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image010.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image010.jpg" new file mode 100644 index 0000000..c8ca1b6 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image010.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image011.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image011.jpg" new file mode 100644 index 0000000..2cee4a1 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image011.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image012.jpg" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image012.jpg" new file mode 100644 index 0000000..2cee4a1 --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/image012.jpg" Binary files differ diff --git "a/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/themedata.thmx" "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/themedata.thmx" new file mode 100644 index 0000000..67aae0a --- /dev/null +++ "b/casic-web/src/main/resources/doc/\345\216\206\345\217\262\346\233\264\346\226\260/\345\233\275\346\240\207\347\272\247\350\201\224\351\205\215\347\275\256\346\226\207\346\241\243.files/themedata.thmx" Binary files differ