From 7216b0853098aba169b64ef51255ebd6c5e68aa1 Mon Sep 17 00:00:00 2001 From: 15683799673 Date: Fri, 27 Jun 2025 22:18:14 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BA=BA=E5=83=8F=E5=BA=93=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E4=BB=A5=E5=8F=8A=E5=90=8E=E7=AB=AF=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/TdFactoryServiceImpl.java | 1 - .../dromara/sis/domain/SisLibDeviceRef.java | 7 ++- .../org/dromara/sis/domain/SisPersonLib.java | 7 ++- .../domain/bo/AccessControlLibDeviceBo.java | 21 ++++++++ .../sis/domain/bo/SisLibDeviceRefBo.java | 13 ++--- .../domain/vo/SisAccessControlDeviceVo.java | 18 ------- .../sis/domain/vo/SisAccessControlVo.java | 6 --- .../sis/domain/vo/SisLibDeviceRefVo.java | 10 ++-- .../dromara/sis/domain/vo/SisPersonLibVo.java | 8 ++- .../sis/mapper/SisLibDeviceRefMapper.java | 7 +++ .../unview/service/UnViewAiBoxApiService.java | 32 +++++++++-- .../sis/service/ISisLibDeviceRefService.java | 34 ++++++++++-- .../impl/SisLibDeviceRefServiceImpl.java | 26 +++++++-- .../service/impl/SisPersonLibServiceImpl.java | 53 +++++++++++++++---- .../mapper/sis/SisLibDeviceRefMapper.xml | 11 ++++ 15 files changed, 181 insertions(+), 73 deletions(-) create mode 100644 ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/AccessControlLibDeviceBo.java diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/TdFactoryServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/TdFactoryServiceImpl.java index b848bb91..6cd40a47 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/TdFactoryServiceImpl.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/TdFactoryServiceImpl.java @@ -76,7 +76,6 @@ public class TdFactoryServiceImpl implements ITdFactoryService { lqw.orderByAsc(TdFactory::getId); lqw.eq(StringUtils.isNotBlank(bo.getFactoryNo()), TdFactory::getFactoryNo, bo.getFactoryNo()); lqw.like(StringUtils.isNotBlank(bo.getFactoryName()), TdFactory::getFactoryName, bo.getFactoryName()); - lqw.eq(bo.getDataState() != null, TdFactory::getDataState, bo.getDataState()); lqw.eq(StringUtils.isNotBlank(bo.getSearchValue()), TdFactory::getSearchValue, bo.getSearchValue()); return lqw; } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisLibDeviceRef.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisLibDeviceRef.java index 02ae561e..868fa785 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisLibDeviceRef.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisLibDeviceRef.java @@ -41,7 +41,12 @@ public class SisLibDeviceRef extends TenantEntity { /** * 设备上的库id */ - private Long eqpLibCode; + private Long eqpLibId; + + /** + * 设备上的库类型 + */ + private Integer eqpLibType; /** * 第三方设备库添加状态 1: 成功,2:失败 diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisPersonLib.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisPersonLib.java index 3f7cede9..6f3241dc 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisPersonLib.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisPersonLib.java @@ -1,9 +1,10 @@ package org.dromara.sis.domain; -import org.dromara.common.tenant.core.TenantEntity; -import com.baomidou.mybatisplus.annotation.*; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import lombok.EqualsAndHashCode; +import org.dromara.common.tenant.core.TenantEntity; import java.io.Serial; @@ -51,6 +52,4 @@ public class SisPersonLib extends TenantEntity { * 库的业务类型 1: 门禁库,2: 黑名单库 */ private Integer busiType; - - } 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 new file mode 100644 index 00000000..a39a7208 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/AccessControlLibDeviceBo.java @@ -0,0 +1,21 @@ +package org.dromara.sis.domain.bo; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 门禁控制设备和库关联的对象 + * + * @author lxj + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class AccessControlLibDeviceBo extends SisAccessControlDeviceBo { + + private Integer eqpLibId; + + private Integer eqpLibType; + + private Long libId; + +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisLibDeviceRefBo.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisLibDeviceRefBo.java index cc8681ca..9c2967b4 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisLibDeviceRefBo.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisLibDeviceRefBo.java @@ -1,12 +1,8 @@ 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.SisLibDeviceRef; @@ -24,31 +20,28 @@ public class SisLibDeviceRefBo extends BaseEntity { /** * 主键id */ - @NotNull(message = "主键id不能为空", groups = {EditGroup.class}) private Long id; /** * 人员库编码 */ - @NotBlank(message = "人员库id不能为空", groups = {AddGroup.class, EditGroup.class}) private Long libId; /** * 设备编码 */ - @NotBlank(message = "设备id不能为空", groups = {AddGroup.class, EditGroup.class}) private Long eqpId; /** * 设备上的库id */ - @NotNull(message = "设备上的库id不能为空", groups = {AddGroup.class, EditGroup.class}) - private Long eqpLibCode; + private Long eqpLibId; + + private Integer eqpLibType; /** * 第三方设备库添加状态 1: 成功,2:失败 */ - @NotNull(message = "第三方设备库添加状态 1: 成功,2:失败不能为空", groups = {AddGroup.class, EditGroup.class}) private Integer eqpLibState; } 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 index 4b15d558..6913aac6 100644 --- 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 @@ -90,23 +90,5 @@ public class SisAccessControlDeviceVo implements Serializable { @ExcelProperty(value = "设备密码") private String eqpPwd; - /** - * 创建人id - */ - @ExcelProperty(value = "创建人id") - private Long createById; - - /** - * 更新人id - */ - @ExcelProperty(value = "更新人id") - private Long updateById; - - /** - * 搜索值 - */ - @ExcelProperty(value = "搜索值") - private String searchValue; - } 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 ed58c952..f6681c9c 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 @@ -100,10 +100,4 @@ public class SisAccessControlVo implements Serializable { @ExcelProperty(value = "外部编码") private String outCode; - /** - * 组织编码 - */ - @ExcelProperty(value = "组织编码") - private String orgCode; - } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisLibDeviceRefVo.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisLibDeviceRefVo.java index c528df07..0b3aa21e 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisLibDeviceRefVo.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisLibDeviceRefVo.java @@ -1,7 +1,6 @@ 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.sis.domain.SisLibDeviceRef; @@ -27,31 +26,28 @@ public class SisLibDeviceRefVo implements Serializable { /** * 主键id */ - @ExcelProperty(value = "主键id") private Long id; /** * 人员库id */ - @ExcelProperty(value = "人员库id") private Long libId; /** * 设备表id */ - @ExcelProperty(value = "设备表id") private Long eqpId; /** * 设备上的库id */ - @ExcelProperty(value = "设备上的库id") - private Long eqpLibCode; + private Long eqpLibId; + + private Integer eqpLibType; /** * 第三方设备库添加状态 1: 成功,2:失败 */ - @ExcelProperty(value = "第三方设备库添加状态 1: 成功,2:失败") private Integer eqpLibState; } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisPersonLibVo.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisPersonLibVo.java index 294b1f30..bce51cfe 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisPersonLibVo.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisPersonLibVo.java @@ -1,13 +1,14 @@ package org.dromara.sis.domain.vo; -import org.dromara.sis.domain.SisPersonLib; import cn.idev.excel.annotation.ExcelIgnoreUnannotated; import cn.idev.excel.annotation.ExcelProperty; import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; +import org.dromara.sis.domain.SisPersonLib; import java.io.Serial; import java.io.Serializable; +import java.util.List; /** @@ -60,4 +61,9 @@ public class SisPersonLibVo implements Serializable { @ExcelProperty(value = "库的业务类型 1: 门禁库,2: 黑名单库") private Integer busiType; + /** + * 库关联的设备id列表 + */ + List eqpIds; + } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/mapper/SisLibDeviceRefMapper.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/mapper/SisLibDeviceRefMapper.java index 52ed2f75..19842f43 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/mapper/SisLibDeviceRefMapper.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/mapper/SisLibDeviceRefMapper.java @@ -1,9 +1,15 @@ package org.dromara.sis.mapper; +import org.apache.ibatis.annotations.Param; import org.dromara.sis.domain.SisLibDeviceRef; +import org.dromara.sis.domain.bo.AccessControlLibDeviceBo; +import org.dromara.sis.domain.vo.SisAccessControlDeviceVo; import org.dromara.sis.domain.vo.SisLibDeviceRefVo; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import java.util.Collection; +import java.util.List; + /** * 系统库与设备库的关联Mapper接口 * @@ -12,4 +18,5 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; */ public interface SisLibDeviceRefMapper extends BaseMapperPlus { + List queryDeviceListByLibIds(@Param("ids") Collection ids); } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/unview/service/UnViewAiBoxApiService.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/unview/service/UnViewAiBoxApiService.java index 4434119f..59d1be00 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/unview/service/UnViewAiBoxApiService.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/unview/service/UnViewAiBoxApiService.java @@ -7,6 +7,7 @@ import org.dromara.sis.sdk.unview.UnViewAiBoxApi; import org.dromara.sis.sdk.unview.model.enums.UniViewApiEnum; import org.dromara.sis.sdk.unview.utils.UniViewHttp; import org.springframework.stereotype.Component; + import javax.annotation.Resource; import java.util.Arrays; import java.util.HashMap; @@ -29,11 +30,13 @@ public class UnViewAiBoxApiService implements UnViewAiBoxApi { @Resource private UniViewHttp uniViewHttp; + @Override public SearchBehaviorResult searchBehavior(UvSystemInfo uvSystemInfo, SearchBehaviorParams params) { UniViewResult request = uniViewHttp.request(uvSystemInfo, UniViewApiEnum.SEARCH_BEHAVIOR, params, SearchBehaviorResult.class); return request.getData(); } + @Override public AddLibResult addPersonLib(UvSystemInfo systemInfo, String libName) { Map params = new HashMap<>(1); params.put("lib_name", libName); @@ -41,6 +44,7 @@ public class UnViewAiBoxApiService implements UnViewAiBoxApi { return request.getData(); } + @Override public boolean deletePersonLib(UvSystemInfo systemInfo, Integer... libIds) { if (libIds.length == 0) { log.info("libIds 不能为空"); @@ -52,6 +56,7 @@ public class UnViewAiBoxApiService implements UnViewAiBoxApi { return request.success(); } + @Override public boolean updatePersonLib(UvSystemInfo systemInfo, Integer libId, String LibName) { JSONObject params = new JSONObject(); params.put("lib_id", libId); @@ -60,6 +65,7 @@ public class UnViewAiBoxApiService implements UnViewAiBoxApi { return request.success(); } + @Override public QueryLibResult findPagePersonLib(UvSystemInfo systemInfo, String libName, Integer current, Integer size) { JSONObject params = new JSONObject(); if (StrUtil.isNotBlank(libName)) { @@ -77,17 +83,19 @@ public class UnViewAiBoxApiService implements UnViewAiBoxApi { return request.getData(); } - + @Override public AddPersonResult addPerson(UvSystemInfo uvSystemInfo, AddPersonParams addPersonParams) { UniViewResult request = uniViewHttp.request(uvSystemInfo, UniViewApiEnum.PERSON_ADD, addPersonParams, AddPersonResult.class); return request.result(); } + @Override public BatchAddPersonResult batchAddPerson(UvSystemInfo uvSystemInfo, BatchAddPersonParams personParams) { UniViewResult request = uniViewHttp.request(uvSystemInfo, UniViewApiEnum.PERSON_BATCH_ADD, personParams, BatchAddPersonResult.class); return request.result(); } + @Override public Boolean batchDeletePerson(UvSystemInfo uvSystemInfo, Integer[] personIds) { JSONObject params = new JSONObject(); params.put("person_id_list", personIds); @@ -95,24 +103,26 @@ public class UnViewAiBoxApiService implements UnViewAiBoxApi { return request.success(); } + @Override public Boolean updatePerson(UvSystemInfo uvSystemInfo, UpdatePersonParams params) { UniViewResult request = uniViewHttp.request(uvSystemInfo, UniViewApiEnum.PERSON_UPDATE, params, String.class); return request.success(); } - + @Override public queryPersonPageResult findPersonPage(UvSystemInfo uvSystemInfo, queryPersonPageParams params) { UniViewResult request = uniViewHttp.request(uvSystemInfo, UniViewApiEnum.PERSON_FIND, params, queryPersonPageResult.class); return request.result(); } /*--------------------------------------------------------------------- 点位管理 -------------------------------------------------------------------------*/ - + @Override public GetPublickeyResult getPublickey(UvSystemInfo uvSystemInfo) { UniViewResult request = uniViewHttp.request(uvSystemInfo, UniViewApiEnum.POINT_RAS, null, GetPublickeyResult.class); return request.result(); } + @Override public QueryOnvifResult getOnvif(UvSystemInfo uvSystemInfo) { JSONObject params = new JSONObject(); params.put("ip", uvSystemInfo.getIp()); @@ -123,11 +133,13 @@ public class UnViewAiBoxApiService implements UnViewAiBoxApi { return request.result(); } + @Override public AddPointResult addPoint(UvSystemInfo uvSystemInfo, PointParams req) { UniViewResult request = uniViewHttp.request(uvSystemInfo, UniViewApiEnum.POINT_ADD, req, AddPointResult.class); return request.result(); } + @Override public Boolean deletePoint(UvSystemInfo uvSystemInfo, List channelIds) { JSONObject params = new JSONObject(); params.put("channel_id_list", channelIds); @@ -135,26 +147,31 @@ public class UnViewAiBoxApiService implements UnViewAiBoxApi { return request.success(); } + @Override public Boolean updatePoint(UvSystemInfo uvSystemInfo, UpdatePointParams params) { UniViewResult request = uniViewHttp.request(uvSystemInfo, UniViewApiEnum.POINT_UPDATE, params, String.class); return request.success(); } + @Override public QueryPointResult queryPoint(UvSystemInfo uvSystemInfo, QueryPointParams req) { UniViewResult request = uniViewHttp.request(uvSystemInfo, UniViewApiEnum.POINT_FIND, req, QueryPointResult.class); return request.result(); } + @Override public BatchAddPersonResult batchAddPoint(UvSystemInfo uvSystemInfo, BatchAddPointParams params) { UniViewResult request = uniViewHttp.request(uvSystemInfo, UniViewApiEnum.POINT_BATCH_ADD, params, BatchAddPersonResult.class); return request.result(); } + @Override public Boolean pointControlTimeUpdate(UvSystemInfo uvSystemInfo, ModifyControlTime params) { UniViewResult request = uniViewHttp.request(uvSystemInfo, UniViewApiEnum.POINT_CONTROL_TIME_UPDATE, params, String.class); return request.success(); } + @Override public ControlTime queryControlTime(UvSystemInfo uvSystemInfo, Integer channel_id, Integer algo_model) { JSONObject params = new JSONObject(); params.put("channel_id", channel_id); @@ -164,6 +181,7 @@ public class UnViewAiBoxApiService implements UnViewAiBoxApi { } /*---------------------------------------------------------------- 工服库 ---------------------------------------------------------------------------*/ + @Override public AddLibResult addWorkClothesLib(UvSystemInfo uvSystemInfo, String libName) { JSONObject params = new JSONObject(); params.put("lib_name", libName); @@ -171,6 +189,7 @@ public class UnViewAiBoxApiService implements UnViewAiBoxApi { return request.result(); } + @Override public Boolean updateWorkClothesLib(UvSystemInfo uvSystemInfo, Integer libId, String libName) { JSONObject params = new JSONObject(); params.put("lib_id", libId); @@ -179,6 +198,7 @@ public class UnViewAiBoxApiService implements UnViewAiBoxApi { return request.success(); } + @Override public Boolean deleteWorkClothesLib(UvSystemInfo uvSystemInfo, Integer libId) { JSONObject params = new JSONObject(); params.put("lib_id", libId); @@ -186,6 +206,7 @@ public class UnViewAiBoxApiService implements UnViewAiBoxApi { return request.success(); } + @Override public QueryLibResult findPageWorkClothesLib(UvSystemInfo uvSystemInfo, String libName, Integer page, Integer pageSize) { JSONObject params = new JSONObject(); params.put("lib_name", libName); @@ -196,7 +217,7 @@ public class UnViewAiBoxApiService implements UnViewAiBoxApi { } /*--------------------------------------------------------------------工服 ---------------------------------------------------------------------------*/ - + @Override public Integer addWorkClothes(UvSystemInfo uvSystemInfo, Integer libId, String imageBase64) { JSONObject params = new JSONObject(); params.put("lib_id", libId); @@ -205,6 +226,7 @@ public class UnViewAiBoxApiService implements UnViewAiBoxApi { return request.result(); } + @Override public BatchAddWorkClothesResult batchAddWorkClothes(UvSystemInfo uvSystemInfo, Integer libId, List imageBase64s) { JSONObject params = new JSONObject(); params.put("lib_id", libId); @@ -213,6 +235,7 @@ public class UnViewAiBoxApiService implements UnViewAiBoxApi { return request.result(); } + @Override public Boolean deleteWorkClothes(UvSystemInfo uvSystemInfo, Integer libId, List workClothesIds) { JSONObject params = new JSONObject(); params.put("lib_id", libId); @@ -221,6 +244,7 @@ public class UnViewAiBoxApiService implements UnViewAiBoxApi { return request.success(); } + @Override public FindWorkClothesResult findPageWorkClothes(UvSystemInfo uvSystemInfo, Integer libId, Integer page, Integer size, Integer status) { JSONObject params = new JSONObject(); params.put("lib_id", libId); diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisLibDeviceRefService.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisLibDeviceRefService.java index b077bbd9..5a224e61 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisLibDeviceRefService.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisLibDeviceRefService.java @@ -1,10 +1,12 @@ package org.dromara.sis.service; -import org.dromara.sis.domain.SisLibDeviceRef; -import org.dromara.sis.domain.vo.SisLibDeviceRefVo; -import org.dromara.sis.domain.bo.SisLibDeviceRefBo; -import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.PageQuery; +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 java.util.Collection; import java.util.List; @@ -75,5 +77,27 @@ public interface ISisLibDeviceRefService { */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); - List queryByIds(Collection ids); + /** + * 通过personlIB id 查询关联关系 + * + * @param ids id列表 + * @return 返回关联记录 + */ + List queryByLibIds(Collection ids); + + /** + * 通过 personLibid 列表删除关联关系 + * + * @param ids id 列表 + * @return 返回删除数量 + */ + Integer deleteByLibIds(Collection ids); + + /** + * 通过libIds 查询控制设备列表 + * + * @param ids libIds + * @return 返回设备列表 + */ + List queryDeviceListByLibIds(Collection ids); } 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 0c96fc4b..29efa523 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 @@ -10,7 +10,9 @@ 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.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; @@ -74,9 +76,9 @@ public class SisLibDeviceRefServiceImpl implements ISisLibDeviceRefService { Map params = bo.getParams(); LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); lqw.orderByAsc(SisLibDeviceRef::getId); - lqw.eq(bo.getLibId() !=null, SisLibDeviceRef::getLibId, bo.getLibId()); - lqw.eq(bo.getEqpId() !=null, SisLibDeviceRef::getEqpId, bo.getEqpId()); - lqw.eq(bo.getEqpLibCode() != null, SisLibDeviceRef::getEqpLibCode, bo.getEqpLibCode()); + lqw.eq(bo.getLibId() != null, SisLibDeviceRef::getLibId, bo.getLibId()); + lqw.eq(bo.getEqpId() != null, SisLibDeviceRef::getEqpId, bo.getEqpId()); + lqw.eq(bo.getEqpLibId() != null, SisLibDeviceRef::getEqpLibId, bo.getEqpLibId()); lqw.eq(bo.getEqpLibState() != null, SisLibDeviceRef::getEqpLibState, bo.getEqpLibState()); lqw.eq(StringUtils.isNotBlank(bo.getSearchValue()), SisLibDeviceRef::getSearchValue, bo.getSearchValue()); return lqw; @@ -140,7 +142,21 @@ public class SisLibDeviceRefServiceImpl implements ISisLibDeviceRefService { } @Override - public List queryByIds(Collection ids) { - return List.of(); + public List queryByLibIds(Collection ids) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.in(SisLibDeviceRef::getLibId, ids); + return baseMapper.selectVoList(lqw); + } + + @Override + public Integer deleteByLibIds(Collection ids) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.in(SisLibDeviceRef::getLibId, ids); + return baseMapper.delete(lqw); + } + + @Override + public List queryDeviceListByLibIds(Collection ids) { + return baseMapper.queryDeviceListByLibIds(ids); } } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisPersonLibServiceImpl.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisPersonLibServiceImpl.java index 41525317..3f76417d 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisPersonLibServiceImpl.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisPersonLibServiceImpl.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,8 +15,10 @@ import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.sis.domain.SisLibDeviceRef; import org.dromara.sis.domain.SisPersonLib; +import org.dromara.sis.domain.bo.AccessControlLibDeviceBo; import org.dromara.sis.domain.bo.SisPersonLibBo; import org.dromara.sis.domain.vo.SisAccessControlDeviceVo; +import org.dromara.sis.domain.vo.SisLibDeviceRefVo; import org.dromara.sis.domain.vo.SisPersonLibVo; import org.dromara.sis.mapper.SisPersonLibMapper; import org.dromara.sis.sdk.unview.UnViewAiBoxApi; @@ -27,6 +30,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.Collection; +import java.util.Collections; import java.util.List; import java.util.Map; @@ -55,7 +59,13 @@ public class SisPersonLibServiceImpl implements ISisPersonLibService { */ @Override public SisPersonLibVo queryById(Long id) { - return baseMapper.selectVoById(id); + SisPersonLibVo sisPersonLibVo = baseMapper.selectVoById(id); + List sisLibDeviceRefVos = sisLibDeviceRefService.queryByLibIds(Collections.singleton(id)); + if (CollUtil.isNotEmpty(sisLibDeviceRefVos)) { + List list = sisLibDeviceRefVos.stream().map(SisLibDeviceRefVo::getEqpId).toList(); + sisPersonLibVo.setEqpIds(list); + } + return sisPersonLibVo; } /** @@ -115,14 +125,14 @@ public class SisPersonLibServiceImpl implements ISisPersonLibService { bo.setId(add.getId()); for (Long eqpId : bo.getEqpIds()) { // 查询设备信息 - SisAccessControlDeviceVo sisAccessControlDeviceVo = sisAccessControlDeviceService.queryById(eqpId); - Assert.notNull(sisAccessControlDeviceVo, "门禁控制设备不存在,id=" + eqpId); - log.info("准备写入门禁设备,code={}", sisAccessControlDeviceVo.getEqpNo()); + SisAccessControlDeviceVo vo = sisAccessControlDeviceService.queryById(eqpId); + Assert.notNull(vo, "门禁控制设备不存在,id=" + eqpId); + log.info("准备写入门禁设备,code={}", vo.getEqpNo()); UvModel.UvSystemInfo systemInfo = new UvModel.UvSystemInfo(); - systemInfo.setAccount(sisAccessControlDeviceVo.getEqpAccount()); - systemInfo.setPassword(sisAccessControlDeviceVo.getEqpPwd()); - systemInfo.setIp(sisAccessControlDeviceVo.getEqpIp()); - systemInfo.setPort(sisAccessControlDeviceVo.getEqpPort()); + systemInfo.setAccount(vo.getEqpAccount()); + systemInfo.setPassword(vo.getEqpPwd()); + systemInfo.setIp(vo.getEqpIp()); + systemInfo.setPort(vo.getEqpPort()); // libType =1 人像库,否则工服库 Integer outLibCode = null; if (bo.getLibType() == 1) { @@ -136,9 +146,10 @@ public class SisPersonLibServiceImpl implements ISisPersonLibService { Assert.notNull(outLibCode, "写入宇视盒子失败"); SisLibDeviceRef ref = new SisLibDeviceRef(); ref.setLibId(add.getId()); - ref.setEqpId(sisAccessControlDeviceVo.getId()); - ref.setEqpLibCode(Long.valueOf(outLibCode)); + ref.setEqpId(vo.getId()); + ref.setEqpLibId(Long.valueOf(outLibCode)); ref.setEqpLibState(1); + ref.setEqpLibType(bo.getLibType()); Boolean insert = sisLibDeviceRefService.insert(ref); Assert.isTrue(insert, "写入库关联关系表失败!"); log.info("同步建库完成!"); @@ -174,10 +185,30 @@ public class SisPersonLibServiceImpl implements ISisPersonLibService { * @param isValid 是否进行有效性校验 * @return 是否删除成功 */ + @Transactional(rollbackFor = Exception.class) @Override public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + // 查询关联的设备信息,先删除设备上的库 + List ls = sisLibDeviceRefService.queryDeviceListByLibIds(ids); + // 删除关联关系 + ls.forEach(item -> { + UvModel.UvSystemInfo systemInfo = new UvModel.UvSystemInfo(); + systemInfo.setAccount(item.getEqpAccount()); + systemInfo.setPassword(item.getEqpPwd()); + systemInfo.setIp(item.getEqpIp()); + systemInfo.setPort(item.getEqpPort()); + // 实际上这里需要根据厂商不同去不同的设备删除 + if (item.getEqpLibType() == 1) { + Boolean b = unViewAiBoxApi.deletePersonLib(systemInfo, item.getEqpLibId()); + log.info("删除宇试人像库[{}]完成,result={}", item.getEqpLibId(), b); + } else { + Boolean b = unViewAiBoxApi.deleteWorkClothesLib(systemInfo, item.getEqpLibId()); + log.info("删除宇试工服库[{}]完成,result={}", item.getEqpLibId(), b); + } + }); // 查询当前库是否绑定 - sisLibDeviceRefService.queryByIds(ids); + sisLibDeviceRefService.deleteByLibIds(ids); + log.info("删除personLibRef关联关系完成!"); return baseMapper.deleteByIds(ids) > 0; } } diff --git a/ruoyi-modules/Sis/src/main/resources/mapper/sis/SisLibDeviceRefMapper.xml b/ruoyi-modules/Sis/src/main/resources/mapper/sis/SisLibDeviceRefMapper.xml index 4e939ba4..3d71bdf7 100644 --- a/ruoyi-modules/Sis/src/main/resources/mapper/sis/SisLibDeviceRefMapper.xml +++ b/ruoyi-modules/Sis/src/main/resources/mapper/sis/SisLibDeviceRefMapper.xml @@ -4,4 +4,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +