- 新增楼层信息相关操作 - 新增电梯⇄楼层关联信息相关操作 - 梯控流程补全
This commit is contained in:
@@ -0,0 +1,106 @@
|
|||||||
|
package org.dromara.sis.controller;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
|
import jakarta.validation.constraints.*;
|
||||||
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||||
|
import org.dromara.common.log.annotation.Log;
|
||||||
|
import org.dromara.common.web.core.BaseController;
|
||||||
|
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||||
|
import org.dromara.common.core.domain.R;
|
||||||
|
import org.dromara.common.core.validate.AddGroup;
|
||||||
|
import org.dromara.common.core.validate.EditGroup;
|
||||||
|
import org.dromara.common.log.enums.BusinessType;
|
||||||
|
import org.dromara.common.excel.utils.ExcelUtil;
|
||||||
|
import org.dromara.sis.domain.vo.SisElevatorFloorRefVo;
|
||||||
|
import org.dromara.sis.domain.bo.SisElevatorFloorRefBo;
|
||||||
|
import org.dromara.sis.service.ISisElevatorFloorRefService;
|
||||||
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 电梯⇄楼层关联
|
||||||
|
* 前端访问路由地址为:/sis/elevatorFloorRef
|
||||||
|
*
|
||||||
|
* @author lsm
|
||||||
|
* @since 2025-07-15
|
||||||
|
*/
|
||||||
|
@Validated
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/elevatorFloorRef")
|
||||||
|
public class SisElevatorFloorRefController extends BaseController {
|
||||||
|
|
||||||
|
private final ISisElevatorFloorRefService sisElevatorFloorRefService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询电梯⇄楼层关联列表
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("sis:elevatorFloorRef:list")
|
||||||
|
@GetMapping("/list")
|
||||||
|
public TableDataInfo<SisElevatorFloorRefVo> list(SisElevatorFloorRefBo bo, PageQuery pageQuery) {
|
||||||
|
return sisElevatorFloorRefService.queryPageList(bo, pageQuery);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 导出电梯⇄楼层关联列表
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("sis:elevatorFloorRef:export")
|
||||||
|
@Log(title = "电梯⇄楼层关联", businessType = BusinessType.EXPORT)
|
||||||
|
@PostMapping("/export")
|
||||||
|
public void export(SisElevatorFloorRefBo bo, HttpServletResponse response) {
|
||||||
|
List<SisElevatorFloorRefVo> list = sisElevatorFloorRefService.queryList(bo);
|
||||||
|
ExcelUtil.exportExcel(list, "电梯⇄楼层关联", SisElevatorFloorRefVo.class, response);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取电梯⇄楼层关联详细信息
|
||||||
|
*
|
||||||
|
* @param id 主键
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("sis:elevatorFloorRef:query")
|
||||||
|
@GetMapping("/{id}")
|
||||||
|
public R<SisElevatorFloorRefVo> getInfo(@NotNull(message = "主键不能为空")
|
||||||
|
@PathVariable("id") Long id) {
|
||||||
|
return R.ok(sisElevatorFloorRefService.queryById(id));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增电梯⇄楼层关联
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("sis:elevatorFloorRef:add")
|
||||||
|
@Log(title = "电梯⇄楼层关联", businessType = BusinessType.INSERT)
|
||||||
|
@RepeatSubmit()
|
||||||
|
@PostMapping()
|
||||||
|
public R<Void> add(@Validated(AddGroup.class) @RequestBody SisElevatorFloorRefBo bo) {
|
||||||
|
return toAjax(sisElevatorFloorRefService.insertByBo(bo));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改电梯⇄楼层关联
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("sis:elevatorFloorRef:edit")
|
||||||
|
@Log(title = "电梯⇄楼层关联", businessType = BusinessType.UPDATE)
|
||||||
|
@RepeatSubmit()
|
||||||
|
@PutMapping()
|
||||||
|
public R<Void> edit(@Validated(EditGroup.class) @RequestBody SisElevatorFloorRefBo bo) {
|
||||||
|
return toAjax(sisElevatorFloorRefService.updateByBo(bo));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除电梯⇄楼层关联
|
||||||
|
*
|
||||||
|
* @param ids 主键串
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("sis:elevatorFloorRef:remove")
|
||||||
|
@Log(title = "电梯⇄楼层关联", businessType = BusinessType.DELETE)
|
||||||
|
@DeleteMapping("/{ids}")
|
||||||
|
public R<Void> remove(@NotEmpty(message = "主键不能为空")
|
||||||
|
@PathVariable("ids") Long[] ids) {
|
||||||
|
return toAjax(sisElevatorFloorRefService.deleteWithValidByIds(List.of(ids), true));
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,106 @@
|
|||||||
|
package org.dromara.sis.controller;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
|
import jakarta.validation.constraints.*;
|
||||||
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||||
|
import org.dromara.common.log.annotation.Log;
|
||||||
|
import org.dromara.common.web.core.BaseController;
|
||||||
|
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||||
|
import org.dromara.common.core.domain.R;
|
||||||
|
import org.dromara.common.core.validate.AddGroup;
|
||||||
|
import org.dromara.common.core.validate.EditGroup;
|
||||||
|
import org.dromara.common.log.enums.BusinessType;
|
||||||
|
import org.dromara.common.excel.utils.ExcelUtil;
|
||||||
|
import org.dromara.sis.domain.vo.SisFloorInfoVo;
|
||||||
|
import org.dromara.sis.domain.bo.SisFloorInfoBo;
|
||||||
|
import org.dromara.sis.service.ISisFloorInfoService;
|
||||||
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 建筑物楼层信息
|
||||||
|
* 前端访问路由地址为:/sis/floorInfo
|
||||||
|
*
|
||||||
|
* @author lsm
|
||||||
|
* @since 2025-07-15
|
||||||
|
*/
|
||||||
|
@Validated
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/floorInfo")
|
||||||
|
public class SisFloorInfoController extends BaseController {
|
||||||
|
|
||||||
|
private final ISisFloorInfoService sisFloorInfoService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询建筑物楼层信息列表
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("sis:floorInfo:list")
|
||||||
|
@GetMapping("/list")
|
||||||
|
public TableDataInfo<SisFloorInfoVo> list(SisFloorInfoBo bo, PageQuery pageQuery) {
|
||||||
|
return sisFloorInfoService.queryPageList(bo, pageQuery);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 导出建筑物楼层信息列表
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("sis:floorInfo:export")
|
||||||
|
@Log(title = "建筑物楼层信息", businessType = BusinessType.EXPORT)
|
||||||
|
@PostMapping("/export")
|
||||||
|
public void export(SisFloorInfoBo bo, HttpServletResponse response) {
|
||||||
|
List<SisFloorInfoVo> list = sisFloorInfoService.queryList(bo);
|
||||||
|
ExcelUtil.exportExcel(list, "建筑物楼层信息", SisFloorInfoVo.class, response);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取建筑物楼层信息详细信息
|
||||||
|
*
|
||||||
|
* @param floorId 主键
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("sis:floorInfo:query")
|
||||||
|
@GetMapping("/{floorId}")
|
||||||
|
public R<SisFloorInfoVo> getInfo(@NotNull(message = "主键不能为空")
|
||||||
|
@PathVariable("floorId") Long floorId) {
|
||||||
|
return R.ok(sisFloorInfoService.queryById(floorId));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增建筑物楼层信息
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("sis:floorInfo:add")
|
||||||
|
@Log(title = "建筑物楼层信息", businessType = BusinessType.INSERT)
|
||||||
|
@RepeatSubmit()
|
||||||
|
@PostMapping()
|
||||||
|
public R<Void> add(@Validated(AddGroup.class) @RequestBody SisFloorInfoBo bo) {
|
||||||
|
return toAjax(sisFloorInfoService.insertByBo(bo));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改建筑物楼层信息
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("sis:floorInfo:edit")
|
||||||
|
@Log(title = "建筑物楼层信息", businessType = BusinessType.UPDATE)
|
||||||
|
@RepeatSubmit()
|
||||||
|
@PutMapping()
|
||||||
|
public R<Void> edit(@Validated(EditGroup.class) @RequestBody SisFloorInfoBo bo) {
|
||||||
|
return toAjax(sisFloorInfoService.updateByBo(bo));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除建筑物楼层信息
|
||||||
|
*
|
||||||
|
* @param floorIds 主键串
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("sis:floorInfo:remove")
|
||||||
|
@Log(title = "建筑物楼层信息", businessType = BusinessType.DELETE)
|
||||||
|
@DeleteMapping("/{floorIds}")
|
||||||
|
public R<Void> remove(@NotEmpty(message = "主键不能为空")
|
||||||
|
@PathVariable("floorIds") Long[] floorIds) {
|
||||||
|
return toAjax(sisFloorInfoService.deleteWithValidByIds(List.of(floorIds), true));
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,41 @@
|
|||||||
|
package org.dromara.sis.domain;
|
||||||
|
|
||||||
|
import org.dromara.common.tenant.core.TenantEntity;
|
||||||
|
import com.baomidou.mybatisplus.annotation.*;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 电梯⇄楼层关联对象 sis_elevator_floor_ref
|
||||||
|
*
|
||||||
|
* @author lsm
|
||||||
|
* @since 2025-07-15
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@TableName("sis_elevator_floor_ref")
|
||||||
|
public class SisElevatorFloorRef extends TenantEntity {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 主键id
|
||||||
|
*/
|
||||||
|
@TableId(value = "id")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 电梯id
|
||||||
|
*/
|
||||||
|
private Long elevatorId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 楼层层数
|
||||||
|
*/
|
||||||
|
private Long layerNum;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@@ -0,0 +1,50 @@
|
|||||||
|
package org.dromara.sis.domain;
|
||||||
|
|
||||||
|
import org.dromara.common.tenant.core.TenantEntity;
|
||||||
|
import com.baomidou.mybatisplus.annotation.*;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 建筑物楼层信息对象 sis_floor_info
|
||||||
|
*
|
||||||
|
* @author lsm
|
||||||
|
* @since 2025-07-15
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@TableName("sis_floor_info")
|
||||||
|
public class SisFloorInfo extends TenantEntity {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 楼层唯一标识
|
||||||
|
*/
|
||||||
|
@TableId(value = "floor_id")
|
||||||
|
private Long floorId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 最低层
|
||||||
|
*/
|
||||||
|
private Long minLayer;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 最高层
|
||||||
|
*/
|
||||||
|
private Long maxLayer;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 园区id
|
||||||
|
*/
|
||||||
|
private Long communityId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 建筑id
|
||||||
|
*/
|
||||||
|
private Long buildingId;
|
||||||
|
|
||||||
|
}
|
@@ -0,0 +1,42 @@
|
|||||||
|
package org.dromara.sis.domain.bo;
|
||||||
|
|
||||||
|
import org.dromara.sis.domain.SisElevatorFloorRef;
|
||||||
|
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 lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import jakarta.validation.constraints.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 电梯⇄楼层关联业务对象 sis_elevator_floor_ref
|
||||||
|
*
|
||||||
|
* @author lsm
|
||||||
|
* @since 2025-07-15
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@AutoMapper(target = SisElevatorFloorRef.class, reverseConvertGenerate = false)
|
||||||
|
public class SisElevatorFloorRefBo extends BaseEntity {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 主键id
|
||||||
|
*/
|
||||||
|
@NotNull(message = "主键id不能为空", groups = { EditGroup.class })
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 电梯id
|
||||||
|
*/
|
||||||
|
@NotNull(message = "电梯id不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||||
|
private Long elevatorId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 楼层层数
|
||||||
|
*/
|
||||||
|
@NotNull(message = "楼层层数不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||||
|
private Long layerNum;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@@ -0,0 +1,53 @@
|
|||||||
|
package org.dromara.sis.domain.bo;
|
||||||
|
|
||||||
|
import org.dromara.sis.domain.SisFloorInfo;
|
||||||
|
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 lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import jakarta.validation.constraints.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 建筑物楼层信息业务对象 sis_floor_info
|
||||||
|
*
|
||||||
|
* @author lsm
|
||||||
|
* @since 2025-07-15
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@AutoMapper(target = SisFloorInfo.class, reverseConvertGenerate = false)
|
||||||
|
public class SisFloorInfoBo extends BaseEntity {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 楼层唯一标识
|
||||||
|
*/
|
||||||
|
@NotNull(message = "楼层唯一标识不能为空", groups = { EditGroup.class })
|
||||||
|
private Long floorId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 最低层
|
||||||
|
*/
|
||||||
|
@NotNull(message = "最低层不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||||
|
private Long minLayer;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 最高层
|
||||||
|
*/
|
||||||
|
@NotNull(message = "最高层不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||||
|
private Long maxLayer;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 园区id
|
||||||
|
*/
|
||||||
|
@NotNull(message = "园区id不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||||
|
private Long communityId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 建筑id
|
||||||
|
*/
|
||||||
|
@NotNull(message = "建筑id不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||||
|
private Long buildingId;
|
||||||
|
|
||||||
|
}
|
@@ -105,6 +105,12 @@ public class SisAccessControlVo implements Serializable {
|
|||||||
@ExcelProperty(value = "外部编码")
|
@ExcelProperty(value = "外部编码")
|
||||||
private String outCode;
|
private String outCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 外部门编码
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "外部编码")
|
||||||
|
private String outDoorCode;
|
||||||
|
|
||||||
private String bindDeviceId;
|
private String bindDeviceId;
|
||||||
|
|
||||||
private String bindDeviceIp;
|
private String bindDeviceIp;
|
||||||
|
@@ -42,7 +42,7 @@ public class SisAuthRecordVo implements Serializable {
|
|||||||
* 设备id(门禁/电梯)
|
* 设备id(门禁/电梯)
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "设备id", converter = ExcelDictConvert.class)
|
@ExcelProperty(value = "设备id", converter = ExcelDictConvert.class)
|
||||||
@ExcelDictFormat(readConverterExp = "门=禁/电梯")
|
@ExcelDictFormat(readConverterExp = "门禁/电梯")
|
||||||
private Long deviceId;
|
private Long deviceId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -0,0 +1,50 @@
|
|||||||
|
package org.dromara.sis.domain.vo;
|
||||||
|
|
||||||
|
import org.dromara.sis.domain.SisElevatorFloorRef;
|
||||||
|
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
|
||||||
|
import cn.idev.excel.annotation.ExcelProperty;
|
||||||
|
import org.dromara.common.excel.annotation.ExcelDictFormat;
|
||||||
|
import org.dromara.common.excel.convert.ExcelDictConvert;
|
||||||
|
import io.github.linpeilie.annotations.AutoMapper;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 电梯⇄楼层关联视图对象 sis_elevator_floor_ref
|
||||||
|
*
|
||||||
|
* @author lsm
|
||||||
|
* @since 2025-07-15
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@ExcelIgnoreUnannotated
|
||||||
|
@AutoMapper(target = SisElevatorFloorRef.class)
|
||||||
|
public class SisElevatorFloorRefVo implements Serializable {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 主键id
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "主键id")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 电梯id
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "电梯id")
|
||||||
|
private Long elevatorId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 楼层层数
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "楼层层数")
|
||||||
|
private Long layerNum;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@@ -0,0 +1,61 @@
|
|||||||
|
package org.dromara.sis.domain.vo;
|
||||||
|
|
||||||
|
import org.dromara.sis.domain.SisFloorInfo;
|
||||||
|
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
|
||||||
|
import cn.idev.excel.annotation.ExcelProperty;
|
||||||
|
import org.dromara.common.excel.annotation.ExcelDictFormat;
|
||||||
|
import org.dromara.common.excel.convert.ExcelDictConvert;
|
||||||
|
import io.github.linpeilie.annotations.AutoMapper;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 建筑物楼层信息视图对象 sis_floor_info
|
||||||
|
*
|
||||||
|
* @author lsm
|
||||||
|
* @since 2025-07-15
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@ExcelIgnoreUnannotated
|
||||||
|
@AutoMapper(target = SisFloorInfo.class)
|
||||||
|
public class SisFloorInfoVo implements Serializable {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 楼层唯一标识
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "楼层唯一标识")
|
||||||
|
private Long floorId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 最低层
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "最低层")
|
||||||
|
private Long minLayer;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 最高层
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "最高层")
|
||||||
|
private Long maxLayer;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 园区id
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "园区id")
|
||||||
|
private Long communityId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 建筑id
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "建筑id")
|
||||||
|
private Long buildingId;
|
||||||
|
|
||||||
|
}
|
@@ -4,6 +4,8 @@ import org.dromara.sis.domain.SisAuthRecord;
|
|||||||
import org.dromara.sis.domain.vo.SisAuthRecordVo;
|
import org.dromara.sis.domain.vo.SisAuthRecordVo;
|
||||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 授权记录Mapper接口
|
* 授权记录Mapper接口
|
||||||
*
|
*
|
||||||
@@ -11,5 +13,5 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
|||||||
* @since 2025-07-14
|
* @since 2025-07-14
|
||||||
*/
|
*/
|
||||||
public interface SisAuthRecordMapper extends BaseMapperPlus<SisAuthRecord, SisAuthRecordVo> {
|
public interface SisAuthRecordMapper extends BaseMapperPlus<SisAuthRecord, SisAuthRecordVo> {
|
||||||
|
List<SisAuthRecordVo> checkAuth(Long personId);
|
||||||
}
|
}
|
||||||
|
@@ -0,0 +1,15 @@
|
|||||||
|
package org.dromara.sis.mapper;
|
||||||
|
|
||||||
|
import org.dromara.sis.domain.SisElevatorFloorRef;
|
||||||
|
import org.dromara.sis.domain.vo.SisElevatorFloorRefVo;
|
||||||
|
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 电梯⇄楼层关联Mapper接口
|
||||||
|
*
|
||||||
|
* @author lsm
|
||||||
|
* @date 2025-07-15
|
||||||
|
*/
|
||||||
|
public interface SisElevatorFloorRefMapper extends BaseMapperPlus<SisElevatorFloorRef, SisElevatorFloorRefVo> {
|
||||||
|
|
||||||
|
}
|
@@ -0,0 +1,15 @@
|
|||||||
|
package org.dromara.sis.mapper;
|
||||||
|
|
||||||
|
import org.dromara.sis.domain.SisFloorInfo;
|
||||||
|
import org.dromara.sis.domain.vo.SisFloorInfoVo;
|
||||||
|
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 建筑物楼层信息Mapper接口
|
||||||
|
*
|
||||||
|
* @author lsm
|
||||||
|
* @date 2025-07-15
|
||||||
|
*/
|
||||||
|
public interface SisFloorInfoMapper extends BaseMapperPlus<SisFloorInfo, SisFloorInfoVo> {
|
||||||
|
|
||||||
|
}
|
@@ -4,25 +4,32 @@ import cn.hutool.core.collection.CollUtil;
|
|||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.dromara.common.core.utils.SpringUtils;
|
import org.dromara.common.core.utils.SpringUtils;
|
||||||
|
import org.dromara.sis.domain.bo.SisDeviceManageBo;
|
||||||
|
import org.dromara.sis.domain.vo.SisDeviceManageVo;
|
||||||
import org.dromara.sis.domain.vo.SisElevatorInfoVo;
|
import org.dromara.sis.domain.vo.SisElevatorInfoVo;
|
||||||
|
import org.dromara.sis.domain.vo.SisFloorInfoVo;
|
||||||
import org.dromara.sis.sdk.hik.HikApiService;
|
import org.dromara.sis.sdk.hik.HikApiService;
|
||||||
import org.dromara.sis.sdk.hik.calback.HikAlarmCallBack;
|
import org.dromara.sis.sdk.hik.calback.HikAlarmCallBack;
|
||||||
|
import org.dromara.sis.service.ISisDeviceManageService;
|
||||||
import org.dromara.sis.service.ISisElevatorInfoService;
|
import org.dromara.sis.service.ISisElevatorInfoService;
|
||||||
|
import org.dromara.sis.service.ISisFloorInfoService;
|
||||||
import org.springframework.boot.ApplicationArguments;
|
import org.springframework.boot.ApplicationArguments;
|
||||||
import org.springframework.boot.ApplicationRunner;
|
import org.springframework.boot.ApplicationRunner;
|
||||||
import org.springframework.scheduling.annotation.Async;
|
import org.springframework.scheduling.annotation.Async;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@RequiredArgsConstructor
|
|
||||||
@Component
|
@Component
|
||||||
|
@RequiredArgsConstructor
|
||||||
public class HikDeviceApplicationRunner implements ApplicationRunner {
|
public class HikDeviceApplicationRunner implements ApplicationRunner {
|
||||||
|
|
||||||
private final ISisElevatorInfoService elevatorInfoService;
|
|
||||||
private final HikAlarmCallBack hikAlarmCallBack;
|
private final HikAlarmCallBack hikAlarmCallBack;
|
||||||
|
private final ISisFloorInfoService floorInfoService;
|
||||||
|
private final ISisDeviceManageService deviceManageService;
|
||||||
|
private final ISisElevatorInfoService elevatorInfoService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run(ApplicationArguments args) throws Exception {
|
public void run(ApplicationArguments args) throws Exception {
|
||||||
@@ -38,35 +45,73 @@ public class HikDeviceApplicationRunner implements ApplicationRunner {
|
|||||||
|
|
||||||
@Async
|
@Async
|
||||||
public void hikElevatorInfoLogin() {
|
public void hikElevatorInfoLogin() {
|
||||||
/*List<SisElevatorInfoVo> sisElevatorInfoVos = elevatorInfoService.queryAll();
|
List<SisElevatorInfoVo> sisElevatorInfoVos = elevatorInfoService.queryAll();
|
||||||
if (CollUtil.isNotEmpty(sisElevatorInfoVos)) {
|
if (CollUtil.isNotEmpty(sisElevatorInfoVos)) {
|
||||||
sisElevatorInfoVos.forEach(item -> {
|
sisElevatorInfoVos.forEach(item -> {
|
||||||
// 执行设备登录操作
|
// 执行设备登录操作
|
||||||
HikApiService.getInstance().login(item.getControlIp(), item.getControlPort().shortValue(), item.getControlAccount(), item.getControlPwd());
|
HikApiService.getInstance().login(item.getControlIp(), item.getControlPort().shortValue(), item.getControlAccount(), item.getControlPwd());
|
||||||
|
// 根据建筑ID获取楼层信息
|
||||||
|
SisFloorInfoVo floorInfo = floorInfoService.queryByBuildingId(item.getBuildingId());
|
||||||
|
// 获取楼层数组
|
||||||
|
List<Integer> layerArray = generateFloorArray(floorInfo.getMinLayer().intValue(), floorInfo.getMaxLayer().intValue());
|
||||||
|
// 下发权限
|
||||||
|
for (int i = 0; i < layerArray.size(); i++) {
|
||||||
|
HikApiService.getInstance().controlGateway(item.getControlIp(), (i + 1), layerArray.get(i));
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}*/
|
}
|
||||||
String ip = "192.168.24.188";
|
// String ip = "192.168.24.188";
|
||||||
short port = 8000;
|
// short port = 8000;
|
||||||
String account = "admin";
|
// String account = "admin";
|
||||||
String pwd = "qweasd123";
|
// String pwd = "qweasd123";
|
||||||
HikApiService.getInstance().login(ip, port, account, pwd);
|
// HikApiService.getInstance().login(ip, port, account, pwd);
|
||||||
List<Integer> arrs = Arrays.asList(2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2);
|
// List<Integer> arrs = Arrays.asList(2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2);
|
||||||
for (int i = 0; i < arrs.size(); i++) {
|
// for (int i = 0; i < arrs.size(); i++) {
|
||||||
HikApiService.getInstance().controlGateway(ip, (i + 1), arrs.get(i));
|
// HikApiService.getInstance().controlGateway(ip, (i + 1), arrs.get(i));
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
|
||||||
|
//输入最低层,最高层,返回楼层数组
|
||||||
|
public List<Integer> generateFloorArray(int minLayer, int maxLayer) {
|
||||||
|
// 验证输入范围
|
||||||
|
if (minLayer > maxLayer) {
|
||||||
|
throw new IllegalArgumentException("最低层不能大于最高层");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 使用List动态收集楼层
|
||||||
|
List<Integer> layerList = new ArrayList<>();
|
||||||
|
|
||||||
|
// 遍历所有楼层,跳过0层
|
||||||
|
for (int layer = minLayer; layer <= maxLayer; layer++) {
|
||||||
|
if (layer != 0) {
|
||||||
|
// 初始数组赋值为3,不下发权限
|
||||||
|
layerList.add(3);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return layerList;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Async
|
@Async
|
||||||
public void hikNetCameraLogin() {
|
public void hikNetCameraLogin() {
|
||||||
String ip = "192.168.24.19";
|
List<SisDeviceManageVo> deviceList = deviceManageService.queryList(new SisDeviceManageBo());
|
||||||
short port = 8000;
|
|
||||||
String account = "admin";
|
if (CollUtil.isEmpty(deviceList)) {
|
||||||
String pwd = "xzf13579";
|
log.info("没有查询到摄像设备信息,不执行登录");
|
||||||
int handler = HikApiService.getInstance().login(ip, port, account, pwd);
|
return;
|
||||||
if(handler != -1){
|
|
||||||
HikApiService.getInstance().setAlarmChan(handler);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
deviceList.forEach(item -> {
|
||||||
|
int handler = HikApiService.getInstance().login(item.getDeviceIp(), item.getDevicePort().shortValue(), item.getDeviceAccount(), item.getDevicePwd());
|
||||||
|
if (handler != -1) {
|
||||||
|
HikApiService.getInstance().setAlarmChan(handler);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
// String ip = "192.168.24.19";
|
||||||
|
// short port = 8000;
|
||||||
|
// String account = "admin";
|
||||||
|
// String pwd = "xzf13579";
|
||||||
|
// int handler = HikApiService.getInstance().login(ip, port, account, pwd);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -1,16 +1,22 @@
|
|||||||
package org.dromara.sis.sdk.hik.calback;
|
package org.dromara.sis.sdk.hik.calback;
|
||||||
|
|
||||||
import cn.hutool.core.codec.Base64Encoder;
|
import cn.hutool.core.codec.Base64Encoder;
|
||||||
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.dromara.sis.domain.vo.*;
|
||||||
|
import org.dromara.sis.sdk.e8.AccessControlService;
|
||||||
|
import org.dromara.sis.sdk.e8.domain.accessControl.req.RemoteOpenDoorReq;
|
||||||
import org.dromara.sis.sdk.hik.HCNetSDK;
|
import org.dromara.sis.sdk.hik.HCNetSDK;
|
||||||
import org.dromara.sis.sdk.hik.HikApiService;
|
import org.dromara.sis.sdk.hik.HikApiService;
|
||||||
import org.dromara.sis.sdk.huawei.HuaWeiBoxApi;
|
import org.dromara.sis.sdk.huawei.HuaWeiBoxApi;
|
||||||
|
import org.dromara.sis.service.*;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import java.nio.ByteBuffer;
|
import java.nio.ByteBuffer;
|
||||||
import java.util.Arrays;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@@ -19,6 +25,14 @@ import java.util.List;
|
|||||||
public class HikAlarmCallBack implements HCNetSDK.FMSGCallBack_V31 {
|
public class HikAlarmCallBack implements HCNetSDK.FMSGCallBack_V31 {
|
||||||
|
|
||||||
private final HuaWeiBoxApi huaWeiBoxApi;
|
private final HuaWeiBoxApi huaWeiBoxApi;
|
||||||
|
private final ISisFloorInfoService floorInfoService;
|
||||||
|
private final ISisAuthRecordService authRecordService;
|
||||||
|
private final ISisElevatorInfoService elevatorInfoService;
|
||||||
|
private final ISisDeviceBindRefService deviceBindRefService;
|
||||||
|
private final ISisAccessControlService accessControlService;
|
||||||
|
private final ISisElevatorFloorRefService elevatorFloorRefService;
|
||||||
|
|
||||||
|
private final AccessControlService e8AccessControlService;
|
||||||
|
|
||||||
private static final int COMM_UPLOAD_FACESNAP_RESULT = 0x1112;
|
private static final int COMM_UPLOAD_FACESNAP_RESULT = 0x1112;
|
||||||
|
|
||||||
@@ -32,47 +46,132 @@ public class HikAlarmCallBack implements HCNetSDK.FMSGCallBack_V31 {
|
|||||||
Pointer pItsPlateInfo = result.getPointer();
|
Pointer pItsPlateInfo = result.getPointer();
|
||||||
pItsPlateInfo.write(0, pAlarmInfo.getByteArray(0, result.size()), 0, result.size());
|
pItsPlateInfo.write(0, pAlarmInfo.getByteArray(0, result.size()), 0, result.size());
|
||||||
result.read();
|
result.read();
|
||||||
|
|
||||||
// 读取人脸小图
|
// 读取人脸小图
|
||||||
ByteBuffer buffers = result.pBuffer1.getByteBuffer(0, result.dwFacePicLen);
|
ByteBuffer buffers = result.pBuffer1.getByteBuffer(0, result.dwFacePicLen);
|
||||||
byte[] smallImg = new byte[result.dwFacePicLen];
|
byte[] smallImg = new byte[result.dwFacePicLen];
|
||||||
buffers.rewind();
|
buffers.rewind();
|
||||||
buffers.get(smallImg);
|
buffers.get(smallImg);
|
||||||
String dir = "";
|
|
||||||
// 读取人脸大图
|
// 读取人脸大图
|
||||||
// ByteBuffer buffers1 = result.pBuffer2.getByteBuffer(0, result.dwBackgroundPicLen);
|
/*ByteBuffer buffers1 = result.pBuffer2.getByteBuffer(0, result.dwBackgroundPicLen);
|
||||||
// byte[] bigImg = new byte[result.dwBackgroundPicLen];
|
byte[] bigImg = new byte[result.dwBackgroundPicLen];
|
||||||
// buffers1.rewind();
|
buffers1.rewind();
|
||||||
// buffers1.get(bigImg);
|
buffers1.get(bigImg);*/
|
||||||
|
|
||||||
|
//设备ip
|
||||||
|
String sAlarmInfo = new String(pAlarmer.sDeviceIP).trim();
|
||||||
|
// 设备绑定关系
|
||||||
|
List<SisDeviceBindRefVo> bindRefList = deviceBindRefService.queryByDeviceIp(sAlarmInfo);
|
||||||
|
if (CollUtil.isEmpty(bindRefList)) {
|
||||||
|
log.info("当前报警设备未绑定门禁/梯控,不做处理!");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
// todo 进行人脸比对
|
// todo 进行人脸比对
|
||||||
String smallImgBase64Str = Base64Encoder.encode(smallImg);
|
String smallImgBase64Str = Base64Encoder.encode(smallImg);
|
||||||
|
|
||||||
long s1 = System.currentTimeMillis();
|
long s1 = System.currentTimeMillis();
|
||||||
Long person = huaWeiBoxApi.findPerson(smallImgBase64Str);
|
Long person = huaWeiBoxApi.findPerson(smallImgBase64Str);
|
||||||
log.info("人脸比对执行完成,耗时:{}", System.currentTimeMillis() - s1);
|
log.info("人脸比对执行完成,耗时:{}", System.currentTimeMillis() - s1);
|
||||||
if (person == null) {
|
if (person == null) {
|
||||||
log.info("未命中人脸数据,暂不处理。");
|
log.info("未命中人脸数据,暂不处理。");
|
||||||
log.info("权限下发执行完成,耗时:{}", System.currentTimeMillis() - s);
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
log.info("人脸比对完成,personId={}", person);
|
log.info("人脸比对完成,personId={}", person);
|
||||||
|
|
||||||
|
// 授权记录
|
||||||
|
List<SisAuthRecordVo> authVoList = authRecordService.checkAuth(person);
|
||||||
|
// 获取门禁id
|
||||||
|
Collection<Long> acIds = authVoList.stream().filter(vo -> vo.getDeviceType() == 1).map(SisAuthRecordVo::getDeviceId).toList();
|
||||||
|
if (CollUtil.isNotEmpty(acIds)) {
|
||||||
|
acIds.forEach(id -> {
|
||||||
|
Long deviceId = bindRefList.stream().filter(vo -> vo.getBindId().equals(id)).findFirst().map(SisDeviceBindRefVo::getDeviceId).orElse(null);
|
||||||
|
SisAccessControlVo ac = accessControlService.queryById(deviceId);
|
||||||
|
if (ac != null) {
|
||||||
|
log.info("调用门禁服务远程开门");
|
||||||
|
RemoteOpenDoorReq req = new RemoteOpenDoorReq();
|
||||||
|
req.setType(0);
|
||||||
|
RemoteOpenDoorReq.ControlData data = new RemoteOpenDoorReq.ControlData();
|
||||||
|
data.setDeviceId(Long.parseLong(ac.getOutCode()));
|
||||||
|
data.setDoorId(Long.parseLong(ac.getOutCode()));
|
||||||
|
req.setControlList(List.of(data));
|
||||||
|
Boolean flag = e8AccessControlService.remoteOpenDoor(req);
|
||||||
|
log.info("远程开门结果,result={}", flag);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 获取电梯ids
|
||||||
|
Collection<Long> eleIds = authVoList.stream().filter(vo -> vo.getDeviceType() == 2).map(SisAuthRecordVo::getDeviceId).toList();
|
||||||
|
if (CollUtil.isNotEmpty(eleIds)) {
|
||||||
|
eleIds.forEach(id -> {
|
||||||
|
Long deviceId = bindRefList.stream().filter(vo -> vo.getBindId().equals(id)).findFirst().map(SisDeviceBindRefVo::getDeviceId).orElse(null);
|
||||||
|
SisElevatorInfoVo ele = elevatorInfoService.queryById(deviceId);
|
||||||
|
if (ele != null) {
|
||||||
|
log.info("下发电梯权限");
|
||||||
|
// 根据建筑ID获取楼层信息
|
||||||
|
SisFloorInfoVo floorInfo = floorInfoService.queryByBuildingId(ele.getBuildingId());
|
||||||
|
// 获取电梯⇄楼层关联信息
|
||||||
|
List<SisElevatorFloorRefVo> floorRefList = elevatorFloorRefService.queryByElevatorId(deviceId);
|
||||||
|
// 获取楼层数组
|
||||||
|
List<Integer> layerArray = generateFloorArray(floorInfo.getMinLayer().intValue(), floorInfo.getMaxLayer().intValue());
|
||||||
|
|
||||||
|
|
||||||
|
layerArray.forEach(layer -> {
|
||||||
|
SisElevatorFloorRefVo floorRef = floorRefList.stream()
|
||||||
|
.filter(vo -> vo.getLayerNum().intValue() == layer) // 直接使用 layer
|
||||||
|
.findFirst()
|
||||||
|
.orElse(null);
|
||||||
|
|
||||||
|
if (floorRef == null) {
|
||||||
|
HikApiService.getInstance().controlGateway(ele.getControlIp(), layer, 3);
|
||||||
|
} else {
|
||||||
|
HikApiService.getInstance().controlGateway(ele.getControlIp(), layer, 2);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
// List<Integer> arrs = Arrays.asList(2, 2, 2, 3, 3, 3 ,3, 3, 3, 3, 3, 3, 3, 3, 3, 3);
|
// List<Integer> arrs = Arrays.asList(2, 2, 2, 3, 3, 3 ,3, 3, 3, 3, 3, 3, 3, 3, 3, 3);
|
||||||
List<Integer> arrs = Arrays.asList(3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2);
|
// List<Integer> arrs = Arrays.asList(3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2);
|
||||||
for (int i = 0; i < arrs.size(); i++) {
|
// for (int i = 0; i < arrs.size(); i++) {
|
||||||
HikApiService.getInstance().controlGateway("192.168.24.188", (i + 1), arrs.get(i));
|
// HikApiService.getInstance().controlGateway("192.168.24.188", (i + 1), arrs.get(i));
|
||||||
}
|
// }
|
||||||
log.info("权限下发执行完成,耗时:{}", System.currentTimeMillis() - s);
|
// log.info("权限下发执行完成,耗时:{}", System.currentTimeMillis() - s);
|
||||||
try {
|
// try {
|
||||||
Thread.sleep(10000L);
|
// Thread.sleep(10000L);
|
||||||
List<Integer> ass = Arrays.asList(3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3);
|
// List<Integer> ass = Arrays.asList(3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3);
|
||||||
for (int i = 0; i < arrs.size(); i++) {
|
// for (int i = 0; i < arrs.size(); i++) {
|
||||||
HikApiService.getInstance().controlGateway("192.168.24.188", (i + 1), arrs.get(i));
|
// HikApiService.getInstance().controlGateway("192.168.24.188", (i + 1), arrs.get(i));
|
||||||
}
|
// }
|
||||||
} catch (InterruptedException e) {
|
// } catch (InterruptedException e) {
|
||||||
throw new RuntimeException(e);
|
// throw new RuntimeException(e);
|
||||||
}
|
// }
|
||||||
} else {
|
} else {
|
||||||
log.info("未知报警类型,lCommand={}", lCommand);
|
log.info("未知报警类型,lCommand={}", lCommand);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//输入最低层,最高层,返回楼层数组
|
||||||
|
public List<Integer> generateFloorArray(int minLayer, int maxLayer) {
|
||||||
|
|
||||||
|
// 验证输入范围
|
||||||
|
if (minLayer > maxLayer) {
|
||||||
|
throw new IllegalArgumentException("最低层不能大于最高层");
|
||||||
|
}
|
||||||
|
// 使用List动态收集楼层
|
||||||
|
List<Integer> layerList = new ArrayList<>();
|
||||||
|
// 遍历所有楼层,跳过0层
|
||||||
|
for (int layer = minLayer; layer <= maxLayer; layer++) {
|
||||||
|
if (layer != 0) {
|
||||||
|
layerList.add(layer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return layerList;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -89,4 +89,11 @@ public interface ISisAuthRecordService {
|
|||||||
* @return List<TreeNode<Long>>
|
* @return List<TreeNode<Long>>
|
||||||
*/
|
*/
|
||||||
List<TreeNode<Long>> authDeviceTree();
|
List<TreeNode<Long>> authDeviceTree();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据人脸比对ID,返回授权记录
|
||||||
|
*
|
||||||
|
* @param personId 人脸比对ID
|
||||||
|
*/
|
||||||
|
List<SisAuthRecordVo> checkAuth(Long personId);
|
||||||
}
|
}
|
||||||
|
@@ -81,7 +81,7 @@ public interface ISisDeviceBindRefService {
|
|||||||
* @param ipcAddr 设备ip
|
* @param ipcAddr 设备ip
|
||||||
* @return 返回关联关系表
|
* @return 返回关联关系表
|
||||||
*/
|
*/
|
||||||
SisDeviceBindRef queryByDeviceIp(String ipcAddr);
|
List<SisDeviceBindRefVo> queryByDeviceIp(String ipcAddr);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 批量写入设备绑定关系
|
* 批量写入设备绑定关系
|
||||||
|
@@ -0,0 +1,75 @@
|
|||||||
|
package org.dromara.sis.service;
|
||||||
|
|
||||||
|
import org.dromara.sis.domain.vo.SisElevatorFloorRefVo;
|
||||||
|
import org.dromara.sis.domain.bo.SisElevatorFloorRefBo;
|
||||||
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||||
|
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 电梯⇄楼层关联Service接口
|
||||||
|
*
|
||||||
|
* @author lsm
|
||||||
|
* @since 2025-07-15
|
||||||
|
*/
|
||||||
|
public interface ISisElevatorFloorRefService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询电梯⇄楼层关联
|
||||||
|
*
|
||||||
|
* @param id 主键
|
||||||
|
* @return 电梯⇄楼层关联
|
||||||
|
*/
|
||||||
|
SisElevatorFloorRefVo queryById(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询电梯⇄楼层关联列表
|
||||||
|
*
|
||||||
|
* @param bo 查询条件
|
||||||
|
* @param pageQuery 分页参数
|
||||||
|
* @return 电梯⇄楼层关联分页列表
|
||||||
|
*/
|
||||||
|
TableDataInfo<SisElevatorFloorRefVo> queryPageList(SisElevatorFloorRefBo bo, PageQuery pageQuery);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询符合条件的电梯⇄楼层关联列表
|
||||||
|
*
|
||||||
|
* @param bo 查询条件
|
||||||
|
* @return 电梯⇄楼层关联列表
|
||||||
|
*/
|
||||||
|
List<SisElevatorFloorRefVo> queryList(SisElevatorFloorRefBo bo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增电梯⇄楼层关联
|
||||||
|
*
|
||||||
|
* @param bo 电梯⇄楼层关联
|
||||||
|
* @return 是否新增成功
|
||||||
|
*/
|
||||||
|
Boolean insertByBo(SisElevatorFloorRefBo bo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改电梯⇄楼层关联
|
||||||
|
*
|
||||||
|
* @param bo 电梯⇄楼层关联
|
||||||
|
* @return 是否修改成功
|
||||||
|
*/
|
||||||
|
Boolean updateByBo(SisElevatorFloorRefBo bo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 校验并批量删除电梯⇄楼层关联信息
|
||||||
|
*
|
||||||
|
* @param ids 待删除的主键集合
|
||||||
|
* @param isValid 是否进行有效性校验
|
||||||
|
* @return 是否删除成功
|
||||||
|
*/
|
||||||
|
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据电梯id,获取电梯⇄楼层关联信息
|
||||||
|
*
|
||||||
|
* @param elevatorId 电梯id
|
||||||
|
*/
|
||||||
|
List<SisElevatorFloorRefVo> queryByElevatorId(Long elevatorId);
|
||||||
|
}
|
@@ -0,0 +1,76 @@
|
|||||||
|
package org.dromara.sis.service;
|
||||||
|
|
||||||
|
import org.dromara.sis.domain.vo.SisFloorInfoVo;
|
||||||
|
import org.dromara.sis.domain.bo.SisFloorInfoBo;
|
||||||
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||||
|
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 建筑物楼层信息Service接口
|
||||||
|
*
|
||||||
|
* @author lsm
|
||||||
|
* @since 2025-07-15
|
||||||
|
*/
|
||||||
|
public interface ISisFloorInfoService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询建筑物楼层信息
|
||||||
|
*
|
||||||
|
* @param floorId 主键
|
||||||
|
* @return 建筑物楼层信息
|
||||||
|
*/
|
||||||
|
SisFloorInfoVo queryById(Long floorId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询建筑物楼层信息列表
|
||||||
|
*
|
||||||
|
* @param bo 查询条件
|
||||||
|
* @param pageQuery 分页参数
|
||||||
|
* @return 建筑物楼层信息分页列表
|
||||||
|
*/
|
||||||
|
TableDataInfo<SisFloorInfoVo> queryPageList(SisFloorInfoBo bo, PageQuery pageQuery);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询符合条件的建筑物楼层信息列表
|
||||||
|
*
|
||||||
|
* @param bo 查询条件
|
||||||
|
* @return 建筑物楼层信息列表
|
||||||
|
*/
|
||||||
|
List<SisFloorInfoVo> queryList(SisFloorInfoBo bo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增建筑物楼层信息
|
||||||
|
*
|
||||||
|
* @param bo 建筑物楼层信息
|
||||||
|
* @return 是否新增成功
|
||||||
|
*/
|
||||||
|
Boolean insertByBo(SisFloorInfoBo bo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改建筑物楼层信息
|
||||||
|
*
|
||||||
|
* @param bo 建筑物楼层信息
|
||||||
|
* @return 是否修改成功
|
||||||
|
*/
|
||||||
|
Boolean updateByBo(SisFloorInfoBo bo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 校验并批量删除建筑物楼层信息
|
||||||
|
*
|
||||||
|
* @param ids 待删除的主键集合
|
||||||
|
* @param isValid 是否进行有效性校验
|
||||||
|
* @return 是否删除成功
|
||||||
|
*/
|
||||||
|
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据建筑ID返回楼层信息
|
||||||
|
*
|
||||||
|
* @param buildingId 建筑ID
|
||||||
|
* @return 楼层信息
|
||||||
|
*/
|
||||||
|
SisFloorInfoVo queryByBuildingId(Long buildingId);
|
||||||
|
}
|
@@ -199,7 +199,7 @@ public class SisAuthRecordServiceImpl implements ISisAuthRecordService {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public Boolean deleteByLibId(Long libId){
|
public Boolean deleteByLibId(Long libId) {
|
||||||
LambdaQueryWrapper<SisAuthRecord> lqw = Wrappers.lambdaQuery();
|
LambdaQueryWrapper<SisAuthRecord> lqw = Wrappers.lambdaQuery();
|
||||||
lqw.eq(SisAuthRecord::getLibId, libId);
|
lqw.eq(SisAuthRecord::getLibId, libId);
|
||||||
return baseMapper.delete(lqw) > 0;
|
return baseMapper.delete(lqw) > 0;
|
||||||
@@ -208,10 +208,10 @@ public class SisAuthRecordServiceImpl implements ISisAuthRecordService {
|
|||||||
/**
|
/**
|
||||||
* 查询所有可授权设备树
|
* 查询所有可授权设备树
|
||||||
*
|
*
|
||||||
* @return List<TreeNode<Long>>
|
* @return List<TreeNode < Long>>
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public List<TreeNode<Long>> authDeviceTree(){
|
public List<TreeNode<Long>> authDeviceTree() {
|
||||||
// 暂时将所有数据放入写死的根节点中
|
// 暂时将所有数据放入写死的根节点中
|
||||||
TreeNode<Long> root = new TreeNode<>();
|
TreeNode<Long> root = new TreeNode<>();
|
||||||
root.setLevel(0);
|
root.setLevel(0);
|
||||||
@@ -238,7 +238,6 @@ public class SisAuthRecordServiceImpl implements ISisAuthRecordService {
|
|||||||
List<SisElevatorInfoVo> eleVoList = elevatorInfoService.queryList(new SisElevatorInfoBo());
|
List<SisElevatorInfoVo> eleVoList = elevatorInfoService.queryList(new SisElevatorInfoBo());
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
List<TreeNode<Long>> acChildrenList = acVoList.stream().map(item -> {
|
List<TreeNode<Long>> acChildrenList = acVoList.stream().map(item -> {
|
||||||
TreeNode<Long> node = new TreeNode<>();
|
TreeNode<Long> node = new TreeNode<>();
|
||||||
node.setLevel(2);
|
node.setLevel(2);
|
||||||
@@ -265,4 +264,14 @@ public class SisAuthRecordServiceImpl implements ISisAuthRecordService {
|
|||||||
root.setChildren(List.of(accessNode, elevatorNode));
|
root.setChildren(List.of(accessNode, elevatorNode));
|
||||||
return List.of(root);
|
return List.of(root);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据人脸比对ID,返回授权记录
|
||||||
|
*
|
||||||
|
* @param personId 人脸比对ID
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public List<SisAuthRecordVo> checkAuth(Long personId) {
|
||||||
|
return baseMapper.checkAuth(personId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -138,10 +138,10 @@ public class SisDeviceBindRefServiceImpl implements ISisDeviceBindRefService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SisDeviceBindRef queryByDeviceIp(String ipcAddr) {
|
public List<SisDeviceBindRefVo> queryByDeviceIp(String ipcAddr) {
|
||||||
LambdaQueryWrapper<SisDeviceBindRef> lqw = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<SisDeviceBindRef> lqw = new LambdaQueryWrapper<>();
|
||||||
lqw.eq(SisDeviceBindRef::getDeviceIp, ipcAddr);
|
lqw.eq(SisDeviceBindRef::getDeviceIp, ipcAddr);
|
||||||
return baseMapper.selectOne(lqw);
|
return baseMapper.selectVoList(lqw);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -0,0 +1,145 @@
|
|||||||
|
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.SisElevatorFloorRefBo;
|
||||||
|
import org.dromara.sis.domain.vo.SisElevatorFloorRefVo;
|
||||||
|
import org.dromara.sis.domain.SisElevatorFloorRef;
|
||||||
|
import org.dromara.sis.mapper.SisElevatorFloorRefMapper;
|
||||||
|
import org.dromara.sis.service.ISisElevatorFloorRefService;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Collection;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 电梯⇄楼层关联Service业务层处理
|
||||||
|
*
|
||||||
|
* @author lsm
|
||||||
|
* @date 2025-07-15
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
@Service
|
||||||
|
public class SisElevatorFloorRefServiceImpl implements ISisElevatorFloorRefService {
|
||||||
|
|
||||||
|
private final SisElevatorFloorRefMapper baseMapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询电梯⇄楼层关联
|
||||||
|
*
|
||||||
|
* @param id 主键
|
||||||
|
* @return 电梯⇄楼层关联
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public SisElevatorFloorRefVo queryById(Long id) {
|
||||||
|
return baseMapper.selectVoById(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询电梯⇄楼层关联列表
|
||||||
|
*
|
||||||
|
* @param bo 查询条件
|
||||||
|
* @param pageQuery 分页参数
|
||||||
|
* @return 电梯⇄楼层关联分页列表
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public TableDataInfo<SisElevatorFloorRefVo> queryPageList(SisElevatorFloorRefBo bo, PageQuery pageQuery) {
|
||||||
|
LambdaQueryWrapper<SisElevatorFloorRef> lqw = buildQueryWrapper(bo);
|
||||||
|
Page<SisElevatorFloorRefVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||||
|
return TableDataInfo.build(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询符合条件的电梯⇄楼层关联列表
|
||||||
|
*
|
||||||
|
* @param bo 查询条件
|
||||||
|
* @return 电梯⇄楼层关联列表
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public List<SisElevatorFloorRefVo> queryList(SisElevatorFloorRefBo bo) {
|
||||||
|
LambdaQueryWrapper<SisElevatorFloorRef> lqw = buildQueryWrapper(bo);
|
||||||
|
return baseMapper.selectVoList(lqw);
|
||||||
|
}
|
||||||
|
|
||||||
|
private LambdaQueryWrapper<SisElevatorFloorRef> buildQueryWrapper(SisElevatorFloorRefBo bo) {
|
||||||
|
Map<String, Object> params = bo.getParams();
|
||||||
|
LambdaQueryWrapper<SisElevatorFloorRef> lqw = Wrappers.lambdaQuery();
|
||||||
|
lqw.orderByAsc(SisElevatorFloorRef::getId);
|
||||||
|
lqw.eq(bo.getElevatorId() != null, SisElevatorFloorRef::getElevatorId, bo.getElevatorId());
|
||||||
|
lqw.eq(bo.getLayerNum() != null, SisElevatorFloorRef::getLayerNum, bo.getLayerNum());
|
||||||
|
return lqw;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增电梯⇄楼层关联
|
||||||
|
*
|
||||||
|
* @param bo 电梯⇄楼层关联
|
||||||
|
* @return 是否新增成功
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Boolean insertByBo(SisElevatorFloorRefBo bo) {
|
||||||
|
SisElevatorFloorRef add = MapstructUtils.convert(bo, SisElevatorFloorRef.class);
|
||||||
|
validEntityBeforeSave(add);
|
||||||
|
boolean flag = baseMapper.insert(add) > 0;
|
||||||
|
if (flag) {
|
||||||
|
bo.setId(add.getId());
|
||||||
|
}
|
||||||
|
return flag;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改电梯⇄楼层关联
|
||||||
|
*
|
||||||
|
* @param bo 电梯⇄楼层关联
|
||||||
|
* @return 是否修改成功
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Boolean updateByBo(SisElevatorFloorRefBo bo) {
|
||||||
|
SisElevatorFloorRef update = MapstructUtils.convert(bo, SisElevatorFloorRef.class);
|
||||||
|
validEntityBeforeSave(update);
|
||||||
|
return baseMapper.updateById(update) > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 保存前的数据校验
|
||||||
|
*/
|
||||||
|
private void validEntityBeforeSave(SisElevatorFloorRef entity) {
|
||||||
|
//TODO 做一些数据校验,如唯一约束
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 校验并批量删除电梯⇄楼层关联信息
|
||||||
|
*
|
||||||
|
* @param ids 待删除的主键集合
|
||||||
|
* @param isValid 是否进行有效性校验
|
||||||
|
* @return 是否删除成功
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||||
|
if (isValid) {
|
||||||
|
//TODO 做一些业务上的校验,判断是否需要校验
|
||||||
|
}
|
||||||
|
return baseMapper.deleteByIds(ids) > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据电梯id,获取电梯⇄楼层关联信息
|
||||||
|
*
|
||||||
|
* @param elevatorId 电梯id
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public List<SisElevatorFloorRefVo> queryByElevatorId(Long elevatorId) {
|
||||||
|
LambdaQueryWrapper<SisElevatorFloorRef> lqw = Wrappers.lambdaQuery();
|
||||||
|
lqw.eq(SisElevatorFloorRef::getElevatorId, elevatorId);
|
||||||
|
return baseMapper.selectVoList(lqw);
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,149 @@
|
|||||||
|
package org.dromara.sis.service.impl;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
|
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.SisFloorInfoBo;
|
||||||
|
import org.dromara.sis.domain.vo.SisFloorInfoVo;
|
||||||
|
import org.dromara.sis.domain.SisFloorInfo;
|
||||||
|
import org.dromara.sis.mapper.SisFloorInfoMapper;
|
||||||
|
import org.dromara.sis.service.ISisFloorInfoService;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Collection;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 建筑物楼层信息Service业务层处理
|
||||||
|
*
|
||||||
|
* @author lsm
|
||||||
|
* @since 2025-07-15
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
@Service
|
||||||
|
public class SisFloorInfoServiceImpl implements ISisFloorInfoService {
|
||||||
|
|
||||||
|
private final SisFloorInfoMapper baseMapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询建筑物楼层信息
|
||||||
|
*
|
||||||
|
* @param floorId 主键
|
||||||
|
* @return 建筑物楼层信息
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public SisFloorInfoVo queryById(Long floorId){
|
||||||
|
return baseMapper.selectVoById(floorId);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询建筑物楼层信息列表
|
||||||
|
*
|
||||||
|
* @param bo 查询条件
|
||||||
|
* @param pageQuery 分页参数
|
||||||
|
* @return 建筑物楼层信息分页列表
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public TableDataInfo<SisFloorInfoVo> queryPageList(SisFloorInfoBo bo, PageQuery pageQuery) {
|
||||||
|
LambdaQueryWrapper<SisFloorInfo> lqw = buildQueryWrapper(bo);
|
||||||
|
Page<SisFloorInfoVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||||
|
return TableDataInfo.build(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询符合条件的建筑物楼层信息列表
|
||||||
|
*
|
||||||
|
* @param bo 查询条件
|
||||||
|
* @return 建筑物楼层信息列表
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public List<SisFloorInfoVo> queryList(SisFloorInfoBo bo) {
|
||||||
|
LambdaQueryWrapper<SisFloorInfo> lqw = buildQueryWrapper(bo);
|
||||||
|
return baseMapper.selectVoList(lqw);
|
||||||
|
}
|
||||||
|
|
||||||
|
private LambdaQueryWrapper<SisFloorInfo> buildQueryWrapper(SisFloorInfoBo bo) {
|
||||||
|
Map<String, Object> params = bo.getParams();
|
||||||
|
LambdaQueryWrapper<SisFloorInfo> lqw = Wrappers.lambdaQuery();
|
||||||
|
lqw.orderByAsc(SisFloorInfo::getFloorId);
|
||||||
|
lqw.eq(bo.getMinLayer() != null, SisFloorInfo::getMinLayer, bo.getMinLayer());
|
||||||
|
lqw.eq(bo.getMaxLayer() != null, SisFloorInfo::getMaxLayer, bo.getMaxLayer());
|
||||||
|
lqw.eq(bo.getBuildingId() != null, SisFloorInfo::getBuildingId, bo.getBuildingId());
|
||||||
|
lqw.eq(bo.getCommunityId() != null, SisFloorInfo::getCommunityId, bo.getCommunityId());
|
||||||
|
return lqw;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增建筑物楼层信息
|
||||||
|
*
|
||||||
|
* @param bo 建筑物楼层信息
|
||||||
|
* @return 是否新增成功
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Boolean insertByBo(SisFloorInfoBo bo) {
|
||||||
|
SisFloorInfo add = MapstructUtils.convert(bo, SisFloorInfo.class);
|
||||||
|
validEntityBeforeSave(add);
|
||||||
|
boolean flag = baseMapper.insert(add) > 0;
|
||||||
|
if (flag) {
|
||||||
|
bo.setFloorId(add.getFloorId());
|
||||||
|
}
|
||||||
|
return flag;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改建筑物楼层信息
|
||||||
|
*
|
||||||
|
* @param bo 建筑物楼层信息
|
||||||
|
* @return 是否修改成功
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Boolean updateByBo(SisFloorInfoBo bo) {
|
||||||
|
SisFloorInfo update = MapstructUtils.convert(bo, SisFloorInfo.class);
|
||||||
|
validEntityBeforeSave(update);
|
||||||
|
return baseMapper.updateById(update) > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 保存前的数据校验
|
||||||
|
*/
|
||||||
|
private void validEntityBeforeSave(SisFloorInfo entity){
|
||||||
|
//TODO 做一些数据校验,如唯一约束
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 校验并批量删除建筑物楼层信息信息
|
||||||
|
*
|
||||||
|
* @param ids 待删除的主键集合
|
||||||
|
* @param isValid 是否进行有效性校验
|
||||||
|
* @return 是否删除成功
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||||
|
if(isValid){
|
||||||
|
//TODO 做一些业务上的校验,判断是否需要校验
|
||||||
|
}
|
||||||
|
return baseMapper.deleteByIds(ids) > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据建筑ID返回楼层信息
|
||||||
|
*
|
||||||
|
* @param buildingId 建筑ID
|
||||||
|
* @return 楼层信息
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public SisFloorInfoVo queryByBuildingId(Long buildingId){
|
||||||
|
LambdaQueryWrapper<SisFloorInfo> qw = new LambdaQueryWrapper<>();
|
||||||
|
qw.eq(SisFloorInfo::getBuildingId, buildingId);
|
||||||
|
return baseMapper.selectVoOne(qw);
|
||||||
|
}
|
||||||
|
}
|
@@ -5,10 +5,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<mapper namespace="org.dromara.sis.mapper.SisAuthRecordMapper">
|
<mapper namespace="org.dromara.sis.mapper.SisAuthRecordMapper">
|
||||||
|
|
||||||
<select id="checkAuth" resultType="org.dromara.sis.domain.vo.SisAuthRecordVo">
|
<select id="checkAuth" resultType="org.dromara.sis.domain.vo.SisAuthRecordVo">
|
||||||
SELECT a.*
|
SELECT
|
||||||
FROM sis_auth_record a
|
device_type,
|
||||||
LEFT JOIN sis_lib_device_img_ref b ON a.lib_id = b.lib_id AND a.img_id = b.img_id
|
device_id
|
||||||
WHERE a.ac_id = #{accessControlId}
|
FROM sis_auth_record sar
|
||||||
AND b.eqp_lib_img_id = #{personId}
|
WHERE EXISTS (
|
||||||
|
SELECT 1
|
||||||
|
FROM sis_person_lib_img a
|
||||||
|
INNER JOIN sis_lib_img_ref b ON a.id = b.img_id
|
||||||
|
WHERE a.remote_img_id = #{personId}
|
||||||
|
AND b.lib_id = sar.lib_id -- 关联主表
|
||||||
|
)
|
||||||
</select>
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
Reference in New Issue
Block a user