人像库页面以及后端完成
Some checks are pending
Gitea Actions Demo / Explore-Gitea-Actions (push) Waiting to run

This commit is contained in:
15683799673
2025-06-27 22:18:14 +08:00
parent e55ecffb98
commit 7216b08530
15 changed files with 181 additions and 73 deletions

View File

@@ -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;
}

View File

@@ -41,7 +41,12 @@ public class SisLibDeviceRef extends TenantEntity {
/**
* 设备上的库id
*/
private Long eqpLibCode;
private Long eqpLibId;
/**
* 设备上的库类型
*/
private Integer eqpLibType;
/**
* 第三方设备库添加状态 1: 成功2失败

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -100,10 +100,4 @@ public class SisAccessControlVo implements Serializable {
@ExcelProperty(value = "外部编码")
private String outCode;
/**
* 组织编码
*/
@ExcelProperty(value = "组织编码")
private String orgCode;
}

View File

@@ -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;
}

View File

@@ -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<Long> eqpIds;
}

View File

@@ -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<SisLibDeviceRef, SisLibDeviceRefVo> {
List<AccessControlLibDeviceBo> queryDeviceListByLibIds(@Param("ids") Collection<Long> ids);
}

View File

@@ -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<SearchBehaviorResult> request = uniViewHttp.request(uvSystemInfo, UniViewApiEnum.SEARCH_BEHAVIOR, params, SearchBehaviorResult.class);
return request.getData();
}
@Override
public AddLibResult addPersonLib(UvSystemInfo systemInfo, String libName) {
Map<String, String> 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<AddPersonResult> request = uniViewHttp.request(uvSystemInfo, UniViewApiEnum.PERSON_ADD, addPersonParams, AddPersonResult.class);
return request.result();
}
@Override
public BatchAddPersonResult batchAddPerson(UvSystemInfo uvSystemInfo, BatchAddPersonParams personParams) {
UniViewResult<BatchAddPersonResult> 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<String> request = uniViewHttp.request(uvSystemInfo, UniViewApiEnum.PERSON_UPDATE, params, String.class);
return request.success();
}
@Override
public queryPersonPageResult findPersonPage(UvSystemInfo uvSystemInfo, queryPersonPageParams params) {
UniViewResult<queryPersonPageResult> request = uniViewHttp.request(uvSystemInfo, UniViewApiEnum.PERSON_FIND, params, queryPersonPageResult.class);
return request.result();
}
/*--------------------------------------------------------------------- 点位管理 -------------------------------------------------------------------------*/
@Override
public GetPublickeyResult getPublickey(UvSystemInfo uvSystemInfo) {
UniViewResult<GetPublickeyResult> 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<AddPointResult> request = uniViewHttp.request(uvSystemInfo, UniViewApiEnum.POINT_ADD, req, AddPointResult.class);
return request.result();
}
@Override
public Boolean deletePoint(UvSystemInfo uvSystemInfo, List<Integer> 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<String> request = uniViewHttp.request(uvSystemInfo, UniViewApiEnum.POINT_UPDATE, params, String.class);
return request.success();
}
@Override
public QueryPointResult queryPoint(UvSystemInfo uvSystemInfo, QueryPointParams req) {
UniViewResult<QueryPointResult> request = uniViewHttp.request(uvSystemInfo, UniViewApiEnum.POINT_FIND, req, QueryPointResult.class);
return request.result();
}
@Override
public BatchAddPersonResult batchAddPoint(UvSystemInfo uvSystemInfo, BatchAddPointParams params) {
UniViewResult<BatchAddPersonResult> request = uniViewHttp.request(uvSystemInfo, UniViewApiEnum.POINT_BATCH_ADD, params, BatchAddPersonResult.class);
return request.result();
}
@Override
public Boolean pointControlTimeUpdate(UvSystemInfo uvSystemInfo, ModifyControlTime params) {
UniViewResult<String> 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<String> 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<Integer> 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);

View File

@@ -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<Long> ids, Boolean isValid);
List<SisLibDeviceRefVo> queryByIds(Collection<Long> ids);
/**
* 通过personlIB id 查询关联关系
*
* @param ids id列表
* @return 返回关联记录
*/
List<SisLibDeviceRefVo> queryByLibIds(Collection<Long> ids);
/**
* 通过 personLibid 列表删除关联关系
*
* @param ids id 列表
* @return 返回删除数量
*/
Integer deleteByLibIds(Collection<Long> ids);
/**
* 通过libIds 查询控制设备列表
*
* @param ids libIds
* @return 返回设备列表
*/
List<AccessControlLibDeviceBo> queryDeviceListByLibIds(Collection<Long> ids);
}

View File

@@ -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<String, Object> params = bo.getParams();
LambdaQueryWrapper<SisLibDeviceRef> 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<SisLibDeviceRefVo> queryByIds(Collection<Long> ids) {
return List.of();
public List<SisLibDeviceRefVo> queryByLibIds(Collection<Long> ids) {
LambdaQueryWrapper<SisLibDeviceRef> lqw = Wrappers.lambdaQuery();
lqw.in(SisLibDeviceRef::getLibId, ids);
return baseMapper.selectVoList(lqw);
}
@Override
public Integer deleteByLibIds(Collection<Long> ids) {
LambdaQueryWrapper<SisLibDeviceRef> lqw = Wrappers.lambdaQuery();
lqw.in(SisLibDeviceRef::getLibId, ids);
return baseMapper.delete(lqw);
}
@Override
public List<AccessControlLibDeviceBo> queryDeviceListByLibIds(Collection<Long> ids) {
return baseMapper.queryDeviceListByLibIds(ids);
}
}

View File

@@ -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<SisLibDeviceRefVo> sisLibDeviceRefVos = sisLibDeviceRefService.queryByLibIds(Collections.singleton(id));
if (CollUtil.isNotEmpty(sisLibDeviceRefVos)) {
List<Long> 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<Long> ids, Boolean isValid) {
// 查询关联的设备信息,先删除设备上的库
List<AccessControlLibDeviceBo> 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;
}
}

View File

@@ -4,4 +4,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.sis.mapper.SisLibDeviceRefMapper">
<select id="queryDeviceListByLibIds" resultType="org.dromara.sis.domain.bo.AccessControlLibDeviceBo">
SELECT
*
FROM
`sis_lib_device_ref` a LEFT JOIN sis_access_control_device b ON a.eqp_id = b.id
WHERE
a.lib_id IN
<foreach collection="ids" item="id" open="(" close=")" index="index" separator=",">
#{id}
</foreach>
</select>
</mapper>