增加人像库

This commit is contained in:
lxj 2025-06-25 18:04:09 +08:00
parent 6de67e1956
commit 3fb9a76876
26 changed files with 262 additions and 549 deletions

View File

@ -0,0 +1,13 @@
package org.dromara.common.core.constant;
public interface CodePrefixConstants {
/**
* 人像库编码前缀
*/
String PERSONLIB_CODE_PREFIX = "100";
/**
* 门禁设备编码前缀
*/
String SIS_DEVICE_CODE_PREFIX = "101";
}

View File

@ -1,34 +1,33 @@
package org.dromara.sis.controller; package org.dromara.sis.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
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.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.excel.utils.ExcelUtil;
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.SisAccessControlBo;
import org.dromara.sis.domain.vo.SisAccessControlVo;
import org.dromara.sis.service.ISisAccessControlService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List; 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.SisAccessControlVo;
import org.dromara.sis.domain.bo.SisAccessControlBo;
import org.dromara.sis.service.ISisAccessControlService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/** /**
* 门禁管理 * 门禁设备
* 前端访问路由地址为:/iot/accessControl * 前端访问路由地址为:/sis/accessControl
* *
* @author lxj * @author lxj
* @date 2025-06-17 * @date 2025-06-25
*/ */
@Validated @Validated
@RequiredArgsConstructor @RequiredArgsConstructor
@ -36,72 +35,72 @@ import java.util.List;
@RequestMapping("/accessControl") @RequestMapping("/accessControl")
public class SisAccessControlController extends BaseController { public class SisAccessControlController extends BaseController {
private final ISisAccessControlService tbAccessControlService; private final ISisAccessControlService sisAccessControlService;
/** /**
* 查询门禁管理列表 * 查询门禁设备列表
*/ */
@SaCheckPermission("property:accessControl:list") @SaCheckPermission("sis:accessControl:list")
@GetMapping("/list") @GetMapping("/list")
public TableDataInfo<SisAccessControlVo> list(SisAccessControlBo bo, PageQuery pageQuery) { public TableDataInfo<SisAccessControlVo> list(SisAccessControlBo bo, PageQuery pageQuery) {
return tbAccessControlService.queryPageList(bo, pageQuery); return sisAccessControlService.queryPageList(bo, pageQuery);
} }
/** /**
* 导出门禁管理列表 * 导出门禁设备列表
*/ */
@SaCheckPermission("property:accessControl:export") @SaCheckPermission("sis:accessControl:export")
@Log(title = "门禁管理", businessType = BusinessType.EXPORT) @Log(title = "门禁设备", businessType = BusinessType.EXPORT)
@PostMapping("/export") @PostMapping("/export")
public void export(SisAccessControlBo bo, HttpServletResponse response) { public void export(SisAccessControlBo bo, HttpServletResponse response) {
List<SisAccessControlVo> list = tbAccessControlService.queryList(bo); List<SisAccessControlVo> list = sisAccessControlService.queryList(bo);
ExcelUtil.exportExcel(list, "门禁管理", SisAccessControlVo.class, response); ExcelUtil.exportExcel(list, "门禁设备", SisAccessControlVo.class, response);
} }
/** /**
* 获取门禁管理详细信息 * 获取门禁设备详细信息
* *
* @param id 主键 * @param id 主键
*/ */
@SaCheckPermission("property:accessControl:query") @SaCheckPermission("sis:accessControl:query")
@GetMapping("/{id}") @GetMapping("/{id}")
public R<SisAccessControlVo> getInfo(@NotNull(message = "主键不能为空") public R<SisAccessControlVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable("id") Long id) { @PathVariable("id") Long id) {
return R.ok(tbAccessControlService.queryById(id)); return R.ok(sisAccessControlService.queryById(id));
} }
/** /**
* 新增门禁管理 * 新增门禁设备
*/ */
@SaCheckPermission("property:accessControl:add") @SaCheckPermission("sis:accessControl:add")
@Log(title = "门禁管理", businessType = BusinessType.INSERT) @Log(title = "门禁设备", businessType = BusinessType.INSERT)
@RepeatSubmit() @RepeatSubmit()
@PostMapping() @PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody SisAccessControlBo bo) { public R<Void> add(@Validated(AddGroup.class) @RequestBody SisAccessControlBo bo) {
return toAjax(tbAccessControlService.insertByBo(bo)); return toAjax(sisAccessControlService.insertByBo(bo));
} }
/** /**
* 修改门禁管理 * 修改门禁设备
*/ */
@SaCheckPermission("property:accessControl:edit") @SaCheckPermission("sis:accessControl:edit")
@Log(title = "门禁管理", businessType = BusinessType.UPDATE) @Log(title = "门禁设备", businessType = BusinessType.UPDATE)
@RepeatSubmit() @RepeatSubmit()
@PutMapping() @PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody SisAccessControlBo bo) { public R<Void> edit(@Validated(EditGroup.class) @RequestBody SisAccessControlBo bo) {
return toAjax(tbAccessControlService.updateByBo(bo)); return toAjax(sisAccessControlService.updateByBo(bo));
} }
/** /**
* 删除门禁管理 * 删除门禁设备
* *
* @param ids 主键串 * @param ids 主键串
*/ */
@SaCheckPermission("property:accessControl:remove") @SaCheckPermission("sis:accessControl:remove")
@Log(title = "门禁管理", businessType = BusinessType.DELETE) @Log(title = "门禁设备", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}") @DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空") public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable("ids") Long[] ids) { @PathVariable("ids") Long[] ids) {
return toAjax(tbAccessControlService.deleteWithValidByIds(List.of(ids), true)); return toAjax(sisAccessControlService.deleteWithValidByIds(List.of(ids), true));
} }
} }

View File

@ -1,29 +1,28 @@
package org.dromara.sis.domain; package org.dromara.sis.domain;
import org.dromara.common.mybatis.core.domain.BaseEntity; import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.*;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import java.util.Date;
import java.io.Serial; import java.io.Serial;
/** /**
* 门禁管理对象 tb_access_control * 门禁设备对象 sis_access_control
* *
* @author mocheng * @author lxj
* @since 2025-06-17 * @date 2025-06-25
*/ */
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@TableName("sis_access_control") @TableName("sis_access_control")
public class SisAccessControl extends BaseEntity { public class SisAccessControl extends TenantEntity {
@Serial @Serial
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** /**
* id *
*/ */
@TableId(value = "id") @TableId(value = "id")
private Long id; private Long id;
@ -54,7 +53,7 @@ public class SisAccessControl extends BaseEntity {
private String accessIp; private String accessIp;
/** /**
* 设备端口 *
*/ */
private Long accessPort; private Long accessPort;
@ -64,7 +63,7 @@ public class SisAccessControl extends BaseEntity {
private Long accessType; private Long accessType;
/** /**
* 工程编号 *
*/ */
private String factoryCode; private String factoryCode;
@ -89,19 +88,9 @@ public class SisAccessControl extends BaseEntity {
private String orgCode; private String orgCode;
/** /**
* 数据状态1有效0无效 * 搜索值
*/ */
private Long dataState; private String searchValue;
/**
* 创建人
*/
private Long createEmpId;
/**
* 修改时间
*/
private Date modifyTime;
} }

View File

@ -72,20 +72,4 @@ public class SisAccessControlDevice extends TenantEntity {
*/ */
private String eqpPwd; private String eqpPwd;
/**
* 创建人id
*/
private Long createById;
/**
* 更新人id
*/
private Long updateById;
/**
* 搜索值
*/
private String searchValue;
} }

View File

@ -91,20 +91,5 @@ rtsp 时,该字段必填)
*/ */
private Long videoId; private Long videoId;
/**
* 创建人id
*/
private Long createById;
/**
* 更新人id
*/
private Long updateById;
/**
* 搜索值
*/
private String searchValue;
} }

View File

@ -52,20 +52,4 @@ public class SisLibDeviceImgRef extends TenantEntity {
*/ */
private Long eqpLibImgId; private Long eqpLibImgId;
/**
* 创建人id
*/
private Long createById;
/**
* 更新人id
*/
private Long updateById;
/**
* 搜索值
*/
private String searchValue;
} }

View File

@ -47,20 +47,5 @@ public class SisLibDeviceRef extends TenantEntity {
*/ */
private Long eqpLibState; private Long eqpLibState;
/**
* 创建人id
*/
private Long createById;
/**
* 更新人id
*/
private Long updateById;
/**
* 搜索值
*/
private String searchValue;
} }

View File

@ -52,20 +52,5 @@ public class SisPersonLib extends TenantEntity {
*/ */
private Long busiType; private Long busiType;
/**
* 创建人id
*/
private Long createById;
/**
* 更新人id
*/
private Long updateById;
/**
* 搜索值
*/
private String searchValue;
} }

View File

@ -1,9 +1,10 @@
package org.dromara.sis.domain; package org.dromara.sis.domain;
import org.dromara.common.tenant.core.TenantEntity; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import org.dromara.common.tenant.core.TenantEntity;
import java.io.Serial; import java.io.Serial;
@ -80,20 +81,5 @@ public class SisPersonLibImg extends TenantEntity {
*/ */
private String birthDate; private String birthDate;
/**
* 创建人id
*/
private Long createById;
/**
* 更新人id
*/
private Long updateById;
/**
* 搜索值
*/
private String searchValue;
} }

View File

@ -1,20 +1,19 @@
package org.dromara.sis.domain.bo; package org.dromara.sis.domain.bo;
import io.github.linpeilie.annotations.AutoMapper; import org.dromara.sis.domain.SisAccessControl;
import jakarta.validation.constraints.NotBlank; import org.dromara.common.mybatis.core.domain.BaseEntity;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.common.core.validate.AddGroup; import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup; import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.mybatis.core.domain.BaseEntity; import io.github.linpeilie.annotations.AutoMapper;
import org.dromara.sis.domain.SisAccessControl; import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
/** /**
* 门禁管理业务对象 tb_access_control * 门禁设备业务对象 sis_access_control
* *
* @author lxj * @author lxj
* @date 2025-06-17 * @date 2025-06-25
*/ */
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@ -22,60 +21,63 @@ import org.dromara.sis.domain.SisAccessControl;
public class SisAccessControlBo extends BaseEntity { public class SisAccessControlBo extends BaseEntity {
/** /**
* id *
*/ */
@NotNull(message = "不能为空", groups = { EditGroup.class })
private Long id; private Long id;
/** /**
* 门禁设备编码 * 门禁设备编码
*/ */
@NotBlank(message = "门禁设备编码不能为空", groups = {AddGroup.class, EditGroup.class}) @NotBlank(message = "门禁设备编码不能为空", groups = { AddGroup.class, EditGroup.class })
private String accessCode; private String accessCode;
/** /**
* 门禁名称 * 门禁名称
*/ */
@NotBlank(message = "门禁名称不能为空", groups = {AddGroup.class, EditGroup.class}) @NotBlank(message = "门禁名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String accessName; private String accessName;
/** /**
* 园区编码 * 园区编码
*/ */
@NotBlank(message = "园区编码不能为空", groups = {AddGroup.class, EditGroup.class}) @NotBlank(message = "园区编码不能为空", groups = { AddGroup.class, EditGroup.class })
private String communityCode; private String communityCode;
/** /**
* 建筑编码 * 建筑编码
*/ */
@NotBlank(message = "建筑编码不能为空", groups = {AddGroup.class, EditGroup.class}) @NotBlank(message = "建筑编码不能为空", groups = { AddGroup.class, EditGroup.class })
private String buildingCode; private String buildingCode;
/** /**
* 门禁设备ip * 门禁设备ip
*/ */
@NotBlank(message = "门禁设备ip不能为空", groups = { AddGroup.class, EditGroup.class })
private String accessIp; private String accessIp;
/** /**
* 设备端口 *
*/ */
@NotNull(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
private Long accessPort; private Long accessPort;
/** /**
* 门禁设备类型 * 门禁设备类型
*/ */
@NotNull(message = "门禁设备类型不能为空", groups = {AddGroup.class, EditGroup.class}) @NotNull(message = "门禁设备类型不能为空", groups = { AddGroup.class, EditGroup.class })
private Long accssType; private Long accessType;
/** /**
* 工程编号 *
*/ */
@NotBlank(message = "工程编号不能为空", groups = {AddGroup.class, EditGroup.class}) @NotBlank(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
private String factoryCode; private String factoryCode;
/** /**
* 控制卡类型1-系统2-E8 * 控制卡类型1-系统2-E8
*/ */
@NotNull(message = "控制卡类型1-系统2-E8不能为空", groups = {AddGroup.class, EditGroup.class}) @NotNull(message = "控制卡类型1-系统2-E8不能为空", groups = { AddGroup.class, EditGroup.class })
private Long controlType; private Long controlType;
/** /**
@ -91,14 +93,19 @@ public class SisAccessControlBo extends BaseEntity {
/** /**
* 组织编码 * 组织编码
*/ */
@NotBlank(message = "组织编码不能为空", groups = {AddGroup.class, EditGroup.class}) @NotBlank(message = "组织编码不能为空", groups = { AddGroup.class, EditGroup.class })
private String orgCode; private String orgCode;
/** /**
* 数据状态1有效0无效 * 数据状态1有效0无效
*/ */
@NotNull(message = "数据状态1有效0无效不能为空", groups = {AddGroup.class, EditGroup.class}) @NotNull(message = "数据状态1有效0无效不能为空", groups = { AddGroup.class, EditGroup.class })
private Long dataState; private Long dataState;
/**
* 搜索值
*/
private String searchValue;
} }

View File

@ -1,13 +1,14 @@
package org.dromara.sis.domain.bo; package org.dromara.sis.domain.bo;
import org.dromara.sis.domain.SisAccessControlDevice;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper; import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*; 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 * 门禁设备业务对象 sis_access_control_device
@ -23,19 +24,13 @@ public class SisAccessControlDeviceBo extends BaseEntity {
/** /**
* 主键id * 主键id
*/ */
@NotNull(message = "主键id不能为空", groups = { EditGroup.class }) @NotNull(message = "主键id不能为空", groups = {EditGroup.class})
private Long id; private Long id;
/**
* 设备编码
*/
@NotBlank(message = "设备编码不能为空", groups = { AddGroup.class, EditGroup.class })
private String eqpNo;
/** /**
* 设备名称 * 设备名称
*/ */
@NotBlank(message = "设备名称不能为空", groups = { AddGroup.class, EditGroup.class }) @NotBlank(message = "设备名称不能为空", groups = {AddGroup.class, EditGroup.class})
private String eqpName; private String eqpName;
/** /**
@ -56,41 +51,25 @@ public class SisAccessControlDeviceBo extends BaseEntity {
/** /**
* 设备ip * 设备ip
*/ */
@NotBlank(message = "设备ip不能为空", groups = { AddGroup.class, EditGroup.class }) @NotBlank(message = "设备ip不能为空", groups = {AddGroup.class, EditGroup.class})
private String eqpIp; private String eqpIp;
/** /**
* 设备端口 * 设备端口
*/ */
@NotNull(message = "设备端口不能为空", groups = { AddGroup.class, EditGroup.class }) @NotNull(message = "设备端口不能为空", groups = {AddGroup.class, EditGroup.class})
private Long eqpPort; private Long eqpPort;
/** /**
* 设备账号 * 设备账号
*/ */
@NotBlank(message = "设备账号不能为空", groups = { AddGroup.class, EditGroup.class }) @NotBlank(message = "设备账号不能为空", groups = {AddGroup.class, EditGroup.class})
private String eqpAccount; private String eqpAccount;
/** /**
* 设备密码 * 设备密码
*/ */
@NotBlank(message = "设备密码不能为空", groups = { AddGroup.class, EditGroup.class }) @NotBlank(message = "设备密码不能为空", groups = {AddGroup.class, EditGroup.class})
private String eqpPwd; private String eqpPwd;
/**
* 创建人id
*/
private Long createById;
/**
* 更新人id
*/
private Long updateById;
/**
* 搜索值
*/
private String searchValue;
} }

View File

@ -1,13 +1,16 @@
package org.dromara.sis.domain.bo; package org.dromara.sis.domain.bo;
import org.dromara.sis.domain.SisPersonLib;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper; import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*; 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.common.translation.annotation.Translation;
import org.dromara.common.translation.constant.TransConstant;
import org.dromara.sis.domain.SisPersonLib;
/** /**
* 人像库业务对象 tb_person_lib * 人像库业务对象 tb_person_lib
@ -23,19 +26,15 @@ public class SisPersonLibBo extends BaseEntity {
/** /**
* 主键id * 主键id
*/ */
@NotNull(message = "主键id不能为空", groups = { EditGroup.class }) @NotNull(message = "主键id不能为空", groups = {EditGroup.class})
private Long id; private Long id;
/**
* 人员库编码
*/
@NotBlank(message = "人员库编码不能为空", groups = { AddGroup.class, EditGroup.class })
private String libCode; private String libCode;
/** /**
* 人员库名称 * 人员库名称
*/ */
@NotBlank(message = "人员库名称不能为空", groups = { AddGroup.class, EditGroup.class }) @NotBlank(message = "人员库名称不能为空", groups = {AddGroup.class, EditGroup.class})
private String libName; private String libName;
/** /**
@ -48,25 +47,17 @@ public class SisPersonLibBo extends BaseEntity {
*/ */
private Long libType; private Long libType;
/**
* 库类型名称
*/
@Translation(type = TransConstant.DICT_TYPE_TO_LABEL, mapper = "libType", other = "sis_lib_type")
private String libTypeName;
/** /**
* 库的业务类型 1: 门禁库2: 黑名单库 * 库的业务类型 1: 门禁库2: 黑名单库
*/ */
private Long busiType; private Long busiType = 1L;
/**
* 创建人id
*/
private Long createById;
/**
* 更新人id
*/
private Long updateById;
/**
* 搜索值
*/
private String searchValue;
} }

View File

@ -1,16 +1,15 @@
package org.dromara.sis.domain.vo; package org.dromara.sis.domain.vo;
import org.dromara.sis.domain.SisAccessControlDevice;
import cn.idev.excel.annotation.ExcelIgnoreUnannotated; import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty; 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 io.github.linpeilie.annotations.AutoMapper;
import lombok.Data; 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.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date;
@ -52,6 +51,9 @@ public class SisAccessControlDeviceVo implements Serializable {
@ExcelProperty(value = "厂商编码") @ExcelProperty(value = "厂商编码")
private String factoryNo; private String factoryNo;
@Translation(type = TransConstant.DICT_TYPE_TO_LABEL, mapper = "factoryNo", other = "sis_access_control_device_type")
private String factoryName;
/** /**
* 设备类型 * 设备类型
*/ */

View File

@ -1,20 +1,24 @@
package org.dromara.sis.domain.vo; package org.dromara.sis.domain.vo;
import org.dromara.sis.domain.SisAccessControl;
import cn.idev.excel.annotation.ExcelIgnoreUnannotated; import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty; 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 io.github.linpeilie.annotations.AutoMapper;
import lombok.Data; import lombok.Data;
import org.dromara.sis.domain.SisAccessControl;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date;
/** /**
* 门禁管理视图对象 tb_access_control * 门禁设备视图对象 sis_access_control
* *
* @author lxj * @author lxj
* @date 2025-06-17 * @date 2025-06-25
*/ */
@Data @Data
@ExcelIgnoreUnannotated @ExcelIgnoreUnannotated
@ -25,9 +29,9 @@ public class SisAccessControlVo implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** /**
* id *
*/ */
@ExcelProperty(value = "id") @ExcelProperty(value = "")
private Long id; private Long id;
/** /**
@ -61,21 +65,21 @@ public class SisAccessControlVo implements Serializable {
private String accessIp; private String accessIp;
/** /**
* 设备端口 *
*/ */
@ExcelProperty(value = "设备端口") @ExcelProperty(value = "")
private Long accessPort; private Long accessPort;
/** /**
* 门禁设备类型 * 门禁设备类型
*/ */
@ExcelProperty(value = "门禁设备类型") @ExcelProperty(value = "门禁设备类型")
private Long accssType; private Long accessType;
/** /**
* 工程编号 *
*/ */
@ExcelProperty(value = "工程编号") @ExcelProperty(value = "")
private String factoryCode; private String factoryCode;
/** /**
@ -108,5 +112,11 @@ public class SisAccessControlVo implements Serializable {
@ExcelProperty(value = "数据状态1有效0无效") @ExcelProperty(value = "数据状态1有效0无效")
private Long dataState; private Long dataState;
/**
* 搜索值
*/
@ExcelProperty(value = "搜索值")
private String searchValue;
} }

View File

@ -1,17 +1,15 @@
package org.dromara.sis.domain.vo; package org.dromara.sis.domain.vo;
import org.dromara.sis.domain.SisDevicePoint;
import cn.idev.excel.annotation.ExcelIgnoreUnannotated; import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty; 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 io.github.linpeilie.annotations.AutoMapper;
import lombok.Data; import lombok.Data;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import org.dromara.sis.domain.SisDevicePoint;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date;
/** /**
@ -42,20 +40,17 @@ public class SisDevicePointVo implements Serializable {
/** /**
* 视频协议 1onvif 2 * 视频协议 1onvif 2
rtsp * rtsp
*/ */
@ExcelProperty(value = "视频协议 1onvif 2 @ExcelProperty(value = "视频协议")
rtsp")
private Long video; private Long video;
/** /**
* 传输协议(AIBOX 需要 * 传输协议(AIBOX 需要
体机不需要) 1: tcp 2: * 体机不需要) 1: tcp 2:
udp * udp
*/ */
@ExcelProperty(value = "传输协议(AIBOX 需要,一 @ExcelProperty(value = "传输协议")
体机不需要) 1: tcp 2:
udp")
private Long transportType; private Long transportType;
/** /**
@ -66,11 +61,10 @@ udp")
/** /**
* rtsp 地址当视频协议为 * rtsp 地址当视频协议为
rtsp 该字段必填 * rtsp 该字段必填
*/ */
@ExcelProperty(value = "rtsp 地址", converter = ExcelDictConvert.class) @ExcelProperty(value = "rtsp 地址", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "当=视频协议为 @ExcelDictFormat(readConverterExp = "视频协议")
rtsp,=该字段必填")
private String rtspAddr; private String rtspAddr;
/** /**
@ -99,38 +93,21 @@ rtsp,时=,该字段必填")
/** /**
* onvif 设备码流添加方 * onvif 设备码流添加方
1主码流 2自定 * 1主码流 2自定
义码流 * 义码流
*/ */
@ExcelProperty(value = "onvif 设备码流添加方 @ExcelProperty(value = "码流")
1主码流 2自定
义码流")
private Long videoType; private Long videoType;
/** /**
* 码流 id当选择自定义码 * 码流 id当选择自定义码
流时该字段必填值为 * 流时该字段必填值为
获取设备码流信息接口返 * 获取设备码流信息接口返
回的码流 id * 回的码流 id
*/ */
@ExcelProperty(value = "码流 id当选择自定义码 @ExcelProperty(value = "码流id")
流时该字段必填值为
获取设备码流信息接口返
回的码流 id")
private Long videoId; private Long videoId;
/**
* 创建人id
*/
@ExcelProperty(value = "创建人id")
private Long createById;
/**
* 更新人id
*/
@ExcelProperty(value = "更新人id")
private Long updateById;
/** /**
* 搜索值 * 搜索值
*/ */

View File

@ -1,17 +1,15 @@
package org.dromara.sis.mapper; package org.dromara.sis.mapper;
import org.apache.ibatis.annotations.Mapper;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.sis.domain.SisAccessControl; import org.dromara.sis.domain.SisAccessControl;
import org.dromara.sis.domain.vo.SisAccessControlVo; import org.dromara.sis.domain.vo.SisAccessControlVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/** /**
* 门禁管理Mapper接口 * 门禁设备Mapper接口
* *
* @author mocheng * @author lxj
* @date 2025-06-17 * @date 2025-06-25
*/ */
@Mapper
public interface SisAccessControlMapper extends BaseMapperPlus<SisAccessControl, SisAccessControlVo> { public interface SisAccessControlMapper extends BaseMapperPlus<SisAccessControl, SisAccessControlVo> {
} }

View File

@ -1,8 +1,8 @@
package org.dromara.sis.mapper; package org.dromara.sis.mapper;
import org.dromara.sis.domain.SisDevicePoint; import org.dromara.sis.domain.SisDevicePoint;
import org.dromara.sis.domain.vo.SisDevicePointVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.sis.domain.vo.SisDevicePointVo;
/** /**
* 宇视设备点位(通道)Mapper接口 * 宇视设备点位(通道)Mapper接口

View File

@ -1,64 +1,65 @@
package org.dromara.sis.service; package org.dromara.sis.service;
import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.sis.domain.SisAccessControl;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.sis.domain.bo.SisAccessControlBo;
import org.dromara.sis.domain.vo.SisAccessControlVo; import org.dromara.sis.domain.vo.SisAccessControlVo;
import org.dromara.sis.domain.bo.SisAccessControlBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
/** /**
* 门禁管理Service接口 * 门禁设备Service接口
* *
* @author mocheng * @author lxj
* @date 2025-06-17 * @date 2025-06-25
*/ */
public interface ISisAccessControlService { public interface ISisAccessControlService {
/** /**
* 查询门禁管理 * 查询门禁设备
* *
* @param id 主键 * @param id 主键
* @return 门禁管理 * @return 门禁设备
*/ */
SisAccessControlVo queryById(Long id); SisAccessControlVo queryById(Long id);
/** /**
* 分页查询门禁管理列表 * 分页查询门禁设备列表
* *
* @param bo 查询条件 * @param bo 查询条件
* @param pageQuery 分页参数 * @param pageQuery 分页参数
* @return 门禁管理分页列表 * @return 门禁设备分页列表
*/ */
TableDataInfo<SisAccessControlVo> queryPageList(SisAccessControlBo bo, PageQuery pageQuery); TableDataInfo<SisAccessControlVo> queryPageList(SisAccessControlBo bo, PageQuery pageQuery);
/** /**
* 查询符合条件的门禁管理列表 * 查询符合条件的门禁设备列表
* *
* @param bo 查询条件 * @param bo 查询条件
* @return 门禁管理列表 * @return 门禁设备列表
*/ */
List<SisAccessControlVo> queryList(SisAccessControlBo bo); List<SisAccessControlVo> queryList(SisAccessControlBo bo);
/** /**
* 新增门禁管理 * 新增门禁设备
* *
* @param bo 门禁管理 * @param bo 门禁设备
* @return 是否新增成功 * @return 是否新增成功
*/ */
Boolean insertByBo(SisAccessControlBo bo); Boolean insertByBo(SisAccessControlBo bo);
/** /**
* 修改门禁管理 * 修改门禁设备
* *
* @param bo 门禁管理 * @param bo 门禁设备
* @return 是否修改成功 * @return 是否修改成功
*/ */
Boolean updateByBo(SisAccessControlBo bo); Boolean updateByBo(SisAccessControlBo bo);
/** /**
* 校验并批量删除门禁管理信息 * 校验并批量删除门禁设备信息
* *
* @param ids 待删除的主键集合 * @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验 * @param isValid 是否进行有效性校验

View File

@ -1,24 +1,28 @@
package org.dromara.sis.service.impl; package org.dromara.sis.service.impl;
import org.dromara.common.core.utils.MapstructUtils; import cn.hutool.core.util.IdUtil;
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.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.apache.dubbo.config.annotation.DubboReference;
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.bo.SisAccessControlDeviceBo;
import org.dromara.sis.domain.vo.SisAccessControlDeviceVo; import org.dromara.sis.domain.vo.SisAccessControlDeviceVo;
import org.dromara.sis.domain.SisAccessControlDevice;
import org.dromara.sis.mapper.SisAccessControlDeviceMapper; import org.dromara.sis.mapper.SisAccessControlDeviceMapper;
import org.dromara.sis.service.ISisAccessControlDeviceService; 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.List;
import java.util.Map; import java.util.Map;
import java.util.Collection;
/** /**
* 门禁设备Service业务层处理 * 门禁设备Service业务层处理
@ -27,11 +31,12 @@ import java.util.Collection;
* @date 2025-06-25 * @date 2025-06-25
*/ */
@Slf4j @Slf4j
@RequiredArgsConstructor
@Service @Service
public class SisAccessControlDeviceServiceImpl implements ISisAccessControlDeviceService { public class SisAccessControlDeviceServiceImpl implements ISisAccessControlDeviceService {
@Resource
private final SisAccessControlDeviceMapper baseMapper; private SisAccessControlDeviceMapper baseMapper;
@Resource
private DictService dictService;
/** /**
* 查询门禁设备 * 查询门禁设备
@ -40,7 +45,7 @@ public class SisAccessControlDeviceServiceImpl implements ISisAccessControlDevic
* @return 门禁设备 * @return 门禁设备
*/ */
@Override @Override
public SisAccessControlDeviceVo queryById(Long id){ public SisAccessControlDeviceVo queryById(Long id) {
return baseMapper.selectVoById(id); return baseMapper.selectVoById(id);
} }
@ -74,7 +79,6 @@ public class SisAccessControlDeviceServiceImpl implements ISisAccessControlDevic
Map<String, Object> params = bo.getParams(); Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<SisAccessControlDevice> lqw = Wrappers.lambdaQuery(); LambdaQueryWrapper<SisAccessControlDevice> lqw = Wrappers.lambdaQuery();
lqw.orderByAsc(SisAccessControlDevice::getId); lqw.orderByAsc(SisAccessControlDevice::getId);
lqw.eq(StringUtils.isNotBlank(bo.getEqpNo()), SisAccessControlDevice::getEqpNo, bo.getEqpNo());
lqw.like(StringUtils.isNotBlank(bo.getEqpName()), SisAccessControlDevice::getEqpName, bo.getEqpName()); lqw.like(StringUtils.isNotBlank(bo.getEqpName()), SisAccessControlDevice::getEqpName, bo.getEqpName());
lqw.eq(StringUtils.isNotBlank(bo.getFactoryNo()), SisAccessControlDevice::getFactoryNo, bo.getFactoryNo()); lqw.eq(StringUtils.isNotBlank(bo.getFactoryNo()), SisAccessControlDevice::getFactoryNo, bo.getFactoryNo());
lqw.eq(bo.getEqpType() != null, SisAccessControlDevice::getEqpType, bo.getEqpType()); lqw.eq(bo.getEqpType() != null, SisAccessControlDevice::getEqpType, bo.getEqpType());
@ -83,8 +87,6 @@ public class SisAccessControlDeviceServiceImpl implements ISisAccessControlDevic
lqw.eq(bo.getEqpPort() != null, SisAccessControlDevice::getEqpPort, bo.getEqpPort()); lqw.eq(bo.getEqpPort() != null, SisAccessControlDevice::getEqpPort, bo.getEqpPort());
lqw.eq(StringUtils.isNotBlank(bo.getEqpAccount()), SisAccessControlDevice::getEqpAccount, bo.getEqpAccount()); 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.getEqpPwd()), SisAccessControlDevice::getEqpPwd, bo.getEqpPwd());
lqw.eq(bo.getCreateById() != null, SisAccessControlDevice::getCreateById, bo.getCreateById());
lqw.eq(bo.getUpdateById() != null, SisAccessControlDevice::getUpdateById, bo.getUpdateById());
lqw.eq(StringUtils.isNotBlank(bo.getSearchValue()), SisAccessControlDevice::getSearchValue, bo.getSearchValue()); lqw.eq(StringUtils.isNotBlank(bo.getSearchValue()), SisAccessControlDevice::getSearchValue, bo.getSearchValue());
return lqw; return lqw;
} }
@ -98,7 +100,8 @@ public class SisAccessControlDeviceServiceImpl implements ISisAccessControlDevic
@Override @Override
public Boolean insertByBo(SisAccessControlDeviceBo bo) { public Boolean insertByBo(SisAccessControlDeviceBo bo) {
SisAccessControlDevice add = MapstructUtils.convert(bo, SisAccessControlDevice.class); SisAccessControlDevice add = MapstructUtils.convert(bo, SisAccessControlDevice.class);
validEntityBeforeSave(add); // 生成设备比吗
add.setEqpNo(CodePrefixConstants.SIS_DEVICE_CODE_PREFIX + IdUtil.getSnowflakeNextIdStr());
boolean flag = baseMapper.insert(add) > 0; boolean flag = baseMapper.insert(add) > 0;
if (flag) { if (flag) {
bo.setId(add.getId()); bo.setId(add.getId());
@ -122,7 +125,7 @@ public class SisAccessControlDeviceServiceImpl implements ISisAccessControlDevic
/** /**
* 保存前的数据校验 * 保存前的数据校验
*/ */
private void validEntityBeforeSave(SisAccessControlDevice entity){ private void validEntityBeforeSave(SisAccessControlDevice entity) {
//TODO 做一些数据校验,如唯一约束 //TODO 做一些数据校验,如唯一约束
} }
@ -135,7 +138,7 @@ public class SisAccessControlDeviceServiceImpl implements ISisAccessControlDevic
*/ */
@Override @Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) { public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){ if (isValid) {
//TODO 做一些业务上的校验,判断是否需要校验 //TODO 做一些业务上的校验,判断是否需要校验
} }
return baseMapper.deleteByIds(ids) > 0; return baseMapper.deleteByIds(ids) > 0;

View File

@ -9,24 +9,22 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.dromara.sis.sdk.e8.DoorDeviceService;
import org.dromara.sis.sdk.e8.domain.door.req.DoorDeviceAddReq;
import org.dromara.sis.sdk.e8.domain.door.res.DoorDeviceAddRes;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.dromara.sis.domain.bo.SisAccessControlBo; import org.dromara.sis.domain.bo.SisAccessControlBo;
import org.dromara.sis.domain.vo.SisAccessControlVo; import org.dromara.sis.domain.vo.SisAccessControlVo;
import org.dromara.sis.domain.SisAccessControl; import org.dromara.sis.domain.SisAccessControl;
import org.dromara.sis.mapper.SisAccessControlMapper; import org.dromara.sis.mapper.SisAccessControlMapper;
import org.dromara.sis.service.ISisAccessControlService; import org.dromara.sis.service.ISisAccessControlService;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Collection; import java.util.Collection;
/** /**
* 门禁管理Service业务层处理 * 门禁设备Service业务层处理
* *
* @author mocheng * @author lxj
* @since 2025-06-17 * @date 2025-06-25
*/ */
@Slf4j @Slf4j
@RequiredArgsConstructor @RequiredArgsConstructor
@ -34,25 +32,24 @@ import java.util.Collection;
public class SisAccessControlServiceImpl implements ISisAccessControlService { public class SisAccessControlServiceImpl implements ISisAccessControlService {
private final SisAccessControlMapper baseMapper; private final SisAccessControlMapper baseMapper;
private final DoorDeviceService doorDeviceService;
/** /**
* 查询门禁管理 * 查询门禁设备
* *
* @param id 主键 * @param id 主键
* @return 门禁管理 * @return 门禁设备
*/ */
@Override @Override
public SisAccessControlVo queryById(Long id) { public SisAccessControlVo queryById(Long id){
return baseMapper.selectVoById(id); return baseMapper.selectVoById(id);
} }
/** /**
* 分页查询门禁管理列表 * 分页查询门禁设备列表
* *
* @param bo 查询条件 * @param bo 查询条件
* @param pageQuery 分页参数 * @param pageQuery 分页参数
* @return 门禁管理分页列表 * @return 门禁设备分页列表
*/ */
@Override @Override
public TableDataInfo<SisAccessControlVo> queryPageList(SisAccessControlBo bo, PageQuery pageQuery) { public TableDataInfo<SisAccessControlVo> queryPageList(SisAccessControlBo bo, PageQuery pageQuery) {
@ -62,10 +59,10 @@ public class SisAccessControlServiceImpl implements ISisAccessControlService {
} }
/** /**
* 查询符合条件的门禁管理列表 * 查询符合条件的门禁设备列表
* *
* @param bo 查询条件 * @param bo 查询条件
* @return 门禁管理列表 * @return 门禁设备列表
*/ */
@Override @Override
public List<SisAccessControlVo> queryList(SisAccessControlBo bo) { public List<SisAccessControlVo> queryList(SisAccessControlBo bo) {
@ -83,41 +80,25 @@ public class SisAccessControlServiceImpl implements ISisAccessControlService {
lqw.eq(StringUtils.isNotBlank(bo.getBuildingCode()), SisAccessControl::getBuildingCode, bo.getBuildingCode()); lqw.eq(StringUtils.isNotBlank(bo.getBuildingCode()), SisAccessControl::getBuildingCode, bo.getBuildingCode());
lqw.eq(StringUtils.isNotBlank(bo.getAccessIp()), SisAccessControl::getAccessIp, bo.getAccessIp()); lqw.eq(StringUtils.isNotBlank(bo.getAccessIp()), SisAccessControl::getAccessIp, bo.getAccessIp());
lqw.eq(bo.getAccessPort() != null, SisAccessControl::getAccessPort, bo.getAccessPort()); lqw.eq(bo.getAccessPort() != null, SisAccessControl::getAccessPort, bo.getAccessPort());
lqw.eq(bo.getAccssType() != null, SisAccessControl::getAccessType, bo.getAccssType()); lqw.eq(bo.getAccessType() != null, SisAccessControl::getAccessType, bo.getAccessType());
lqw.eq(StringUtils.isNotBlank(bo.getFactoryCode()), SisAccessControl::getFactoryCode, bo.getFactoryCode()); lqw.eq(StringUtils.isNotBlank(bo.getFactoryCode()), SisAccessControl::getFactoryCode, bo.getFactoryCode());
lqw.eq(bo.getControlType() != null, SisAccessControl::getControlType, bo.getControlType()); lqw.eq(bo.getControlType() != null, SisAccessControl::getControlType, bo.getControlType());
lqw.eq(StringUtils.isNotBlank(bo.getControlCode()), SisAccessControl::getControlCode, bo.getControlCode()); lqw.eq(StringUtils.isNotBlank(bo.getControlCode()), SisAccessControl::getControlCode, bo.getControlCode());
lqw.eq(StringUtils.isNotBlank(bo.getOutCode()), SisAccessControl::getOutCode, bo.getOutCode()); lqw.eq(StringUtils.isNotBlank(bo.getOutCode()), SisAccessControl::getOutCode, bo.getOutCode());
lqw.eq(StringUtils.isNotBlank(bo.getOrgCode()), SisAccessControl::getOrgCode, bo.getOrgCode()); lqw.eq(StringUtils.isNotBlank(bo.getOrgCode()), SisAccessControl::getOrgCode, bo.getOrgCode());
lqw.eq(bo.getDataState() != null, SisAccessControl::getDataState, bo.getDataState()); lqw.eq(StringUtils.isNotBlank(bo.getSearchValue()), SisAccessControl::getSearchValue, bo.getSearchValue());
return lqw; return lqw;
} }
/** /**
* 新增门禁管理 * 新增门禁设备
* *
* @param bo 门禁管理 * @param bo 门禁设备
* @return 是否新增成功 * @return 是否新增成功
*/ */
@Override @Override
public Boolean insertByBo(SisAccessControlBo bo) { public Boolean insertByBo(SisAccessControlBo bo) {
SisAccessControl add = MapstructUtils.convert(bo, SisAccessControl.class); SisAccessControl add = MapstructUtils.convert(bo, SisAccessControl.class);
// 添加E8门禁设备
if (add.getControlType() == 2L){
DoorDeviceAddReq e8DoorReq = new DoorDeviceAddReq();
e8DoorReq.setIp(add.getAccessIp());
e8DoorReq.setType(add.getAccessType());
e8DoorReq.setPort(add.getAccessPort());
e8DoorReq.setName(add.getAccessName());
DoorDeviceAddRes e8DoorRes = doorDeviceService.addDoorDevice(e8DoorReq);
if (e8DoorRes != null) {
add.setOutCode(e8DoorRes.getId().toString());
} else {
return false;
}
}
validEntityBeforeSave(add); validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0; boolean flag = baseMapper.insert(add) > 0;
if (flag) { if (flag) {
@ -127,9 +108,9 @@ public class SisAccessControlServiceImpl implements ISisAccessControlService {
} }
/** /**
* 修改门禁管理 * 修改门禁设备
* *
* @param bo 门禁管理 * @param bo 门禁设备
* @return 是否修改成功 * @return 是否修改成功
*/ */
@Override @Override
@ -142,12 +123,12 @@ public class SisAccessControlServiceImpl implements ISisAccessControlService {
/** /**
* 保存前的数据校验 * 保存前的数据校验
*/ */
private void validEntityBeforeSave(SisAccessControl entity) { private void validEntityBeforeSave(SisAccessControl entity){
//TODO 做一些数据校验,如唯一约束 //TODO 做一些数据校验,如唯一约束
} }
/** /**
* 校验并批量删除门禁管理信息 * 校验并批量删除门禁设备信息
* *
* @param ids 待删除的主键集合 * @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验 * @param isValid 是否进行有效性校验
@ -155,7 +136,7 @@ public class SisAccessControlServiceImpl implements ISisAccessControlService {
*/ */
@Override @Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) { public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if (isValid) { if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验 //TODO 做一些业务上的校验,判断是否需要校验
} }
return baseMapper.deleteByIds(ids) > 0; return baseMapper.deleteByIds(ids) > 0;

View File

@ -1,145 +0,0 @@
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 lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.dromara.sis.domain.bo.SisDevicePointBo;
import org.dromara.sis.domain.vo.SisDevicePointVo;
import org.dromara.sis.domain.SisDevicePoint;
import org.dromara.sis.mapper.SisDevicePointMapper;
import org.dromara.sis.service.ISisDevicePointService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 宇视设备点位(通道)Service业务层处理
*
* @author mocheng
* @date 2025-06-25
*/
@Slf4j
@RequiredArgsConstructor
@Service
public class SisDevicePointServiceImpl implements ISisDevicePointService {
private final SisDevicePointMapper baseMapper;
/**
* 查询宇视设备点位(通道)
*
* @param id 主键
* @return 宇视设备点位(通道)
*/
@Override
public SisDevicePointVo queryById(Long id){
return baseMapper.selectVoById(id);
}
/**
* 分页查询宇视设备点位(通道)列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 宇视设备点位(通道)分页列表
*/
@Override
public TableDataInfo<SisDevicePointVo> queryPageList(SisDevicePointBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<SisDevicePoint> lqw = buildQueryWrapper(bo);
Page<SisDevicePointVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询符合条件的宇视设备点位(通道)列表
*
* @param bo 查询条件
* @return 宇视设备点位(通道)列表
*/
@Override
public List<SisDevicePointVo> queryList(SisDevicePointBo bo) {
LambdaQueryWrapper<SisDevicePoint> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<SisDevicePoint> buildQueryWrapper(SisDevicePointBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<SisDevicePoint> lqw = Wrappers.lambdaQuery();
lqw.orderByAsc(SisDevicePoint::getId);
lqw.eq(StringUtils.isNotBlank(bo.getEqpCode()), SisDevicePoint::getEqpCode, bo.getEqpCode());
lqw.eq(bo.getVideo() != null, SisDevicePoint::getVideo, bo.getVideo());
lqw.eq(bo.getTransportType() != null, SisDevicePoint::getTransportType, bo.getTransportType());
lqw.like(StringUtils.isNotBlank(bo.getChannelName()), SisDevicePoint::getChannelName, bo.getChannelName());
lqw.eq(StringUtils.isNotBlank(bo.getRtspAddr()), SisDevicePoint::getRtspAddr, bo.getRtspAddr());
lqw.eq(StringUtils.isNotBlank(bo.getIp()), SisDevicePoint::getIp, bo.getIp());
lqw.eq(bo.getPort() != null, SisDevicePoint::getPort, bo.getPort());
lqw.like(StringUtils.isNotBlank(bo.getUsername()), SisDevicePoint::getUsername, bo.getUsername());
lqw.eq(StringUtils.isNotBlank(bo.getPwd()), SisDevicePoint::getPwd, bo.getPwd());
lqw.eq(bo.getVideoType() != null, SisDevicePoint::getVideoType, bo.getVideoType());
lqw.eq(bo.getVideoId() != null, SisDevicePoint::getVideoId, bo.getVideoId());
lqw.eq(bo.getCreateById() != null, SisDevicePoint::getCreateById, bo.getCreateById());
lqw.eq(bo.getUpdateById() != null, SisDevicePoint::getUpdateById, bo.getUpdateById());
lqw.eq(StringUtils.isNotBlank(bo.getSearchValue()), SisDevicePoint::getSearchValue, bo.getSearchValue());
return lqw;
}
/**
* 新增宇视设备点位(通道)
*
* @param bo 宇视设备点位(通道)
* @return 是否新增成功
*/
@Override
public Boolean insertByBo(SisDevicePointBo bo) {
SisDevicePoint add = MapstructUtils.convert(bo, SisDevicePoint.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
return flag;
}
/**
* 修改宇视设备点位(通道)
*
* @param bo 宇视设备点位(通道)
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(SisDevicePointBo bo) {
SisDevicePoint update = MapstructUtils.convert(bo, SisDevicePoint.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(SisDevicePoint entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 校验并批量删除宇视设备点位(通道)信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
}

View File

@ -79,8 +79,6 @@ public class SisLibDeviceImgRefServiceImpl implements ISisLibDeviceImgRefService
lqw.eq(StringUtils.isNotBlank(bo.getEqpCode()), SisLibDeviceImgRef::getEqpCode, bo.getEqpCode()); lqw.eq(StringUtils.isNotBlank(bo.getEqpCode()), SisLibDeviceImgRef::getEqpCode, bo.getEqpCode());
lqw.eq(bo.getEqpLibId() != null, SisLibDeviceImgRef::getEqpLibId, bo.getEqpLibId()); lqw.eq(bo.getEqpLibId() != null, SisLibDeviceImgRef::getEqpLibId, bo.getEqpLibId());
lqw.eq(bo.getEqpLibImgId() != null, SisLibDeviceImgRef::getEqpLibImgId, bo.getEqpLibImgId()); lqw.eq(bo.getEqpLibImgId() != null, SisLibDeviceImgRef::getEqpLibImgId, bo.getEqpLibImgId());
lqw.eq(bo.getCreateById() != null, SisLibDeviceImgRef::getCreateById, bo.getCreateById());
lqw.eq(bo.getUpdateById() != null, SisLibDeviceImgRef::getUpdateById, bo.getUpdateById());
lqw.eq(StringUtils.isNotBlank(bo.getSearchValue()), SisLibDeviceImgRef::getSearchValue, bo.getSearchValue()); lqw.eq(StringUtils.isNotBlank(bo.getSearchValue()), SisLibDeviceImgRef::getSearchValue, bo.getSearchValue());
return lqw; return lqw;
} }

View File

@ -78,8 +78,6 @@ public class SisLibDeviceRefServiceImpl implements ISisLibDeviceRefService {
lqw.eq(StringUtils.isNotBlank(bo.getEqpCode()), SisLibDeviceRef::getEqpCode, bo.getEqpCode()); lqw.eq(StringUtils.isNotBlank(bo.getEqpCode()), SisLibDeviceRef::getEqpCode, bo.getEqpCode());
lqw.eq(bo.getEqpLibCode() != null, SisLibDeviceRef::getEqpLibCode, bo.getEqpLibCode()); lqw.eq(bo.getEqpLibCode() != null, SisLibDeviceRef::getEqpLibCode, bo.getEqpLibCode());
lqw.eq(bo.getEqpLibState() != null, SisLibDeviceRef::getEqpLibState, bo.getEqpLibState()); lqw.eq(bo.getEqpLibState() != null, SisLibDeviceRef::getEqpLibState, bo.getEqpLibState());
lqw.eq(bo.getCreateById() != null, SisLibDeviceRef::getCreateById, bo.getCreateById());
lqw.eq(bo.getUpdateById() != null, SisLibDeviceRef::getUpdateById, bo.getUpdateById());
lqw.eq(StringUtils.isNotBlank(bo.getSearchValue()), SisLibDeviceRef::getSearchValue, bo.getSearchValue()); lqw.eq(StringUtils.isNotBlank(bo.getSearchValue()), SisLibDeviceRef::getSearchValue, bo.getSearchValue());
return lqw; return lqw;
} }

View File

@ -84,8 +84,6 @@ public class SisPersonLibImgServiceImpl implements ISisPersonLibImgService {
lqw.eq(bo.getCertificateType() != null, SisPersonLibImg::getCertificateType, bo.getCertificateType()); lqw.eq(bo.getCertificateType() != null, SisPersonLibImg::getCertificateType, bo.getCertificateType());
lqw.eq(StringUtils.isNotBlank(bo.getCertificateNo()), SisPersonLibImg::getCertificateNo, bo.getCertificateNo()); lqw.eq(StringUtils.isNotBlank(bo.getCertificateNo()), SisPersonLibImg::getCertificateNo, bo.getCertificateNo());
lqw.eq(StringUtils.isNotBlank(bo.getBirthDate()), SisPersonLibImg::getBirthDate, bo.getBirthDate()); lqw.eq(StringUtils.isNotBlank(bo.getBirthDate()), SisPersonLibImg::getBirthDate, bo.getBirthDate());
lqw.eq(bo.getCreateById() != null, SisPersonLibImg::getCreateById, bo.getCreateById());
lqw.eq(bo.getUpdateById() != null, SisPersonLibImg::getUpdateById, bo.getUpdateById());
lqw.eq(StringUtils.isNotBlank(bo.getSearchValue()), SisPersonLibImg::getSearchValue, bo.getSearchValue()); lqw.eq(StringUtils.isNotBlank(bo.getSearchValue()), SisPersonLibImg::getSearchValue, bo.getSearchValue());
return lqw; return lqw;
} }

View File

@ -1,24 +1,26 @@
package org.dromara.sis.service.impl; package org.dromara.sis.service.impl;
import org.dromara.common.core.utils.MapstructUtils; import cn.hutool.core.util.IdUtil;
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.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.dromara.sis.mapper.SisPersonLibMapper; import org.dromara.common.core.constant.CodePrefixConstants;
import org.springframework.stereotype.Service; 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.SisPersonLib;
import org.dromara.sis.domain.bo.SisPersonLibBo; import org.dromara.sis.domain.bo.SisPersonLibBo;
import org.dromara.sis.domain.vo.SisPersonLibVo; import org.dromara.sis.domain.vo.SisPersonLibVo;
import org.dromara.sis.domain.SisPersonLib; import org.dromara.sis.mapper.SisPersonLibMapper;
import org.dromara.sis.service.ISisPersonLibService; import org.dromara.sis.service.ISisPersonLibService;
import org.springframework.stereotype.Service;
import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Collection;
/** /**
* 人像库Service业务层处理 * 人像库Service业务层处理
@ -40,7 +42,7 @@ public class SisPersonLibServiceImpl implements ISisPersonLibService {
* @return 人像库 * @return 人像库
*/ */
@Override @Override
public SisPersonLibVo queryById(Long id){ public SisPersonLibVo queryById(Long id) {
return baseMapper.selectVoById(id); return baseMapper.selectVoById(id);
} }
@ -79,8 +81,6 @@ public class SisPersonLibServiceImpl implements ISisPersonLibService {
lqw.eq(StringUtils.isNotBlank(bo.getLibDesc()), SisPersonLib::getLibDesc, bo.getLibDesc()); lqw.eq(StringUtils.isNotBlank(bo.getLibDesc()), SisPersonLib::getLibDesc, bo.getLibDesc());
lqw.eq(bo.getLibType() != null, SisPersonLib::getLibType, bo.getLibType()); lqw.eq(bo.getLibType() != null, SisPersonLib::getLibType, bo.getLibType());
lqw.eq(bo.getBusiType() != null, SisPersonLib::getBusiType, bo.getBusiType()); lqw.eq(bo.getBusiType() != null, SisPersonLib::getBusiType, bo.getBusiType());
lqw.eq(bo.getCreateById() != null, SisPersonLib::getCreateById, bo.getCreateById());
lqw.eq(bo.getUpdateById() != null, SisPersonLib::getUpdateById, bo.getUpdateById());
lqw.eq(StringUtils.isNotBlank(bo.getSearchValue()), SisPersonLib::getSearchValue, bo.getSearchValue()); lqw.eq(StringUtils.isNotBlank(bo.getSearchValue()), SisPersonLib::getSearchValue, bo.getSearchValue());
return lqw; return lqw;
} }
@ -94,10 +94,15 @@ public class SisPersonLibServiceImpl implements ISisPersonLibService {
@Override @Override
public Boolean insertByBo(SisPersonLibBo bo) { public Boolean insertByBo(SisPersonLibBo bo) {
SisPersonLib add = MapstructUtils.convert(bo, SisPersonLib.class); SisPersonLib add = MapstructUtils.convert(bo, SisPersonLib.class);
// 生成库编码
add.setLibCode(CodePrefixConstants.PERSONLIB_CODE_PREFIX + IdUtil.getSnowflakeNextIdStr());
validEntityBeforeSave(add); validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0; boolean flag = baseMapper.insert(add) > 0;
if (flag) { if (flag) {
bo.setId(add.getId()); bo.setId(add.getId());
//TODO 写入设备关联库
} }
return flag; return flag;
} }
@ -118,7 +123,7 @@ public class SisPersonLibServiceImpl implements ISisPersonLibService {
/** /**
* 保存前的数据校验 * 保存前的数据校验
*/ */
private void validEntityBeforeSave(SisPersonLib entity){ private void validEntityBeforeSave(SisPersonLib entity) {
//TODO 做一些数据校验,如唯一约束 //TODO 做一些数据校验,如唯一约束
} }
@ -131,7 +136,7 @@ public class SisPersonLibServiceImpl implements ISisPersonLibService {
*/ */
@Override @Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) { public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){ if (isValid) {
//TODO 做一些业务上的校验,判断是否需要校验 //TODO 做一些业务上的校验,判断是否需要校验
} }
return baseMapper.deleteByIds(ids) > 0; return baseMapper.deleteByIds(ids) > 0;

View File

@ -41,7 +41,7 @@ db.num=1
### Connect URL of DB: ### Connect URL of DB:
db.url.0=jdbc:mysql://47.109.37.87:3002/ry-config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true db.url.0=jdbc:mysql://47.109.37.87:3002/ry-config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
db.user.0=root db.user.0=by
db.password.0=123456 db.password.0=123456
### the maximum retry times for push ### the maximum retry times for push