From be7002153c72cd23d0b32fd69d1091f3ab7726d5 Mon Sep 17 00:00:00 2001 From: 15683799673 Date: Fri, 11 Jul 2025 07:37:41 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=88=E6=9D=83=E9=80=BB=E8=BE=91=E6=9B=B4?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SisAccessControlDeviceController.java | 112 ------------- .../controller/SisAuthRecordController.java | 19 +++ .../controller/SisDeviceManageController.java | 43 +++-- .../sis/domain/SisAccessControlDevice.java | 75 --------- .../org/dromara/sis/domain/SisAuthRecord.java | 5 - .../domain/bo/AccessControlLibDeviceBo.java | 3 +- .../org/dromara/sis/domain/bo/AuthLibBo.java | 22 +++ .../domain/bo/SisAccessControlDeviceBo.java | 75 --------- .../sis/domain/bo/SisElevatorInfoBo.java | 20 +++ .../domain/vo/SisAccessControlDeviceVo.java | 94 ----------- .../sis/domain/vo/SisAccessControlVo.java | 5 + .../sis/domain/vo/SisDeviceManageVo.java | 2 + .../sis/domain/vo/SisElevatorInfoVo.java | 20 ++- .../mapper/SisAccessControlDeviceMapper.java | 15 -- .../sis/mapper/SisAccessControlMapper.java | 3 +- .../ISisAccessControlDeviceService.java | 76 --------- .../sis/service/ISisAuthRecordService.java | 13 ++ .../sis/service/ISisDeviceBindRefService.java | 17 ++ .../sis/service/ISisDeviceManageService.java | 17 ++ .../SisAccessControlDeviceServiceImpl.java | 152 ------------------ .../impl/SisAccessControlServiceImpl.java | 18 ++- .../impl/SisAuthRecordServiceImpl.java | 56 +++++-- .../impl/SisDeviceBindRefServiceImpl.java | 21 +++ .../impl/SisDeviceManageServiceImpl.java | 43 ++++- .../impl/SisElevatorInfoServiceImpl.java | 89 +++++++++- .../impl/SisLibDeviceRefServiceImpl.java | 1 - .../sis/SisAccessControlDeviceMapper.xml | 7 - .../mapper/sis/SisAccessControlMapper.xml | 11 ++ 28 files changed, 368 insertions(+), 666 deletions(-) delete mode 100644 ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/SisAccessControlDeviceController.java delete mode 100644 ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisAccessControlDevice.java create mode 100644 ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/AuthLibBo.java delete mode 100644 ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisAccessControlDeviceBo.java delete mode 100644 ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisAccessControlDeviceVo.java delete mode 100644 ruoyi-modules/Sis/src/main/java/org/dromara/sis/mapper/SisAccessControlDeviceMapper.java delete mode 100644 ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisAccessControlDeviceService.java delete mode 100644 ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAccessControlDeviceServiceImpl.java delete mode 100644 ruoyi-modules/Sis/src/main/resources/mapper/sis/SisAccessControlDeviceMapper.xml diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/SisAccessControlDeviceController.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/SisAccessControlDeviceController.java deleted file mode 100644 index 6c0bc6c6..00000000 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/SisAccessControlDeviceController.java +++ /dev/null @@ -1,112 +0,0 @@ -package org.dromara.sis.controller; - -import java.util.List; - -import lombok.RequiredArgsConstructor; -import jakarta.servlet.http.HttpServletResponse; -import jakarta.validation.constraints.*; -import cn.dev33.satoken.annotation.SaCheckPermission; -import org.springframework.web.bind.annotation.*; -import org.springframework.validation.annotation.Validated; -import org.dromara.common.idempotent.annotation.RepeatSubmit; -import org.dromara.common.log.annotation.Log; -import org.dromara.common.web.core.BaseController; -import org.dromara.common.mybatis.core.page.PageQuery; -import org.dromara.common.core.domain.R; -import org.dromara.common.core.validate.AddGroup; -import org.dromara.common.core.validate.EditGroup; -import org.dromara.common.log.enums.BusinessType; -import org.dromara.common.excel.utils.ExcelUtil; -import org.dromara.sis.domain.vo.SisAccessControlDeviceVo; -import org.dromara.sis.domain.bo.SisAccessControlDeviceBo; -import org.dromara.sis.service.ISisAccessControlDeviceService; -import org.dromara.common.mybatis.core.page.TableDataInfo; - -/** - * 门禁设备 - * 前端访问路由地址为:/sis/accessControlDevice - * - * @author mocheng - * @date 2025-06-25 - */ -@Validated -@RequiredArgsConstructor -@RestController -@RequestMapping("/accessControlDevice") -public class SisAccessControlDeviceController extends BaseController { - - private final ISisAccessControlDeviceService sisAccessControlDeviceService; - - /** - * 查询门禁设备列表 - */ - @SaCheckPermission("sis:accessControlDevice:list") - @GetMapping("/list") - public TableDataInfo list(SisAccessControlDeviceBo bo, PageQuery pageQuery) { - return sisAccessControlDeviceService.queryPageList(bo, pageQuery); - } - - @GetMapping("/list/{factoryNo}") - public R> queryListByFactoryNo(@PathVariable("factoryNo") String factoryNo) { - return R.ok(sisAccessControlDeviceService.queryListByFactoryNo(factoryNo)); - } - - - /** - * 导出门禁设备列表 - */ - @SaCheckPermission("sis:accessControlDevice:export") - @Log(title = "门禁设备", businessType = BusinessType.EXPORT) - @PostMapping("/export") - public void export(SisAccessControlDeviceBo bo, HttpServletResponse response) { - List list = sisAccessControlDeviceService.queryList(bo); - ExcelUtil.exportExcel(list, "门禁设备", SisAccessControlDeviceVo.class, response); - } - - /** - * 获取门禁设备详细信息 - * - * @param id 主键 - */ - @SaCheckPermission("sis:accessControlDevice:query") - @GetMapping("/{id}") - public R getInfo(@NotNull(message = "主键不能为空") - @PathVariable("id") Long id) { - return R.ok(sisAccessControlDeviceService.queryById(id)); - } - - /** - * 新增门禁设备 - */ - @SaCheckPermission("sis:accessControlDevice:add") - @Log(title = "门禁设备", businessType = BusinessType.INSERT) - @RepeatSubmit() - @PostMapping() - public R add(@Validated(AddGroup.class) @RequestBody SisAccessControlDeviceBo bo) { - return toAjax(sisAccessControlDeviceService.insertByBo(bo)); - } - - /** - * 修改门禁设备 - */ - @SaCheckPermission("sis:accessControlDevice:edit") - @Log(title = "门禁设备", businessType = BusinessType.UPDATE) - @RepeatSubmit() - @PutMapping() - public R edit(@Validated(EditGroup.class) @RequestBody SisAccessControlDeviceBo bo) { - return toAjax(sisAccessControlDeviceService.updateByBo(bo)); - } - - /** - * 删除门禁设备 - * - * @param ids 主键串 - */ - @SaCheckPermission("sis:accessControlDevice:remove") - @Log(title = "门禁设备", businessType = BusinessType.DELETE) - @DeleteMapping("/{ids}") - public R remove(@NotEmpty(message = "主键不能为空") - @PathVariable("ids") Long[] ids) { - return toAjax(sisAccessControlDeviceService.deleteWithValidByIds(List.of(ids), true)); - } -} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/SisAuthRecordController.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/SisAuthRecordController.java index d7fca73f..11884c91 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/SisAuthRecordController.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/SisAuthRecordController.java @@ -15,6 +15,8 @@ import org.dromara.common.log.enums.BusinessType; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.web.core.BaseController; +import org.dromara.sis.domain.SisAuthRecord; +import org.dromara.sis.domain.bo.AuthLibBo; import org.dromara.sis.domain.bo.SingleAuthRecordBo; import org.dromara.sis.domain.bo.SisAuthRecordBo; import org.dromara.sis.domain.vo.SisAuthRecordVo; @@ -117,4 +119,21 @@ public class SisAuthRecordController extends BaseController { @PathVariable("ids") Long[] ids) { return toAjax(sisAuthRecordService.deleteWithValidByIds(List.of(ids), true)); } + + /** + * 删除授权记录 + * + * @param bo 授权信息 + */ + @SaCheckPermission("sis:authRecord:authLib") + @Log(title = "人员库授权", businessType = BusinessType.INSERT) + @PostMapping("/authLib") + public R authLib(@Validated @RequestBody AuthLibBo bo) { + return toAjax(sisAuthRecordService.authLib(bo)); + } + + @GetMapping("/authDevice/{libId}") + public R> queryAuthDevice(@PathVariable("libId") String libId) { + return R.ok(sisAuthRecordService.queryAuthDevice(libId)); + } } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/SisDeviceManageController.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/SisDeviceManageController.java index 2320f961..5f996790 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/SisDeviceManageController.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/SisDeviceManageController.java @@ -1,33 +1,35 @@ package org.dromara.sis.controller; -import java.util.List; - -import lombok.RequiredArgsConstructor; -import jakarta.servlet.http.HttpServletResponse; -import jakarta.validation.constraints.*; import cn.dev33.satoken.annotation.SaCheckPermission; -import org.springframework.web.bind.annotation.*; -import org.springframework.validation.annotation.Validated; -import org.dromara.common.idempotent.annotation.RepeatSubmit; -import org.dromara.common.log.annotation.Log; -import org.dromara.common.web.core.BaseController; -import org.dromara.common.mybatis.core.page.PageQuery; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.RequiredArgsConstructor; import org.dromara.common.core.domain.R; +import org.dromara.common.core.domain.TreeNode; import org.dromara.common.core.validate.AddGroup; import org.dromara.common.core.validate.EditGroup; -import org.dromara.common.log.enums.BusinessType; import org.dromara.common.excel.utils.ExcelUtil; -import org.dromara.sis.domain.vo.SisDeviceManageVo; -import org.dromara.sis.domain.bo.SisDeviceManageBo; -import org.dromara.sis.service.ISisDeviceManageService; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.web.core.BaseController; +import org.dromara.sis.domain.bo.SisDeviceManageBo; +import org.dromara.sis.domain.vo.SisDeviceManageVo; +import org.dromara.sis.service.ISisDeviceManageService; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; /** * 设备管理 * 前端访问路由地址为:/system/deviceManage * * @author mocheng - * @since 2025-06-26 + * @since 2025-06-26 */ @Validated @RequiredArgsConstructor @@ -65,7 +67,7 @@ public class SisDeviceManageController extends BaseController { @SaCheckPermission("sis:deviceManage:query") @GetMapping("/{id}") public R getInfo(@NotNull(message = "主键不能为空") - @PathVariable("id") Long id) { + @PathVariable("id") Long id) { return R.ok(sisDeviceManageService.queryById(id)); } @@ -103,4 +105,11 @@ public class SisDeviceManageController extends BaseController { @PathVariable("ids") Long[] ids) { return toAjax(sisDeviceManageService.deleteWithValidByIds(List.of(ids), true)); } + + @GetMapping("/tree") + public R>> tree() { + return R.ok(sisDeviceManageService.tree()); + } + + } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisAccessControlDevice.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisAccessControlDevice.java deleted file mode 100644 index 44b5a1a7..00000000 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisAccessControlDevice.java +++ /dev/null @@ -1,75 +0,0 @@ -package org.dromara.sis.domain; - -import org.dromara.common.tenant.core.TenantEntity; -import com.baomidou.mybatisplus.annotation.*; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.io.Serial; - -/** - * 门禁设备对象 sis_access_control_device - * - * @author mocheng - * @date 2025-06-25 - */ -@Data -@EqualsAndHashCode(callSuper = true) -@TableName("sis_access_control_device") -public class SisAccessControlDevice extends TenantEntity { - - @Serial - private static final long serialVersionUID = 1L; - - /** - * 主键id - */ - @TableId(value = "id") - private Long id; - - /** - * 设备编码 - */ - private String eqpNo; - - /** - * 设备名称 - */ - private String eqpName; - - /** - * 厂商编码 - */ - private String factoryNo; - - /** - * 设备类型 - */ - private Long eqpType; - - /** - * 接入类型(1: 平台接入,2:设备接入) - */ - private Long accessType; - - /** - * 设备ip - */ - private String eqpIp; - - /** - * 设备端口 - */ - private Integer eqpPort; - - /** - * 设备账号 - */ - private String eqpAccount; - - /** - * 设备密码 - */ - private String eqpPwd; - -} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisAuthRecord.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisAuthRecord.java index 04794110..729b027d 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisAuthRecord.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisAuthRecord.java @@ -47,11 +47,6 @@ public class SisAuthRecord extends TenantEntity { */ private Long eqbId; - /** - * E8权限ID - */ - private Long remoteAuthId; - /* 门id */ diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/AccessControlLibDeviceBo.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/AccessControlLibDeviceBo.java index a39a7208..62f8ead4 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/AccessControlLibDeviceBo.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/AccessControlLibDeviceBo.java @@ -8,9 +8,8 @@ import lombok.EqualsAndHashCode; * * @author lxj */ -@EqualsAndHashCode(callSuper = true) @Data -public class AccessControlLibDeviceBo extends SisAccessControlDeviceBo { +public class AccessControlLibDeviceBo { private Integer eqpLibId; diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/AuthLibBo.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/AuthLibBo.java new file mode 100644 index 00000000..a8373f3b --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/AuthLibBo.java @@ -0,0 +1,22 @@ +package org.dromara.sis.domain.bo; + +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.util.List; + +/** + * 人像库授权 + * + * @author lxj + */ +@Data +public class AuthLibBo { + + @NotNull(message = "人像库id不能为空") + private Long libId; + + @NotNull(message = "设备列表不能为空") + private List deviceIds; + +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisAccessControlDeviceBo.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisAccessControlDeviceBo.java deleted file mode 100644 index a2b729d0..00000000 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisAccessControlDeviceBo.java +++ /dev/null @@ -1,75 +0,0 @@ -package org.dromara.sis.domain.bo; - -import io.github.linpeilie.annotations.AutoMapper; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotNull; -import lombok.Data; -import lombok.EqualsAndHashCode; -import org.dromara.common.core.validate.AddGroup; -import org.dromara.common.core.validate.EditGroup; -import org.dromara.common.mybatis.core.domain.BaseEntity; -import org.dromara.sis.domain.SisAccessControlDevice; - -/** - * 门禁设备业务对象 sis_access_control_device - * - * @author mocheng - * @date 2025-06-25 - */ -@Data -@EqualsAndHashCode(callSuper = true) -@AutoMapper(target = SisAccessControlDevice.class, reverseConvertGenerate = false) -public class SisAccessControlDeviceBo extends BaseEntity { - - /** - * 主键id - */ - @NotNull(message = "主键id不能为空", groups = {EditGroup.class}) - private Long id; - - /** - * 设备名称 - */ - @NotBlank(message = "设备名称不能为空", groups = {AddGroup.class, EditGroup.class}) - private String eqpName; - - /** - * 厂商编码 - */ - private String factoryNo; - - /** - * 设备类型 - */ - private Integer eqpType; - - /** - * 接入类型(1: 平台接入,2:设备接入) - */ - private Integer accessType; - - /** - * 设备ip - */ - @NotBlank(message = "设备ip不能为空", groups = {AddGroup.class, EditGroup.class}) - private String eqpIp; - - /** - * 设备端口 - */ - @NotNull(message = "设备端口不能为空", groups = {AddGroup.class, EditGroup.class}) - private Integer eqpPort; - - /** - * 设备账号 - */ - @NotBlank(message = "设备账号不能为空", groups = {AddGroup.class, EditGroup.class}) - private String eqpAccount; - - /** - * 设备密码 - */ - @NotBlank(message = "设备密码不能为空", groups = {AddGroup.class, EditGroup.class}) - private String eqpPwd; - -} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisElevatorInfoBo.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisElevatorInfoBo.java index accc46af..3f132a81 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisElevatorInfoBo.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisElevatorInfoBo.java @@ -11,6 +11,7 @@ import org.dromara.common.mybatis.core.domain.BaseEntity; import org.dromara.sis.domain.SisElevatorInfo; import java.util.Date; +import java.util.List; /** * 电梯基本信息业务对象 sis_elevator_info @@ -141,4 +142,23 @@ public class SisElevatorInfoBo extends BaseEntity { */ @NotNull(message = "不能为空", groups = {AddGroup.class, EditGroup.class}) private Long unitId; + + /** + * 绑定的远程呼梯设备 + */ + private List remoteCallElevatorDeviceId; + + /** + * 绑定梯控时设备 + */ + private DeviceInfo elevatorControlDeviceId; + + + @Data + public static class DeviceInfo { + private Long deviceId; + private String deviceIp; + } + + } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisAccessControlDeviceVo.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisAccessControlDeviceVo.java deleted file mode 100644 index 6913aac6..00000000 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisAccessControlDeviceVo.java +++ /dev/null @@ -1,94 +0,0 @@ -package org.dromara.sis.domain.vo; - -import cn.idev.excel.annotation.ExcelIgnoreUnannotated; -import cn.idev.excel.annotation.ExcelProperty; -import io.github.linpeilie.annotations.AutoMapper; -import lombok.Data; -import org.dromara.common.translation.annotation.Translation; -import org.dromara.common.translation.constant.TransConstant; -import org.dromara.sis.domain.SisAccessControlDevice; - -import java.io.Serial; -import java.io.Serializable; - - - -/** - * 门禁设备视图对象 sis_access_control_device - * - * @author mocheng - * @date 2025-06-25 - */ -@Data -@ExcelIgnoreUnannotated -@AutoMapper(target = SisAccessControlDevice.class) -public class SisAccessControlDeviceVo implements Serializable { - - @Serial - private static final long serialVersionUID = 1L; - - /** - * 主键id - */ - @ExcelProperty(value = "主键id") - private Long id; - - /** - * 设备编码 - */ - @ExcelProperty(value = "设备编码") - private String eqpNo; - - /** - * 设备名称 - */ - @ExcelProperty(value = "设备名称") - private String eqpName; - - /** - * 厂商编码 - */ - @ExcelProperty(value = "厂商编码") - private String factoryNo; - - @Translation(type = TransConstant.DICT_TYPE_TO_LABEL, mapper = "factoryNo", other = "sis_access_control_device_type") - private String factoryName; - - /** - * 设备类型 - */ - @ExcelProperty(value = "设备类型") - private Long eqpType; - - /** - * 接入类型(1: 平台接入,2:设备接入) - */ - @ExcelProperty(value = "接入类型(1: 平台接入,2:设备接入)") - private Long accessType; - - /** - * 设备ip - */ - @ExcelProperty(value = "设备ip") - private String eqpIp; - - /** - * 设备端口 - */ - @ExcelProperty(value = "设备端口") - private Integer eqpPort; - - /** - * 设备账号 - */ - @ExcelProperty(value = "设备账号") - private String eqpAccount; - - /** - * 设备密码 - */ - @ExcelProperty(value = "设备密码") - private String eqpPwd; - - -} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisAccessControlVo.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisAccessControlVo.java index 08ed4e17..864abcaa 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisAccessControlVo.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisAccessControlVo.java @@ -104,4 +104,9 @@ public class SisAccessControlVo implements Serializable { */ @ExcelProperty(value = "外部编码") private String outCode; + + private String bindDeviceId; + + private String bindDeviceIp; + } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisDeviceManageVo.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisDeviceManageVo.java index fd1c6163..bc299258 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisDeviceManageVo.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisDeviceManageVo.java @@ -98,4 +98,6 @@ public class SisDeviceManageVo implements Serializable { */ private String channelNo; + private String bindDeviceId; + } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisElevatorInfoVo.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisElevatorInfoVo.java index 308aebf2..7a479510 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisElevatorInfoVo.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisElevatorInfoVo.java @@ -1,19 +1,15 @@ package org.dromara.sis.domain.vo; -import java.util.Date; -import com.fasterxml.jackson.annotation.JsonFormat; -import org.dromara.sis.domain.SisElevatorInfo; import cn.idev.excel.annotation.ExcelIgnoreUnannotated; import cn.idev.excel.annotation.ExcelProperty; -import org.dromara.common.excel.annotation.ExcelDictFormat; -import org.dromara.common.excel.convert.ExcelDictConvert; import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; +import org.dromara.sis.domain.SisElevatorInfo; import java.io.Serial; import java.io.Serializable; import java.util.Date; - +import java.util.List; /** @@ -159,4 +155,16 @@ public class SisElevatorInfoVo implements Serializable { * 单元编码 */ private Long unitId; + + /** + * 呼梯摄像头 + */ + private List remoteCallElevatorDeviceId; + + /** + * 梯控摄像头 + */ + private Long elevatorControlDeviceId; + + } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/mapper/SisAccessControlDeviceMapper.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/mapper/SisAccessControlDeviceMapper.java deleted file mode 100644 index 30079632..00000000 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/mapper/SisAccessControlDeviceMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package org.dromara.sis.mapper; - -import org.dromara.sis.domain.SisAccessControlDevice; -import org.dromara.sis.domain.vo.SisAccessControlDeviceVo; -import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; - -/** - * 门禁设备Mapper接口 - * - * @author mocheng - * @date 2025-06-25 - */ -public interface SisAccessControlDeviceMapper extends BaseMapperPlus { - -} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/mapper/SisAccessControlMapper.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/mapper/SisAccessControlMapper.java index ac3ea8a5..6a593fd7 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/mapper/SisAccessControlMapper.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/mapper/SisAccessControlMapper.java @@ -1,8 +1,8 @@ package org.dromara.sis.mapper; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; import org.dromara.sis.domain.SisAccessControl; import org.dromara.sis.domain.vo.SisAccessControlVo; -import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; /** * 门禁设备Mapper接口 @@ -12,4 +12,5 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; */ public interface SisAccessControlMapper extends BaseMapperPlus { + SisAccessControlVo queryById(Long id); } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisAccessControlDeviceService.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisAccessControlDeviceService.java deleted file mode 100644 index 8e3bf7b1..00000000 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisAccessControlDeviceService.java +++ /dev/null @@ -1,76 +0,0 @@ -package org.dromara.sis.service; - -import org.dromara.common.mybatis.core.page.PageQuery; -import org.dromara.common.mybatis.core.page.TableDataInfo; -import org.dromara.sis.domain.bo.SisAccessControlDeviceBo; -import org.dromara.sis.domain.vo.SisAccessControlDeviceVo; - -import java.util.Collection; -import java.util.List; - -/** - * 门禁设备Service接口 - * - * @author mocheng - * @date 2025-06-25 - */ -public interface ISisAccessControlDeviceService { - - /** - * 查询门禁设备 - * - * @param id 主键 - * @return 门禁设备 - */ - SisAccessControlDeviceVo queryById(Long id); - - /** - * 分页查询门禁设备列表 - * - * @param bo 查询条件 - * @param pageQuery 分页参数 - * @return 门禁设备分页列表 - */ - TableDataInfo queryPageList(SisAccessControlDeviceBo bo, PageQuery pageQuery); - - /** - * 查询符合条件的门禁设备列表 - * - * @param bo 查询条件 - * @return 门禁设备列表 - */ - List queryList(SisAccessControlDeviceBo bo); - - /** - * 新增门禁设备 - * - * @param bo 门禁设备 - * @return 是否新增成功 - */ - Boolean insertByBo(SisAccessControlDeviceBo bo); - - /** - * 修改门禁设备 - * - * @param bo 门禁设备 - * @return 是否修改成功 - */ - Boolean updateByBo(SisAccessControlDeviceBo bo); - - /** - * 校验并批量删除门禁设备信息 - * - * @param ids 待删除的主键集合 - * @param isValid 是否进行有效性校验 - * @return 是否删除成功 - */ - Boolean deleteWithValidByIds(Collection ids, Boolean isValid); - - /** - * 根据factoryNo 查询设备列表 - * - * @param factoryNo 厂商编号 - * @return 返回设备列表 - */ - List queryListByFactoryNo(String factoryNo); -} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisAuthRecordService.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisAuthRecordService.java index ed1cb45a..c38079d5 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisAuthRecordService.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisAuthRecordService.java @@ -2,6 +2,8 @@ package org.dromara.sis.service; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.sis.domain.SisAuthRecord; +import org.dromara.sis.domain.bo.AuthLibBo; import org.dromara.sis.domain.bo.SingleAuthRecordBo; import org.dromara.sis.domain.bo.SisAuthRecordBo; import org.dromara.sis.domain.vo.SisAuthRecordVo; @@ -83,4 +85,15 @@ public interface ISisAuthRecordService { * @return 是否授权成功 */ Boolean singleAuth(SingleAuthRecordBo bo); + + Boolean deleteByLibId(Long libId); + + Boolean authLib(AuthLibBo bo); + + /** + * 插叙库id授权的设备 + * @param libId 人像库id + * @return + */ + List queryAuthDevice(String libId); } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisDeviceBindRefService.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisDeviceBindRefService.java index 66161e42..d47a2f8f 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisDeviceBindRefService.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisDeviceBindRefService.java @@ -77,8 +77,25 @@ public interface ISisDeviceBindRefService { /** * 通过ip查询设备关联关系 + * * @param ipcAddr 设备ip * @return 返回关联关系表 */ SisDeviceBindRef queryByDeviceIp(String ipcAddr); + + /** + * 批量写入设备绑定关系 + * + * @param ls 写入数据 + */ + Boolean batchInsert(List ls); + + Boolean deleteByBindId(Long elevatorId); + + /** + * 通过电梯id 查询绑定的设备关系 + * @param elevatorId 电梯id + * @return 返回绑定设备列表 + */ + List queryByBindId(Long elevatorId); } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisDeviceManageService.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisDeviceManageService.java index 3d8859d9..218b1b03 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisDeviceManageService.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisDeviceManageService.java @@ -1,7 +1,9 @@ package org.dromara.sis.service; +import org.dromara.common.core.domain.TreeNode; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.sis.domain.SisDeviceManage; import org.dromara.sis.domain.bo.SisDeviceManageBo; import org.dromara.sis.domain.vo.SisDeviceManageVo; @@ -73,4 +75,19 @@ public interface ISisDeviceManageService { * @return 设备信息 */ SisDeviceManageVo queryVoByDeviceIp(Integer deviceCode); + + /** + * 查询设备数 + * + * @return + */ + List> tree(); + + + /** + * 通过设备id列表查询设备信息 + * @param deviceIds 设备id列表 + * @return 返回设备报表 + */ + List queryByIds(List deviceIds); } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAccessControlDeviceServiceImpl.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAccessControlDeviceServiceImpl.java deleted file mode 100644 index 11400bdb..00000000 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAccessControlDeviceServiceImpl.java +++ /dev/null @@ -1,152 +0,0 @@ -package org.dromara.sis.service.impl; - -import cn.hutool.core.util.IdUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import lombok.extern.slf4j.Slf4j; -import org.dromara.common.core.constant.CodePrefixConstants; -import org.dromara.common.core.service.DictService; -import org.dromara.common.core.utils.MapstructUtils; -import org.dromara.common.core.utils.StringUtils; -import org.dromara.common.mybatis.core.page.PageQuery; -import org.dromara.common.mybatis.core.page.TableDataInfo; -import org.dromara.sis.domain.SisAccessControlDevice; -import org.dromara.sis.domain.bo.SisAccessControlDeviceBo; -import org.dromara.sis.domain.vo.SisAccessControlDeviceVo; -import org.dromara.sis.mapper.SisAccessControlDeviceMapper; -import org.dromara.sis.service.ISisAccessControlDeviceService; -import org.springframework.stereotype.Service; - -import javax.annotation.Resource; -import java.util.Collection; -import java.util.List; -import java.util.Map; - -/** - * 门禁设备Service业务层处理 - * - * @author mocheng - * @date 2025-06-25 - */ -@Slf4j -@Service -public class SisAccessControlDeviceServiceImpl implements ISisAccessControlDeviceService { - @Resource - private SisAccessControlDeviceMapper baseMapper; - @Resource - private DictService dictService; - - /** - * 查询门禁设备 - * - * @param id 主键 - * @return 门禁设备 - */ - @Override - public SisAccessControlDeviceVo queryById(Long id) { - return baseMapper.selectVoById(id); - } - - /** - * 分页查询门禁设备列表 - * - * @param bo 查询条件 - * @param pageQuery 分页参数 - * @return 门禁设备分页列表 - */ - @Override - public TableDataInfo queryPageList(SisAccessControlDeviceBo bo, PageQuery pageQuery) { - LambdaQueryWrapper lqw = buildQueryWrapper(bo); - Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); - return TableDataInfo.build(result); - } - - /** - * 查询符合条件的门禁设备列表 - * - * @param bo 查询条件 - * @return 门禁设备列表 - */ - @Override - public List queryList(SisAccessControlDeviceBo bo) { - LambdaQueryWrapper lqw = buildQueryWrapper(bo); - return baseMapper.selectVoList(lqw); - } - - private LambdaQueryWrapper buildQueryWrapper(SisAccessControlDeviceBo bo) { - Map params = bo.getParams(); - LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); - lqw.orderByAsc(SisAccessControlDevice::getId); - lqw.like(StringUtils.isNotBlank(bo.getEqpName()), SisAccessControlDevice::getEqpName, bo.getEqpName()); - lqw.eq(StringUtils.isNotBlank(bo.getFactoryNo()), SisAccessControlDevice::getFactoryNo, bo.getFactoryNo()); - lqw.eq(bo.getEqpType() != null, SisAccessControlDevice::getEqpType, bo.getEqpType()); - lqw.eq(bo.getAccessType() != null, SisAccessControlDevice::getAccessType, bo.getAccessType()); - lqw.eq(StringUtils.isNotBlank(bo.getEqpIp()), SisAccessControlDevice::getEqpIp, bo.getEqpIp()); - lqw.eq(bo.getEqpPort() != null, SisAccessControlDevice::getEqpPort, bo.getEqpPort()); - lqw.eq(StringUtils.isNotBlank(bo.getEqpAccount()), SisAccessControlDevice::getEqpAccount, bo.getEqpAccount()); - lqw.eq(StringUtils.isNotBlank(bo.getEqpPwd()), SisAccessControlDevice::getEqpPwd, bo.getEqpPwd()); - lqw.eq(StringUtils.isNotBlank(bo.getSearchValue()), SisAccessControlDevice::getSearchValue, bo.getSearchValue()); - return lqw; - } - - /** - * 新增门禁设备 - * - * @param bo 门禁设备 - * @return 是否新增成功 - */ - @Override - public Boolean insertByBo(SisAccessControlDeviceBo bo) { - SisAccessControlDevice add = MapstructUtils.convert(bo, SisAccessControlDevice.class); - // 生成设备比吗 - add.setEqpNo(CodePrefixConstants.SIS_DEVICE_CODE_PREFIX + IdUtil.getSnowflakeNextIdStr()); - boolean flag = baseMapper.insert(add) > 0; - if (flag) { - bo.setId(add.getId()); - } - return flag; - } - - /** - * 修改门禁设备 - * - * @param bo 门禁设备 - * @return 是否修改成功 - */ - @Override - public Boolean updateByBo(SisAccessControlDeviceBo bo) { - SisAccessControlDevice update = MapstructUtils.convert(bo, SisAccessControlDevice.class); - validEntityBeforeSave(update); - return baseMapper.updateById(update) > 0; - } - - /** - * 保存前的数据校验 - */ - private void validEntityBeforeSave(SisAccessControlDevice entity) { - //TODO 做一些数据校验,如唯一约束 - } - - /** - * 校验并批量删除门禁设备信息 - * - * @param ids 待删除的主键集合 - * @param isValid 是否进行有效性校验 - * @return 是否删除成功 - */ - @Override - public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { - if (isValid) { - //TODO 做一些业务上的校验,判断是否需要校验 - } - return baseMapper.deleteByIds(ids) > 0; - } - - @Override - public List queryListByFactoryNo(String factoryNo) { - LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); - lqw.eq(SisAccessControlDevice::getFactoryNo, factoryNo); - return baseMapper.selectVoList(lqw); - } -} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAccessControlServiceImpl.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAccessControlServiceImpl.java index cb13e973..fa606f2d 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAccessControlServiceImpl.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAccessControlServiceImpl.java @@ -63,7 +63,7 @@ public class SisAccessControlServiceImpl implements ISisAccessControlService { */ @Override public SisAccessControlVo queryById(Long id) { - return baseMapper.selectVoById(id); + return baseMapper.queryById(id); } /** @@ -189,9 +189,23 @@ public class SisAccessControlServiceImpl implements ISisAccessControlService { * @return 是否修改成功 */ @Override + @Transactional(rollbackFor = Exception.class) public Boolean updateByBo(SisAccessControlBo bo) { SisAccessControl update = MapstructUtils.convert(bo, SisAccessControl.class); - validEntityBeforeSave(update); + sisDeviceBindRefService.deleteByBindId(bo.getId()); + if (bo.getBindDeviceId() != null) { + // 检验设备是否存在 + SisDeviceManageVo sisDeviceManageVo = sisDeviceManageService.queryById(bo.getBindDeviceId()); + // 写入关联关系表中 + SisDeviceBindRef sisDeviceBindRef = new SisDeviceBindRef(); + sisDeviceBindRef.setDeviceId(sisDeviceManageVo.getId()); + sisDeviceBindRef.setDeviceIp(sisDeviceManageVo.getDeviceIp()); + sisDeviceBindRef.setBindId(bo.getId()); + sisDeviceBindRef.setControlType(ControlTypeEnum.ACCESS_CONTROL.getCode()); + Boolean insert = sisDeviceBindRefService.insert(sisDeviceBindRef); + Assert.isTrue(insert, "写入设备关联表失败!"); + } + return baseMapper.updateById(update) > 0; } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAuthRecordServiceImpl.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAuthRecordServiceImpl.java index 4c0ff003..9b262c10 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAuthRecordServiceImpl.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAuthRecordServiceImpl.java @@ -1,7 +1,7 @@ package org.dromara.sis.service.impl; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.img.ImgUtil; -import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -13,20 +13,16 @@ import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.resource.api.RemoteFileService; import org.dromara.sis.domain.SisAuthRecord; +import org.dromara.sis.domain.SisDeviceManage; +import org.dromara.sis.domain.bo.AuthLibBo; import org.dromara.sis.domain.bo.SingleAuthRecordBo; import org.dromara.sis.domain.bo.SisAuthRecordBo; -import org.dromara.sis.domain.bo.SisLibDeviceImgRefBo; -import org.dromara.sis.domain.bo.SisLibDeviceRefBo; -import org.dromara.sis.domain.vo.*; +import org.dromara.sis.domain.vo.SisAuthRecordVo; import org.dromara.sis.mapper.SisAuthRecordMapper; import org.dromara.sis.sdk.e8.AccessControlService; import org.dromara.sis.sdk.e8.DoorDeviceService; import org.dromara.sis.sdk.e8.VoucherControlService; -import org.dromara.sis.sdk.e8.domain.accessControl.req.CustomerAuthAddReq; -import org.dromara.sis.sdk.e8.domain.door.res.AuthDoorDeviceFindRes; -import org.dromara.sis.sdk.e8.domain.voucher.req.IssueVoucherReq; import org.dromara.sis.sdk.unview.UnViewAiBoxApi; -import org.dromara.sis.sdk.unview.model.UvModel; import org.dromara.sis.service.*; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -34,7 +30,10 @@ import org.springframework.transaction.annotation.Transactional; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; -import java.util.*; +import java.util.Base64; +import java.util.Collection; +import java.util.List; +import java.util.Map; /** * 授权记录Service业务层处理 @@ -58,7 +57,7 @@ public class SisAuthRecordServiceImpl implements ISisAuthRecordService { private final ISisLibDeviceRefService sisLibDeviceRefService; private final ISisAccessControlService sisAccessControlService; private final ISisLibDeviceImgRefService sisLibDeviceImgRefService; - private final ISisAccessControlDeviceService sisAccessControlDeviceService; + private final ISisDeviceManageService deviceManageService; @DubboReference private final RemoteFileService remoteFileService; @@ -336,4 +335,41 @@ public class SisAuthRecordServiceImpl implements ISisAuthRecordService { public SisAuthRecordVo checkAuth(Integer personId, Long accessControlId) { return baseMapper.checkAuth(personId, accessControlId); } + + @Override + public Boolean deleteByLibId(Long libId) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(SisAuthRecord::getLibId, libId); + return baseMapper.delete(lqw) > 0; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean authLib(AuthLibBo bo) { + if (CollUtil.isEmpty(bo.getDeviceIds())) { + return false; + } + // 每次授权先删除上一次授权信息 + deleteByLibId(bo.getLibId()); + // 过滤点不是设备的节点数据 + List ls = deviceManageService.queryByIds(bo.getDeviceIds()); + if (CollUtil.isEmpty(ls)) { + return false; + } + // 批量写入授权数据 + List list = ls.stream().map(item -> { + SisAuthRecord authRecord = new SisAuthRecord(); + authRecord.setDeviceId(item.getId()); + authRecord.setLibId(bo.getLibId()); + return authRecord; + }).toList(); + return baseMapper.insertBatch(list); + } + + @Override + public List queryAuthDevice(String libId) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(SisAuthRecord::getLibId, libId); + return baseMapper.selectList(lqw); + } } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisDeviceBindRefServiceImpl.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisDeviceBindRefServiceImpl.java index 75608242..6657674f 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisDeviceBindRefServiceImpl.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisDeviceBindRefServiceImpl.java @@ -1,5 +1,6 @@ package org.dromara.sis.service.impl; +import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -142,4 +143,24 @@ public class SisDeviceBindRefServiceImpl implements ISisDeviceBindRefService { lqw.eq(SisDeviceBindRef::getDeviceIp, ipcAddr); return baseMapper.selectOne(lqw); } + + @Override + public Boolean batchInsert(List ls) { + return baseMapper.insertBatch(ls); + } + + @Override + public Boolean deleteByBindId(Long elevatorId) { + Assert.notNull(elevatorId, "elevatorId 不能为null"); + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(SisDeviceBindRef::getBindId, elevatorId); + return baseMapper.delete(lqw) > 0; + } + + @Override + public List queryByBindId(Long elevatorId) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(SisDeviceBindRef::getBindId, elevatorId); + return baseMapper.selectList(lqw); + } } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisDeviceManageServiceImpl.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisDeviceManageServiceImpl.java index 1f5fff09..6433ba88 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisDeviceManageServiceImpl.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisDeviceManageServiceImpl.java @@ -1,24 +1,25 @@ package org.dromara.sis.service.impl; -import org.dromara.common.core.utils.MapstructUtils; -import org.dromara.common.core.utils.StringUtils; -import org.dromara.common.mybatis.core.page.TableDataInfo; -import org.dromara.common.mybatis.core.page.PageQuery; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; +import org.dromara.common.core.domain.TreeNode; +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.sis.domain.SisDeviceManage; import org.dromara.sis.domain.bo.SisDeviceManageBo; import org.dromara.sis.domain.vo.SisDeviceManageVo; -import org.dromara.sis.domain.SisDeviceManage; import org.dromara.sis.mapper.SisDeviceManageMapper; import org.dromara.sis.service.ISisDeviceManageService; +import org.springframework.stereotype.Service; +import java.util.Collection; import java.util.List; import java.util.Map; -import java.util.Collection; /** * 设备管理Service业务层处理 @@ -142,4 +143,30 @@ public class SisDeviceManageServiceImpl implements ISisDeviceManageService { lqw.eq(SisDeviceManage::getDeviceIp, deviceCode); return baseMapper.selectVoById(lqw); } + + @Override + public List> tree() { + // 暂时将所有数据放入写死的根节点中 + TreeNode root = new TreeNode<>(); + root.setLevel(1); + root.setCode(0L); + root.setParentCode(-1L); + root.setLabel("商务中心"); + List vo = baseMapper.selectVoList(); + List> childrenList = vo.stream().map(item -> { + TreeNode node = new TreeNode<>(); + node.setLevel(2); + node.setCode(item.getId()); + node.setParentCode(root.getCode()); + node.setLabel(item.getDeviceName()); + return node; + }).toList(); + root.setChildren(childrenList); + return List.of(root); + } + + @Override + public List queryByIds(List deviceIds) { + return baseMapper.selectByIds(deviceIds); + } } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisElevatorInfoServiceImpl.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisElevatorInfoServiceImpl.java index 3317cce2..139b88ee 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisElevatorInfoServiceImpl.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisElevatorInfoServiceImpl.java @@ -1,5 +1,6 @@ package org.dromara.sis.service.impl; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.IdUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -14,17 +15,18 @@ import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.property.api.RemoteUnitService; import org.dromara.property.api.domain.vo.RemoteUnitVo; +import org.dromara.sis.domain.SisDeviceBindRef; import org.dromara.sis.domain.SisElevatorInfo; import org.dromara.sis.domain.bo.SisElevatorInfoBo; +import org.dromara.sis.domain.enums.ControlTypeEnum; import org.dromara.sis.domain.vo.SisElevatorInfoVo; import org.dromara.sis.mapper.SisElevatorInfoMapper; +import org.dromara.sis.service.ISisDeviceBindRefService; import org.dromara.sis.service.ISisElevatorInfoService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.Collection; -import java.util.List; -import java.util.Map; +import java.util.*; import static org.dromara.common.core.constant.CodePrefixConstants.ELEVATOR_CONTROL_CODE_PREFIX; @@ -40,6 +42,7 @@ import static org.dromara.common.core.constant.CodePrefixConstants.ELEVATOR_CONT public class SisElevatorInfoServiceImpl implements ISisElevatorInfoService { private final SisElevatorInfoMapper baseMapper; + private final ISisDeviceBindRefService deviceBindRefService; @DubboReference private RemoteUnitService remoteUnitService; @@ -52,7 +55,25 @@ public class SisElevatorInfoServiceImpl implements ISisElevatorInfoService { */ @Override public SisElevatorInfoVo queryById(Long elevatorId) { - return baseMapper.selectVoById(elevatorId); + SisElevatorInfoVo sisElevatorInfoVo = baseMapper.selectVoById(elevatorId); + if (sisElevatorInfoVo == null) { + return sisElevatorInfoVo; + } + List ref = deviceBindRefService.queryByBindId(elevatorId); + if (CollUtil.isNotEmpty(ref)) { + List remoteCallElevatorDeviceId = new ArrayList<>(ref.size()); + Long elevatorControlDeviceId = null; + for (SisDeviceBindRef item : ref) { + if (Objects.equals(item.getControlType(), ControlTypeEnum.REMOTE_CALL_ELEVATOR.getCode())) { + remoteCallElevatorDeviceId.add(item.getDeviceId()); + } else { + elevatorControlDeviceId = item.getDeviceId(); + } + sisElevatorInfoVo.setRemoteCallElevatorDeviceId(remoteCallElevatorDeviceId); + sisElevatorInfoVo.setElevatorControlDeviceId(elevatorControlDeviceId); + } + } + return sisElevatorInfoVo; } /** @@ -128,14 +149,37 @@ public class SisElevatorInfoServiceImpl implements ISisElevatorInfoService { boolean flag = baseMapper.insert(add) > 0; if (flag) { bo.setElevatorId(add.getElevatorId()); + List ls = new ArrayList<>(); + // 梯控 + if (bo.getElevatorControlDeviceId() != null) { + SisDeviceBindRef ref = new SisDeviceBindRef(); + ref.setDeviceId(bo.getElevatorControlDeviceId().getDeviceId()); + ref.setDeviceIp(bo.getElevatorControlDeviceId().getDeviceIp()); + ref.setBindId(bo.getElevatorId()); + ref.setControlType(ControlTypeEnum.ELEVATOR_CONTROL.getCode()); + ls.add(ref); + } + // 远程呼叫 + if (bo.getRemoteCallElevatorDeviceId() != null && !bo.getRemoteCallElevatorDeviceId().isEmpty()) { + for (SisElevatorInfoBo.DeviceInfo deviceInfo : bo.getRemoteCallElevatorDeviceId()) { + SisDeviceBindRef ref = new SisDeviceBindRef(); + ref.setDeviceId(deviceInfo.getDeviceId()); + ref.setDeviceIp(deviceInfo.getDeviceIp()); + ref.setBindId(bo.getElevatorId()); + ref.setControlType(ControlTypeEnum.REMOTE_CALL_ELEVATOR.getCode()); + ls.add(ref); + } + } + // 写入绑定设备表 + if (!ls.isEmpty()) { + Boolean b = deviceBindRefService.batchInsert(ls); + Assert.isTrue(b, "设备绑定关联关系写入失败!"); + } // hik sdk 登录 // short port = bo.getControlPort().shortValue(); // Boolean isLogin = HikApiService.getInstance().login(bo.getControlIp(), port, bo.getControlAccount(), bo.getControlPwd()); // Assert.isTrue(isLogin, "电梯添加失败, 发起梯控设备连接失败."); // todo 发起电梯楼层信息同步 - - - } return flag; } @@ -147,9 +191,38 @@ public class SisElevatorInfoServiceImpl implements ISisElevatorInfoService { * @return 是否修改成功 */ @Override + @Transactional(rollbackFor = Exception.class) public Boolean updateByBo(SisElevatorInfoBo bo) { SisElevatorInfo update = MapstructUtils.convert(bo, SisElevatorInfo.class); - validEntityBeforeSave(update); + // 删除设备绑定关系 + deviceBindRefService.deleteByBindId(bo.getElevatorId()); + // 重新写入关联关系 + List ls = new ArrayList<>(); + // 梯控 + if (bo.getElevatorControlDeviceId() != null) { + SisDeviceBindRef ref = new SisDeviceBindRef(); + ref.setDeviceId(bo.getElevatorControlDeviceId().getDeviceId()); + ref.setDeviceIp(bo.getElevatorControlDeviceId().getDeviceIp()); + ref.setBindId(bo.getElevatorId()); + ref.setControlType(ControlTypeEnum.ELEVATOR_CONTROL.getCode()); + ls.add(ref); + } + // 远程呼叫 + if (bo.getRemoteCallElevatorDeviceId() != null && !bo.getRemoteCallElevatorDeviceId().isEmpty()) { + for (SisElevatorInfoBo.DeviceInfo deviceInfo : bo.getRemoteCallElevatorDeviceId()) { + SisDeviceBindRef ref = new SisDeviceBindRef(); + ref.setDeviceId(deviceInfo.getDeviceId()); + ref.setDeviceIp(deviceInfo.getDeviceIp()); + ref.setBindId(bo.getElevatorId()); + ref.setControlType(ControlTypeEnum.REMOTE_CALL_ELEVATOR.getCode()); + ls.add(ref); + } + } + // 写入绑定设备表 + if (!ls.isEmpty()) { + Boolean b = deviceBindRefService.batchInsert(ls); + Assert.isTrue(b, "设备绑定关联关系写入失败!"); + } return baseMapper.updateById(update) > 0; } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisLibDeviceRefServiceImpl.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisLibDeviceRefServiceImpl.java index 6f69e22e..acbbf81e 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisLibDeviceRefServiceImpl.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisLibDeviceRefServiceImpl.java @@ -12,7 +12,6 @@ import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.sis.domain.SisLibDeviceRef; import org.dromara.sis.domain.bo.AccessControlLibDeviceBo; import org.dromara.sis.domain.bo.SisLibDeviceRefBo; -import org.dromara.sis.domain.vo.SisAccessControlDeviceVo; import org.dromara.sis.domain.vo.SisLibDeviceRefVo; import org.dromara.sis.mapper.SisLibDeviceRefMapper; import org.dromara.sis.service.ISisLibDeviceRefService; diff --git a/ruoyi-modules/Sis/src/main/resources/mapper/sis/SisAccessControlDeviceMapper.xml b/ruoyi-modules/Sis/src/main/resources/mapper/sis/SisAccessControlDeviceMapper.xml deleted file mode 100644 index 81a4d8ab..00000000 --- a/ruoyi-modules/Sis/src/main/resources/mapper/sis/SisAccessControlDeviceMapper.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/ruoyi-modules/Sis/src/main/resources/mapper/sis/SisAccessControlMapper.xml b/ruoyi-modules/Sis/src/main/resources/mapper/sis/SisAccessControlMapper.xml index 006583e8..bc5f1a8a 100644 --- a/ruoyi-modules/Sis/src/main/resources/mapper/sis/SisAccessControlMapper.xml +++ b/ruoyi-modules/Sis/src/main/resources/mapper/sis/SisAccessControlMapper.xml @@ -4,4 +4,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +