diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml new file mode 100644 index 00000000..55734296 --- /dev/null +++ b/.gitea/workflows/dev.yml @@ -0,0 +1,52 @@ +name: Gitea Actions Demo +run-name: ${{ gitea.actor }} is testing out Gitea Actions 🚀 +on: [push] + +jobs: + Explore-Gitea-Actions: + runs-on: ubuntu-22.04 + steps: + + - name: Checkout code + uses: http://127.0.0.1:3000/bichangxiong/checkout@v4 # 使用 Gitea 镜像 + with: + fetch-depth: 1 # 只拉取最新一次提交 + - name: Maven + run: mvn clean install + - name: Build with Maven + run: mvn -B package -DskipTests -pl ruoyi-modules/Property -am + - name: cp + run: copy ./ruoyi-modules/Property/target/Property.jar C:\devtool\server + - name: kill + run: Get-NetTCPConnection -LocalPort 10001 -State Listening -ErrorAction SilentlyContinue | ForEach-Object -Process { Stop-Process -Id $_.OwningProcess -Force -ErrorAction SilentlyContinue } + - name: run + run: java -jar C:\devtool\server\Property.jar + + # - copy ./ruoyi-modules/Property/target/Property.jar C:\devtool\server + # - pwd + # - java -jar ./docker/jar/Property.jar + + # - name: cd + # run: cd ruoyi-modules/Property + # - name: Build with Maven + # run: mvn -B clean package -DskipTests --file pom.xml + + # - name: Start Spring Cloud Services + # run: | + # # 启动顺序示例:注册中心 -> 配置中心 -> 网关 -> 业务服务 + # echo "Starting Server..." + # java -jar Property.jar + # SERVER_PIDS[0]=$! + + # # 等待注册中心启动 + # sleep 30 + + + # done + + # 保持工作流运行,避免服务被终止 + # wait + # env: + # JAVA_OPTS: "-Xmx512m -Xms256m" + # timeout-minutes: 20 + diff --git a/pom.xml b/pom.xml index 822e9c13..8a211f15 100644 --- a/pom.xml +++ b/pom.xml @@ -73,10 +73,10 @@ dev - 127.0.0.1:8848 - 127.0.0.1:4560 - - + + + 47.109.37.87:8848 + 47.109.37.87:4560 DEFAULT_GROUP DEFAULT_GROUP nacos diff --git a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/mapper/TbAccessControlMapper.java b/ruoyi-modules/Iot/src/main/java/org/dromara/iot/mapper/TbAccessControlMapper.java deleted file mode 100644 index 7b85fb06..00000000 --- a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/mapper/TbAccessControlMapper.java +++ /dev/null @@ -1,17 +0,0 @@ -package org.dromara.iot.mapper; - -import org.apache.ibatis.annotations.Mapper; -import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; -import org.dromara.iot.domain.TbAccessControl; -import org.dromara.iot.domain.vo.TbAccessControlVo; - -/** - * 门禁管理Mapper接口 - * - * @author mocheng - * @date 2025-06-17 - */ -@Mapper -public interface TbAccessControlMapper extends BaseMapperPlus { - -} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/AssetTypeController.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/AssetTypeController.java new file mode 100644 index 00000000..3994cee1 --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/AssetTypeController.java @@ -0,0 +1,106 @@ +package org.dromara.property.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.property.domain.vo.AssetTypeVo; +import org.dromara.property.domain.bo.AssetTypeBo; +import org.dromara.property.service.IAssetTypeService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * 资产类型 + * 前端访问路由地址为:/property/assetType + * + * @author mocheng + * @date 2025-06-23 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/assetType") +public class AssetTypeController extends BaseController { + + private final IAssetTypeService assetTypeService; + + /** + * 查询资产类型列表 + */ + @SaCheckPermission("property:assetType:list") + @GetMapping("/list") + public TableDataInfo list(AssetTypeBo bo, PageQuery pageQuery) { + return assetTypeService.queryPageList(bo, pageQuery); + } + + /** + * 导出资产类型列表 + */ + @SaCheckPermission("property:assetType:export") + @Log(title = "资产类型", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(AssetTypeBo bo, HttpServletResponse response) { + List list = assetTypeService.queryList(bo); + ExcelUtil.exportExcel(list, "资产类型", AssetTypeVo.class, response); + } + + /** + * 获取资产类型详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("property:assetType:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable("id") Long id) { + return R.ok(assetTypeService.queryById(id)); + } + + /** + * 新增资产类型 + */ + @SaCheckPermission("property:assetType:add") + @Log(title = "资产类型", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody AssetTypeBo bo) { + return toAjax(assetTypeService.insertByBo(bo)); + } + + /** + * 修改资产类型 + */ + @SaCheckPermission("property:assetType:edit") + @Log(title = "资产类型", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody AssetTypeBo bo) { + return toAjax(assetTypeService.updateByBo(bo)); + } + + /** + * 删除资产类型 + * + * @param ids 主键串 + */ + @SaCheckPermission("property:assetType:remove") + @Log(title = "资产类型", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable("ids") Long[] ids) { + return toAjax(assetTypeService.deleteWithValidByIds(List.of(ids), true)); + } +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/CleanserverOrderController.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/CleanserverOrderController.java new file mode 100644 index 00000000..424fe27a --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/CleanserverOrderController.java @@ -0,0 +1,106 @@ +package org.dromara.property.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.property.domain.vo.CleanserverOrderVo; +import org.dromara.property.domain.bo.CleanserverOrderBo; +import org.dromara.property.service.ICleanserverOrderService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * 保洁服务订单 + * 前端访问路由地址为:/property/cleanServerOrder + * + * @author mocheng + * @date 2025-06-23 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/cleanServerOrder") +public class CleanserverOrderController extends BaseController { + + private final ICleanserverOrderService cleanserverOrderService; + + /** + * 查询保洁服务订单列表 + */ + @SaCheckPermission("property:cleanServerOrder:list") + @GetMapping("/list") + public TableDataInfo list(CleanserverOrderBo bo, PageQuery pageQuery) { + return cleanserverOrderService.queryPageList(bo, pageQuery); + } + + /** + * 导出保洁服务订单列表 + */ + @SaCheckPermission("property:cleanServerOrder:export") + @Log(title = "保洁服务订单", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(CleanserverOrderBo bo, HttpServletResponse response) { + List list = cleanserverOrderService.queryList(bo); + ExcelUtil.exportExcel(list, "保洁服务订单", CleanserverOrderVo.class, response); + } + + /** + * 获取保洁服务订单详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("property:cleanServerOrder:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable("id") Long id) { + return R.ok(cleanserverOrderService.queryById(id)); + } + + /** + * 新增保洁服务订单 + */ + @SaCheckPermission("property:cleanServerOrder:add") + @Log(title = "保洁服务订单", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody CleanserverOrderBo bo) { + return toAjax(cleanserverOrderService.insertByBo(bo)); + } + + /** + * 修改保洁服务订单 + */ + @SaCheckPermission("property:cleanServerOrder:edit") + @Log(title = "保洁服务订单", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody CleanserverOrderBo bo) { + return toAjax(cleanserverOrderService.updateByBo(bo)); + } + + /** + * 删除保洁服务订单 + * + * @param ids 主键串 + */ + @SaCheckPermission("property:cleanServerOrder:remove") + @Log(title = "保洁服务订单", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable("ids") Long[] ids) { + return toAjax(cleanserverOrderService.deleteWithValidByIds(List.of(ids), true)); + } +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/SysCityAreaController.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/SysCityAreaController.java index 0ba68b1f..76828f36 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/SysCityAreaController.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/SysCityAreaController.java @@ -1,7 +1,6 @@ package org.dromara.property.controller; import cn.dev33.satoken.annotation.SaCheckPermission; -import com.alibaba.fastjson2.JSONObject; import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; @@ -20,8 +19,6 @@ import org.dromara.property.domain.bo.SysCityAreaBo; import org.dromara.property.domain.vo.CityAreaTreeVo; import org.dromara.property.domain.vo.SysCityAreaVo; import org.dromara.property.service.ISysCityAreaService; -import org.springframework.boot.ApplicationArguments; -import org.springframework.boot.ApplicationRunner; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -39,7 +36,7 @@ import java.util.List; @RequiredArgsConstructor @RestController @RequestMapping("/cityArea") -public class SysCityAreaController extends BaseController implements ApplicationRunner { +public class SysCityAreaController extends BaseController { private final ISysCityAreaService SysCityAreaService; @@ -126,10 +123,4 @@ public class SysCityAreaController extends BaseController implements Application return R.ok(list); } - - @Override - public void run(ApplicationArguments args) throws Exception { - R> listR = queryTreeList(); - System.out.println(JSONObject.toJSONString(listR)); - } } diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/TbAccessControlController.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/TbAccessControlController.java deleted file mode 100644 index 3b08d181..00000000 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/TbAccessControlController.java +++ /dev/null @@ -1,106 +0,0 @@ -package org.dromara.property.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.property.domain.vo.TbAccessControlVo; -import org.dromara.property.domain.bo.TbAccessControlBo; -import org.dromara.property.service.ITbAccessControlService; -import org.dromara.common.mybatis.core.page.TableDataInfo; - -/** - * 门禁管理 - * 前端访问路由地址为:/property/accessControl - * - * @author mocheng - * @date 2025-06-18 - */ -@Validated -@RequiredArgsConstructor -@RestController -@RequestMapping("/accessControl") -public class TbAccessControlController extends BaseController { - - private final ITbAccessControlService tbAccessControlService; - - /** - * 查询门禁管理列表 - */ - @SaCheckPermission("property:accessControl:list") - @GetMapping("/list") - public TableDataInfo list(TbAccessControlBo bo, PageQuery pageQuery) { - return tbAccessControlService.queryPageList(bo, pageQuery); - } - - /** - * 导出门禁管理列表 - */ - @SaCheckPermission("property:accessControl:export") - @Log(title = "门禁管理", businessType = BusinessType.EXPORT) - @PostMapping("/export") - public void export(TbAccessControlBo bo, HttpServletResponse response) { - List list = tbAccessControlService.queryList(bo); - ExcelUtil.exportExcel(list, "门禁管理", TbAccessControlVo.class, response); - } - - /** - * 获取门禁管理详细信息 - * - * @param id 主键 - */ - @SaCheckPermission("property:accessControl:query") - @GetMapping("/{id}") - public R getInfo(@NotNull(message = "主键不能为空") - @PathVariable("id") Long id) { - return R.ok(tbAccessControlService.queryById(id)); - } - - /** - * 新增门禁管理 - */ - @SaCheckPermission("property:accessControl:add") - @Log(title = "门禁管理", businessType = BusinessType.INSERT) - @RepeatSubmit() - @PostMapping() - public R add(@Validated(AddGroup.class) @RequestBody TbAccessControlBo bo) { - return toAjax(tbAccessControlService.insertByBo(bo)); - } - - /** - * 修改门禁管理 - */ - @SaCheckPermission("property:accessControl:edit") - @Log(title = "门禁管理", businessType = BusinessType.UPDATE) - @RepeatSubmit() - @PutMapping() - public R edit(@Validated(EditGroup.class) @RequestBody TbAccessControlBo bo) { - return toAjax(tbAccessControlService.updateByBo(bo)); - } - - /** - * 删除门禁管理 - * - * @param ids 主键串 - */ - @SaCheckPermission("property:accessControl:remove") - @Log(title = "门禁管理", businessType = BusinessType.DELETE) - @DeleteMapping("/{ids}") - public R remove(@NotEmpty(message = "主键不能为空") - @PathVariable("ids") Long[] ids) { - return toAjax(tbAccessControlService.deleteWithValidByIds(List.of(ids), true)); - } -} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/AssetType.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/AssetType.java new file mode 100644 index 00000000..27b90f83 --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/AssetType.java @@ -0,0 +1,56 @@ +package org.dromara.property.domain; + +import org.dromara.common.tenant.core.TenantEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; + +/** + * 资产类型对象 asset_type + * + * @author mocheng + * @date 2025-06-23 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("asset_type") +public class AssetType extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id") + private Long id; + + /** + * 分类名称 + */ + private String assetTypeName; + + /** + * 排序 + */ + private Long sort; + + /** + * 创建人id + */ + private Long createById; + + /** + * 更新人id + */ + private Long updateById; + + /** + * 搜索值 + */ + private String searchValue; + + +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/CleanOrder.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/CleanOrder.java index 6e55e892..17be3cc2 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/CleanOrder.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/CleanOrder.java @@ -89,6 +89,11 @@ public class CleanOrder extends TenantEntity { */ private String persion; + /** + * 状态 + */ + private int state; + /** * 联系电话 */ diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/CleanserverOrder.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/CleanserverOrder.java new file mode 100644 index 00000000..7967c59f --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/CleanserverOrder.java @@ -0,0 +1,41 @@ +package org.dromara.property.domain; + +import org.dromara.common.mybatis.core.domain.BaseEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; + +/** + * 保洁服务订单对象 cleanserver_order + * + * @author mocheng + * @date 2025-06-23 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("cleanserver_order") +public class CleanserverOrder extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id") + private Long id; + + /** + * 订单id + */ + private Long orderId; + + /** + * 保洁服务id + */ + private Long cleanServerId; + + +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/TbAccessControl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/TbAccessControl.java deleted file mode 100644 index f7b003f1..00000000 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/TbAccessControl.java +++ /dev/null @@ -1,101 +0,0 @@ -package org.dromara.property.domain; - -import org.dromara.common.tenant.core.TenantEntity; -import com.baomidou.mybatisplus.annotation.*; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.io.Serial; - -/** - * 门禁管理对象 tb_access_control - * - * @author mocheng - * @date 2025-06-18 - */ -@Data -@EqualsAndHashCode(callSuper = true) -@TableName("tb_access_control") -public class TbAccessControl extends TenantEntity { - - @Serial - private static final long serialVersionUID = 1L; - - /** - * - */ - @TableId(value = "id") - private Long id; - - /** - * 门禁设备编码 - */ - private String accessCode; - - /** - * 门禁名称 - */ - private String accessName; - - /** - * 园区编码 - */ - private String communityCode; - - /** - * 建筑编码 - */ - private String buildingCode; - - /** - * 门禁设备ip - */ - private String accessIp; - - /** - * - */ - private Long accessPort; - - /** - * 门禁设备类型 - */ - private Long accssType; - - /** - * - */ - private String factoryCode; - - /** - * 控制卡类型:1-系统,2-E8 - */ - private Long controlType; - - /** - * 控制卡类型编码 - */ - private String controlCode; - - /** - * 外部编码 - */ - private String outCode; - - /** - * 组织编码 - */ - private String orgCode; - - /** - * 数据状态:1有效,0无效 - */ - private Long dataState; - - /** - * 搜索值 - */ - private String searchValue; - - -} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/AssetTypeBo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/AssetTypeBo.java new file mode 100644 index 00000000..be8b16b1 --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/AssetTypeBo.java @@ -0,0 +1,40 @@ +package org.dromara.property.domain.bo; + +import org.dromara.property.domain.AssetType; +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.*; + +/** + * 资产类型业务对象 asset_type + * + * @author mocheng + * @date 2025-06-23 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = AssetType.class, reverseConvertGenerate = false) +public class AssetTypeBo extends BaseEntity { + + /** + * 主键 + */ + @NotNull(message = "主键不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 分类名称 + */ + private String assetTypeName; + + /** + * 排序 + */ + private Long sort; + + +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/CleanBo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/CleanBo.java index f2312d01..cbf39975 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/CleanBo.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/CleanBo.java @@ -1,5 +1,6 @@ package org.dromara.property.domain.bo; +import org.dromara.common.core.validate.enumd.EnumPattern; import org.dromara.property.domain.Clean; import org.dromara.common.mybatis.core.domain.BaseEntity; import org.dromara.common.core.validate.AddGroup; @@ -9,6 +10,8 @@ import lombok.Data; import lombok.EqualsAndHashCode; import jakarta.validation.constraints.*; +import java.util.List; + /** * 保洁管理业务对象 clean * @@ -32,6 +35,12 @@ public class CleanBo extends BaseEntity { @NotBlank(message = "劳务名称不能为空", groups = { AddGroup.class, EditGroup.class }) private String name; + /** + * 劳务id + */ + @NotBlank(message = "劳务id不能为空", groups = { AddGroup.class, EditGroup.class }) + private List ids; + /** * 计量单位 */ diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/CleanOrderBo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/CleanOrderBo.java index a817e8e6..c2e11d0d 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/CleanOrderBo.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/CleanOrderBo.java @@ -9,6 +9,8 @@ import lombok.Data; import lombok.EqualsAndHashCode; import jakarta.validation.constraints.*; import java.util.Date; +import java.util.List; + import com.fasterxml.jackson.annotation.JsonFormat; /** @@ -43,7 +45,7 @@ public class CleanOrderBo extends BaseEntity { * 保洁id */ @NotNull(message = "保洁id不能为空", groups = { AddGroup.class, EditGroup.class }) - private Long cleanId; + private List cleanIds; /** * 名称 @@ -104,5 +106,10 @@ public class CleanOrderBo extends BaseEntity { @NotBlank(message = "联系电话不能为空", groups = { AddGroup.class, EditGroup.class }) private String phone; + /** + * 状态 + */ + private int state; + } diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/CleanserverOrderBo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/CleanserverOrderBo.java new file mode 100644 index 00000000..70667e5a --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/CleanserverOrderBo.java @@ -0,0 +1,40 @@ +package org.dromara.property.domain.bo; + +import org.dromara.property.domain.CleanserverOrder; +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.*; + +/** + * 保洁服务订单业务对象 cleanserver_order + * + * @author mocheng + * @date 2025-06-23 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = CleanserverOrder.class, reverseConvertGenerate = false) +public class CleanserverOrderBo extends BaseEntity { + + /** + * 主键 + */ + @NotNull(message = "主键不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 订单id + */ + private Long orderId; + + /** + * 保洁服务id + */ + private Long cleanServerId; + + +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/TbAccessControlBo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/TbAccessControlBo.java deleted file mode 100644 index 756934bc..00000000 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/TbAccessControlBo.java +++ /dev/null @@ -1,109 +0,0 @@ -package org.dromara.property.domain.bo; - -import org.dromara.property.domain.TbAccessControl; -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.*; - -/** - * 门禁管理业务对象 tb_access_control - * - * @author mocheng - * @date 2025-06-18 - */ -@Data -@EqualsAndHashCode(callSuper = true) -@AutoMapper(target = TbAccessControl.class, reverseConvertGenerate = false) -public class TbAccessControlBo extends BaseEntity { - - /** - * - */ - @NotNull(message = "不能为空", groups = { EditGroup.class }) - private Long id; - - /** - * 门禁设备编码 - */ - @NotBlank(message = "门禁设备编码不能为空", groups = { AddGroup.class, EditGroup.class }) - private String accessCode; - - /** - * 门禁名称 - */ - @NotBlank(message = "门禁名称不能为空", groups = { AddGroup.class, EditGroup.class }) - private String accessName; - - /** - * 园区编码 - */ - @NotBlank(message = "园区编码不能为空", groups = { AddGroup.class, EditGroup.class }) - private String communityCode; - - /** - * 建筑编码 - */ - @NotBlank(message = "建筑编码不能为空", groups = { AddGroup.class, EditGroup.class }) - private String buildingCode; - - /** - * 门禁设备ip - */ - private String accessIp; - - /** - * - */ - private Long accessPort; - - /** - * 门禁设备类型 - */ - @NotNull(message = "门禁设备类型不能为空", groups = { AddGroup.class, EditGroup.class }) - private Long accssType; - - /** - * - */ - @NotBlank(message = "不能为空", groups = { AddGroup.class, EditGroup.class }) - private String factoryCode; - - /** - * 控制卡类型:1-系统,2-E8 - */ - @NotNull(message = "控制卡类型:1-系统,2-E8不能为空", groups = { AddGroup.class, EditGroup.class }) - private Long controlType; - - /** - * 控制卡类型编码 - */ - private String controlCode; - - /** - * 外部编码 - */ - private String outCode; - - /** - * 组织编码 - */ - @NotBlank(message = "组织编码不能为空", groups = { AddGroup.class, EditGroup.class }) - private String orgCode; - - /** - * 数据状态:1有效,0无效 - */ - @NotNull(message = "数据状态:1有效,0无效不能为空", groups = { AddGroup.class, EditGroup.class }) - private Long dataState; - - /** - * 搜索值 - */ - private String searchValue; - - -} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ApplicationVo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ApplicationVo.java index 4fa7b598..a2567b76 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ApplicationVo.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ApplicationVo.java @@ -42,12 +42,24 @@ public class ApplicationVo implements Serializable { @ExcelProperty(value = "资产id") private Long assetId; + /** + * 资产名称 + */ + @ExcelProperty(value = "资产名称") + private String assetName; + /** * 领用人id */ @ExcelProperty(value = "领用人id") private Long userId; + /** + * 领用人姓名 + */ + @ExcelProperty(value = "领用人姓名") + private String userName; + /** * 数量 */ @@ -66,6 +78,12 @@ public class ApplicationVo implements Serializable { @ExcelProperty(value = "审批人id") private Long acceptanceUserId; + /** + * 审批人姓名 + */ + @ExcelProperty(value = "审批人姓名") + private String acceptanceUserName; + /** * 审批时间 */ @@ -85,4 +103,5 @@ public class ApplicationVo implements Serializable { private Date createTime; + } diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/AssetTypeVo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/AssetTypeVo.java new file mode 100644 index 00000000..19c444bf --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/AssetTypeVo.java @@ -0,0 +1,62 @@ +package org.dromara.property.domain.vo; + +import org.dromara.property.domain.AssetType; +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; + + + +/** + * 资产类型视图对象 asset_type + * + * @author mocheng + * @date 2025-06-23 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = AssetType.class) +public class AssetTypeVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ExcelProperty(value = "主键") + private Long id; + + /** + * 分类名称 + */ + @ExcelProperty(value = "分类名称") + private String assetTypeName; + + /** + * 排序 + */ + @ExcelProperty(value = "排序") + private Long sort; + + /** + * 创建时间 + */ + @ExcelProperty(value = "创建时间") + private Date createTime; + + /** + * 创建人 + */ + @ExcelProperty(value = "创建人") + private String createBy; + + +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/AssetVo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/AssetVo.java index 61c8b5a8..b1879e8e 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/AssetVo.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/AssetVo.java @@ -48,6 +48,12 @@ public class AssetVo implements Serializable { @ExcelProperty(value = "类型") private String model; + /** + * 类型名称 + */ + @ExcelProperty(value = "类型名称") + private String modelName; + /** * 规格 */ @@ -78,6 +84,12 @@ public class AssetVo implements Serializable { @ExcelProperty(value = "仓库id") private Long depotId; + /** + * 仓库名称 + */ + @ExcelProperty(value = "仓库名称") + private String depotName; + /** * 描述信息 */ @@ -88,8 +100,13 @@ public class AssetVo implements Serializable { * 供应商id */ @ExcelProperty(value = "供应商id") - private Long suppliersId; + private String suppliersId; + /** + * 供应商名称 + */ + @ExcelProperty(value = "供应商名称") + private String suppliersName; /** * 入库时间 */ diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/CleanOrderVo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/CleanOrderVo.java index 53805d68..584d5c15 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/CleanOrderVo.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/CleanOrderVo.java @@ -2,6 +2,7 @@ package org.dromara.property.domain.vo; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; +import kotlin.text.UStringsKt; import org.dromara.property.domain.CleanOrder; import cn.idev.excel.annotation.ExcelIgnoreUnannotated; import cn.idev.excel.annotation.ExcelProperty; @@ -13,7 +14,7 @@ import lombok.Data; import java.io.Serial; import java.io.Serializable; import java.util.Date; - +import java.util.List; /** @@ -51,8 +52,8 @@ public class CleanOrderVo implements Serializable { /** * 保洁id */ - @ExcelProperty(value = "保洁id") - private Long cleanId; + @ExcelProperty(value = "保洁") + private List clean; /** * 名称 @@ -114,5 +115,11 @@ public class CleanOrderVo implements Serializable { @ExcelProperty(value = "联系电话") private String phone; + /** + * 状态 + */ + @ExcelProperty(value = "状态") + private int state; + } diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/CleanserverOrderVo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/CleanserverOrderVo.java new file mode 100644 index 00000000..55bcc360 --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/CleanserverOrderVo.java @@ -0,0 +1,50 @@ +package org.dromara.property.domain.vo; + +import org.dromara.property.domain.CleanserverOrder; +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; + + + +/** + * 保洁服务订单视图对象 cleanserver_order + * + * @author mocheng + * @date 2025-06-23 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = CleanserverOrder.class) +public class CleanserverOrderVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ExcelProperty(value = "主键") + private Long id; + + /** + * 订单id + */ + @ExcelProperty(value = "订单id") + private Long orderId; + + /** + * 保洁服务id + */ + @ExcelProperty(value = "保洁服务id") + private Long cleanServerId; + + +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/TbAccessControlVo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/TbAccessControlVo.java deleted file mode 100644 index 563b0e90..00000000 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/TbAccessControlVo.java +++ /dev/null @@ -1,123 +0,0 @@ -package org.dromara.property.domain.vo; - -import org.dromara.property.domain.TbAccessControl; -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; - - - -/** - * 门禁管理视图对象 tb_access_control - * - * @author mocheng - * @date 2025-06-18 - */ -@Data -@ExcelIgnoreUnannotated -@AutoMapper(target = TbAccessControl.class) -public class TbAccessControlVo implements Serializable { - - @Serial - private static final long serialVersionUID = 1L; - - /** - * - */ - @ExcelProperty(value = "") - private Long id; - - /** - * 门禁设备编码 - */ - @ExcelProperty(value = "门禁设备编码") - private String accessCode; - - /** - * 门禁名称 - */ - @ExcelProperty(value = "门禁名称") - private String accessName; - - /** - * 园区编码 - */ - @ExcelProperty(value = "园区编码") - private String communityCode; - - /** - * 建筑编码 - */ - @ExcelProperty(value = "建筑编码") - private String buildingCode; - - /** - * 门禁设备ip - */ - @ExcelProperty(value = "门禁设备ip") - private String accessIp; - - /** - * - */ - @ExcelProperty(value = "") - private Long accessPort; - - /** - * 门禁设备类型 - */ - @ExcelProperty(value = "门禁设备类型") - private Long accssType; - - /** - * - */ - @ExcelProperty(value = "") - private String factoryCode; - - /** - * 控制卡类型:1-系统,2-E8 - */ - @ExcelProperty(value = "控制卡类型:1-系统,2-E8", converter = ExcelDictConvert.class) - @ExcelDictFormat(dictType = "wy_kzklx") - private Long controlType; - - /** - * 控制卡类型编码 - */ - @ExcelProperty(value = "控制卡类型编码") - private String controlCode; - - /** - * 外部编码 - */ - @ExcelProperty(value = "外部编码") - private String outCode; - - /** - * 组织编码 - */ - @ExcelProperty(value = "组织编码") - private String orgCode; - - /** - * 数据状态:1有效,0无效 - */ - @ExcelProperty(value = "数据状态:1有效,0无效") - private Long dataState; - - /** - * 搜索值 - */ - @ExcelProperty(value = "搜索值") - private String searchValue; - - -} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/AssetTypeMapper.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/AssetTypeMapper.java new file mode 100644 index 00000000..a22c4690 --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/AssetTypeMapper.java @@ -0,0 +1,15 @@ +package org.dromara.property.mapper; + +import org.dromara.property.domain.AssetType; +import org.dromara.property.domain.vo.AssetTypeVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 资产类型Mapper接口 + * + * @author mocheng + * @date 2025-06-23 + */ +public interface AssetTypeMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/CleanserverOrderMapper.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/CleanserverOrderMapper.java new file mode 100644 index 00000000..5bdb2d52 --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/CleanserverOrderMapper.java @@ -0,0 +1,15 @@ +package org.dromara.property.mapper; + +import org.dromara.property.domain.CleanserverOrder; +import org.dromara.property.domain.vo.CleanserverOrderVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 保洁服务订单Mapper接口 + * + * @author mocheng + * @date 2025-06-23 + */ +public interface CleanserverOrderMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/IAssetTypeService.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/IAssetTypeService.java new file mode 100644 index 00000000..edb5d093 --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/IAssetTypeService.java @@ -0,0 +1,69 @@ +package org.dromara.property.service; + +import org.dromara.property.domain.AssetType; +import org.dromara.property.domain.vo.AssetTypeVo; +import org.dromara.property.domain.bo.AssetTypeBo; +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 mocheng + * @date 2025-06-23 + */ +public interface IAssetTypeService { + + /** + * 查询资产类型 + * + * @param id 主键 + * @return 资产类型 + */ + AssetTypeVo queryById(Long id); + + /** + * 分页查询资产类型列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 资产类型分页列表 + */ + TableDataInfo queryPageList(AssetTypeBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的资产类型列表 + * + * @param bo 查询条件 + * @return 资产类型列表 + */ + List queryList(AssetTypeBo bo); + + /** + * 新增资产类型 + * + * @param bo 资产类型 + * @return 是否新增成功 + */ + Boolean insertByBo(AssetTypeBo bo); + + /** + * 修改资产类型 + * + * @param bo 资产类型 + * @return 是否修改成功 + */ + Boolean updateByBo(AssetTypeBo bo); + + /** + * 校验并批量删除资产类型信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/ICleanserverOrderService.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/ICleanserverOrderService.java new file mode 100644 index 00000000..adc609a3 --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/ICleanserverOrderService.java @@ -0,0 +1,69 @@ +package org.dromara.property.service; + +import org.dromara.property.domain.CleanserverOrder; +import org.dromara.property.domain.vo.CleanserverOrderVo; +import org.dromara.property.domain.bo.CleanserverOrderBo; +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 mocheng + * @date 2025-06-23 + */ +public interface ICleanserverOrderService { + + /** + * 查询保洁服务订单 + * + * @param id 主键 + * @return 保洁服务订单 + */ + CleanserverOrderVo queryById(Long id); + + /** + * 分页查询保洁服务订单列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 保洁服务订单分页列表 + */ + TableDataInfo queryPageList(CleanserverOrderBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的保洁服务订单列表 + * + * @param bo 查询条件 + * @return 保洁服务订单列表 + */ + List queryList(CleanserverOrderBo bo); + + /** + * 新增保洁服务订单 + * + * @param bo 保洁服务订单 + * @return 是否新增成功 + */ + Boolean insertByBo(CleanserverOrderBo bo); + + /** + * 修改保洁服务订单 + * + * @param bo 保洁服务订单 + * @return 是否修改成功 + */ + Boolean updateByBo(CleanserverOrderBo bo); + + /** + * 校验并批量删除保洁服务订单信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/ITbAccessControlService.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/ITbAccessControlService.java deleted file mode 100644 index 5079e449..00000000 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/ITbAccessControlService.java +++ /dev/null @@ -1,69 +0,0 @@ -package org.dromara.property.service; - -import org.dromara.property.domain.TbAccessControl; -import org.dromara.property.domain.vo.TbAccessControlVo; -import org.dromara.property.domain.bo.TbAccessControlBo; -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 mocheng - * @date 2025-06-18 - */ -public interface ITbAccessControlService { - - /** - * 查询门禁管理 - * - * @param id 主键 - * @return 门禁管理 - */ - TbAccessControlVo queryById(Long id); - - /** - * 分页查询门禁管理列表 - * - * @param bo 查询条件 - * @param pageQuery 分页参数 - * @return 门禁管理分页列表 - */ - TableDataInfo queryPageList(TbAccessControlBo bo, PageQuery pageQuery); - - /** - * 查询符合条件的门禁管理列表 - * - * @param bo 查询条件 - * @return 门禁管理列表 - */ - List queryList(TbAccessControlBo bo); - - /** - * 新增门禁管理 - * - * @param bo 门禁管理 - * @return 是否新增成功 - */ - Boolean insertByBo(TbAccessControlBo bo); - - /** - * 修改门禁管理 - * - * @param bo 门禁管理 - * @return 是否修改成功 - */ - Boolean updateByBo(TbAccessControlBo bo); - - /** - * 校验并批量删除门禁管理信息 - * - * @param ids 待删除的主键集合 - * @param isValid 是否进行有效性校验 - * @return 是否删除成功 - */ - Boolean deleteWithValidByIds(Collection ids, Boolean isValid); -} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/ApplicationServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/ApplicationServiceImpl.java index 384b49c9..4f0e60db 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/ApplicationServiceImpl.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/ApplicationServiceImpl.java @@ -1,5 +1,7 @@ package org.dromara.property.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.TableDataInfo; @@ -9,6 +11,10 @@ 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.dromara.property.domain.Asset; +import org.dromara.property.domain.vo.AssetVo; +import org.dromara.property.mapper.AssetMapper; +import org.dromara.system.api.RemoteUserService; import org.springframework.stereotype.Service; import org.dromara.property.domain.bo.ApplicationBo; import org.dromara.property.domain.vo.ApplicationVo; @@ -16,6 +22,8 @@ import org.dromara.property.domain.Application; import org.dromara.property.mapper.ApplicationMapper; import org.dromara.property.service.IApplicationService; +import java.sql.Array; +import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Collection; @@ -32,6 +40,8 @@ import java.util.Collection; public class ApplicationServiceImpl implements IApplicationService { private final ApplicationMapper baseMapper; + private final AssetMapper assetMapper; + private final RemoteUserService remoteUserService; /** * 查询资产领用 @@ -41,7 +51,12 @@ public class ApplicationServiceImpl implements IApplicationService { */ @Override public ApplicationVo queryById(Long id){ - return baseMapper.selectVoById(id); + ApplicationVo applicationVo = baseMapper.selectVoById(id); + applicationVo.setUserName(remoteUserService.selectUserNameById(applicationVo.getUserId())); + applicationVo.setAcceptanceUserName(remoteUserService.selectUserNameById(applicationVo.getAcceptanceUserId())); + AssetVo assetVo = assetMapper.selectVoById(applicationVo.getAssetId()); + applicationVo.setAssetName(assetVo==null?"资产不存在" : assetVo.getName()); + return applicationVo; } /** @@ -55,6 +70,18 @@ public class ApplicationServiceImpl implements IApplicationService { public TableDataInfo queryPageList(ApplicationBo bo, PageQuery pageQuery) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + ArrayList ids = new ArrayList<>(); + result.getRecords().forEach(r -> ids.add(r.getUserId())); + result.getRecords().forEach(r -> ids.add(r.getAcceptanceUserId())); + Map userNamesByIds = remoteUserService.selectUserNamesByIds(ids); + result.getRecords().forEach(r ->r.setUserName(userNamesByIds.get(r.getUserId()))); + result.getRecords().forEach(r ->r.setAcceptanceUserName(userNamesByIds.get(r.getUserId()))); +// result.getRecords().forEach(r -> r.setUserName(remoteUserService.selectUserNameById(r.getUserId()))); +// result.getRecords().forEach(r -> r.setAcceptanceUserName(remoteUserService.selectUserNameById(r.getAcceptanceUserId()))); + result.getRecords().forEach(r -> { + AssetVo assetVo = assetMapper.selectVoById(r.getAssetId()); + r.setAssetName(assetVo==null?"资产不存在" : assetVo.getName()); + }); return TableDataInfo.build(result); } @@ -67,7 +94,14 @@ public class ApplicationServiceImpl implements IApplicationService { @Override public List queryList(ApplicationBo bo) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); - return baseMapper.selectVoList(lqw); + List applicationVos = baseMapper.selectVoList(lqw); + applicationVos.forEach(r -> r.setUserName(remoteUserService.selectUserNameById(r.getUserId()))); + applicationVos.forEach(r -> r.setAcceptanceUserName(remoteUserService.selectUserNameById(r.getAcceptanceUserId()))); + applicationVos.forEach(r -> { + AssetVo assetVo = assetMapper.selectVoById(r.getAssetId()); + r.setAssetName(assetVo==null?"资产不存在" : assetVo.getName()); + }); + return applicationVos; } private LambdaQueryWrapper buildQueryWrapper(ApplicationBo bo) { @@ -106,12 +140,25 @@ public class ApplicationServiceImpl implements IApplicationService { * * @param bo 资产领用 * @return 是否修改成功 + * + * */ @Override public Boolean updateByBo(ApplicationBo bo) { Application update = MapstructUtils.convert(bo, Application.class); validEntityBeforeSave(update); - return baseMapper.updateById(update) > 0; + boolean b = baseMapper.updateById(update) > 0; + if (b&&bo.getState()==1){ + Asset asset = assetMapper.selectById(bo.getAssetId()); + if (asset.getStock()>=update.getNumber()) { + UpdateWrapper assetUpdateWrapper = new UpdateWrapper<>(); + assetUpdateWrapper.eq("id",bo.getAssetId()) + .set("stock",assetMapper.selectVoById(bo.getAssetId()).getStock()-update.getNumber()); + assetMapper.update(assetUpdateWrapper); + } + + } + return b; } /** diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AssetServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AssetServiceImpl.java index 251b8a74..d4318066 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AssetServiceImpl.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AssetServiceImpl.java @@ -9,6 +9,12 @@ 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.dromara.property.domain.AssetType; +import org.dromara.property.domain.Depot; +import org.dromara.property.domain.Suppliers; +import org.dromara.property.mapper.AssetTypeMapper; +import org.dromara.property.mapper.DepotMapper; +import org.dromara.property.mapper.SuppliersMapper; import org.springframework.stereotype.Service; import org.dromara.property.domain.bo.AssetBo; import org.dromara.property.domain.vo.AssetVo; @@ -32,6 +38,9 @@ import java.util.Collection; public class AssetServiceImpl implements IAssetService { private final AssetMapper baseMapper; + private final DepotMapper depotMapper; + private final SuppliersMapper suppliersMapper; + private final AssetTypeMapper assetTypeMapper; /** * 查询资产管理 @@ -41,7 +50,14 @@ public class AssetServiceImpl implements IAssetService { */ @Override public AssetVo queryById(Long id){ - return baseMapper.selectVoById(id); + AssetVo assetVo = baseMapper.selectVoById(id); + Depot depot = depotMapper.selectById(assetVo.getDepotId()); + assetVo.setDepotName(depot ==null ? "类型不存在" : depot.getDepotName()); + Suppliers suppliers = suppliersMapper.selectById(assetVo.getSuppliersId()); + assetVo.setSuppliersName(suppliers ==null ? "供应商不存在" : suppliers.getSuppliersName()); + AssetType assetType = assetTypeMapper.selectById(assetVo.getModel()); + assetVo.setModelName(assetType ==null ? "类型不存在" : assetType.getAssetTypeName()); + return assetVo; } /** @@ -55,6 +71,18 @@ public class AssetServiceImpl implements IAssetService { public TableDataInfo queryPageList(AssetBo bo, PageQuery pageQuery) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + result.getRecords().forEach(r -> { + AssetType assetType = assetTypeMapper.selectById(r.getModel()); + r.setModelName(assetType==null ? "资产类型不存在" : assetType.getAssetTypeName()); + }); + result.getRecords().forEach(r -> { + Suppliers suppliers = suppliersMapper.selectById(r.getSuppliersId()); + r.setSuppliersName(suppliers==null? "供应商不存在" : suppliers.getSuppliersName()); + }); + result.getRecords().forEach(r -> { + Depot depot = depotMapper.selectById(r.getDepotId()); + r.setDepotName(depot==null? "仓库不存在" : depot.getDepotName()); + }); return TableDataInfo.build(result); } @@ -67,7 +95,20 @@ public class AssetServiceImpl implements IAssetService { @Override public List queryList(AssetBo bo) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); - return baseMapper.selectVoList(lqw); + List assetVos = baseMapper.selectVoList(lqw); + assetVos.forEach(r -> { + AssetType assetType = assetTypeMapper.selectById(r.getModel()); + r.setModelName(assetType==null? "类型不存在" : assetType.getAssetTypeName()); + }); + assetVos.forEach(r -> { + Suppliers suppliers = suppliersMapper.selectById(r.getModel()); + r.setSuppliersName(suppliers==null? "供应商不存在" : suppliers.getSuppliersName()); + }); + assetVos.forEach(r -> { + Depot depot = depotMapper.selectById(r.getModel()); + r.setDepotName(depot==null? "仓库不存在" : depot.getDepotName()); + }); + return assetVos; } private LambdaQueryWrapper buildQueryWrapper(AssetBo bo) { diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AssetTypeServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AssetTypeServiceImpl.java new file mode 100644 index 00000000..13ef526d --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AssetTypeServiceImpl.java @@ -0,0 +1,133 @@ +package org.dromara.property.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.property.domain.bo.AssetTypeBo; +import org.dromara.property.domain.vo.AssetTypeVo; +import org.dromara.property.domain.AssetType; +import org.dromara.property.mapper.AssetTypeMapper; +import org.dromara.property.service.IAssetTypeService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 资产类型Service业务层处理 + * + * @author mocheng + * @date 2025-06-23 + */ +@Slf4j +@RequiredArgsConstructor +@Service +public class AssetTypeServiceImpl implements IAssetTypeService { + + private final AssetTypeMapper baseMapper; + + /** + * 查询资产类型 + * + * @param id 主键 + * @return 资产类型 + */ + @Override + public AssetTypeVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 分页查询资产类型列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 资产类型分页列表 + */ + @Override + public TableDataInfo queryPageList(AssetTypeBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的资产类型列表 + * + * @param bo 查询条件 + * @return 资产类型列表 + */ + @Override + public List queryList(AssetTypeBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(AssetTypeBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByAsc(AssetType::getId); + lqw.like(StringUtils.isNotBlank(bo.getAssetTypeName()), AssetType::getAssetTypeName, bo.getAssetTypeName()); + lqw.eq(bo.getSort() != null, AssetType::getSort, bo.getSort()); + return lqw; + } + + /** + * 新增资产类型 + * + * @param bo 资产类型 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(AssetTypeBo bo) { + AssetType add = MapstructUtils.convert(bo, AssetType.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改资产类型 + * + * @param bo 资产类型 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(AssetTypeBo bo) { + AssetType update = MapstructUtils.convert(bo, AssetType.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(AssetType entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除资产类型信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/CleanOrderServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/CleanOrderServiceImpl.java index 039d625a..2b3999b6 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/CleanOrderServiceImpl.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/CleanOrderServiceImpl.java @@ -1,5 +1,8 @@ package org.dromara.property.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.mapper.Mapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.TableDataInfo; @@ -9,16 +12,20 @@ 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.dromara.property.domain.CleanserverOrder; +import org.dromara.property.mapper.CleanserverOrderMapper; import org.springframework.stereotype.Service; import org.dromara.property.domain.bo.CleanOrderBo; import org.dromara.property.domain.vo.CleanOrderVo; import org.dromara.property.domain.CleanOrder; import org.dromara.property.mapper.CleanOrderMapper; import org.dromara.property.service.ICleanOrderService; +import org.stringtemplate.v4.ST; -import java.util.List; -import java.util.Map; -import java.util.Collection; +import java.util.*; +import java.util.stream.Collectors; + +import static kotlin.reflect.jvm.internal.impl.builtins.StandardNames.FqNames.list; /** * 保洁订单Service业务层处理 @@ -32,6 +39,7 @@ import java.util.Collection; public class CleanOrderServiceImpl implements ICleanOrderService { private final CleanOrderMapper baseMapper; + private final CleanserverOrderMapper cleanserverOrderMapper; /** * 查询保洁订单 @@ -69,14 +77,14 @@ public class CleanOrderServiceImpl implements ICleanOrderService { LambdaQueryWrapper lqw = buildQueryWrapper(bo); return baseMapper.selectVoList(lqw); } - private LambdaQueryWrapper buildQueryWrapper(CleanOrderBo bo) { Map params = bo.getParams(); LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); lqw.orderByAsc(CleanOrder::getId); lqw.eq(StringUtils.isNotBlank(bo.getLocation()), CleanOrder::getLocation, bo.getLocation()); lqw.eq(StringUtils.isNotBlank(bo.getArea()), CleanOrder::getArea, bo.getArea()); - lqw.eq(bo.getCleanId() != null, CleanOrder::getCleanId, bo.getCleanId()); + +// lqw.eq(bo.getCleanIds() != null, CleanOrder::getCleanId, bo.getCleanIds()); lqw.like(StringUtils.isNotBlank(bo.getName()), CleanOrder::getName, bo.getName()); lqw.eq(bo.getPrices() != null, CleanOrder::getPrices, bo.getPrices()); lqw.eq(bo.getSumPeices() != null, CleanOrder::getSumPeices, bo.getSumPeices()); @@ -84,9 +92,11 @@ public class CleanOrderServiceImpl implements ICleanOrderService { lqw.eq(bo.getStarTime() != null, CleanOrder::getStarTime, bo.getStarTime()); lqw.eq(bo.getEndTime() != null, CleanOrder::getEndTime, bo.getEndTime()); lqw.eq(bo.getUnitId() != null, CleanOrder::getUnitId, bo.getUnitId()); + lqw.eq(StringUtils.isNotBlank(bo.getUnit()), CleanOrder::getState, bo.getState()); lqw.eq(StringUtils.isNotBlank(bo.getUnit()), CleanOrder::getUnit, bo.getUnit()); lqw.eq(StringUtils.isNotBlank(bo.getPersion()), CleanOrder::getPersion, bo.getPersion()); lqw.eq(StringUtils.isNotBlank(bo.getPhone()), CleanOrder::getPhone, bo.getPhone()); + return lqw; } @@ -100,9 +110,20 @@ public class CleanOrderServiceImpl implements ICleanOrderService { public Boolean insertByBo(CleanOrderBo bo) { CleanOrder add = MapstructUtils.convert(bo, CleanOrder.class); validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; if (flag) { bo.setId(add.getId()); + ArrayList cleanserverOrders = new ArrayList<>(); + for (Long cleanId : bo.getCleanIds()) { + CleanserverOrder cleanserverOrder = new CleanserverOrder(); + cleanserverOrder.setCleanServerId(cleanId); + cleanserverOrder.setOrderId(add.getId()); + CleanserverOrder convert = MapstructUtils.convert(cleanserverOrder, CleanserverOrder.class); + cleanserverOrders.add(convert); + } + cleanserverOrderMapper.insert(cleanserverOrders); + } return flag; } diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/CleanserverOrderServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/CleanserverOrderServiceImpl.java new file mode 100644 index 00000000..a0ebe9c0 --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/CleanserverOrderServiceImpl.java @@ -0,0 +1,134 @@ +package org.dromara.property.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.property.domain.bo.CleanserverOrderBo; +import org.dromara.property.domain.vo.CleanserverOrderVo; +import org.dromara.property.domain.CleanserverOrder; +import org.dromara.property.mapper.CleanserverOrderMapper; +import org.dromara.property.service.ICleanserverOrderService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 保洁服务订单Service业务层处理 + * + * @author mocheng + * @date 2025-06-23 + */ +@Slf4j +@RequiredArgsConstructor +@Service +public class CleanserverOrderServiceImpl implements ICleanserverOrderService { + + private final CleanserverOrderMapper baseMapper; + + /** + * 查询保洁服务订单 + * + * @param id 主键 + * @return 保洁服务订单 + */ + @Override + public CleanserverOrderVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 分页查询保洁服务订单列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 保洁服务订单分页列表 + */ + @Override + public TableDataInfo queryPageList(CleanserverOrderBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的保洁服务订单列表 + * + * @param bo 查询条件 + * @return 保洁服务订单列表 + */ + @Override + public List queryList(CleanserverOrderBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + List cleanserverOrderVos = baseMapper.selectVoList(lqw); + return cleanserverOrderVos; + } + + private LambdaQueryWrapper buildQueryWrapper(CleanserverOrderBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByAsc(CleanserverOrder::getId); + lqw.eq(bo.getOrderId() != null, CleanserverOrder::getOrderId, bo.getOrderId()); + lqw.eq(bo.getCleanServerId() != null, CleanserverOrder::getCleanServerId, bo.getCleanServerId()); + return lqw; + } + + /** + * 新增保洁服务订单 + * + * @param bo 保洁服务订单 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(CleanserverOrderBo bo) { + CleanserverOrder add = MapstructUtils.convert(bo, CleanserverOrder.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改保洁服务订单 + * + * @param bo 保洁服务订单 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(CleanserverOrderBo bo) { + CleanserverOrder update = MapstructUtils.convert(bo, CleanserverOrder.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(CleanserverOrder entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除保洁服务订单信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/TbAccessControlServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/TbAccessControlServiceImpl.java deleted file mode 100644 index acb16672..00000000 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/TbAccessControlServiceImpl.java +++ /dev/null @@ -1,145 +0,0 @@ -package org.dromara.property.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.property.domain.bo.TbAccessControlBo; -import org.dromara.property.domain.vo.TbAccessControlVo; -import org.dromara.property.domain.TbAccessControl; -import org.dromara.property.mapper.TbAccessControlMapper; -import org.dromara.property.service.ITbAccessControlService; - -import java.util.List; -import java.util.Map; -import java.util.Collection; - -/** - * 门禁管理Service业务层处理 - * - * @author mocheng - * @date 2025-06-18 - */ -@Slf4j -@RequiredArgsConstructor -@Service -public class TbAccessControlServiceImpl implements ITbAccessControlService { - - private final TbAccessControlMapper baseMapper; - - /** - * 查询门禁管理 - * - * @param id 主键 - * @return 门禁管理 - */ - @Override - public TbAccessControlVo queryById(Long id){ - return baseMapper.selectVoById(id); - } - - /** - * 分页查询门禁管理列表 - * - * @param bo 查询条件 - * @param pageQuery 分页参数 - * @return 门禁管理分页列表 - */ - @Override - public TableDataInfo queryPageList(TbAccessControlBo bo, PageQuery pageQuery) { - LambdaQueryWrapper lqw = buildQueryWrapper(bo); - Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); - return TableDataInfo.build(result); - } - - /** - * 查询符合条件的门禁管理列表 - * - * @param bo 查询条件 - * @return 门禁管理列表 - */ - @Override - public List queryList(TbAccessControlBo bo) { - LambdaQueryWrapper lqw = buildQueryWrapper(bo); - return baseMapper.selectVoList(lqw); - } - - private LambdaQueryWrapper buildQueryWrapper(TbAccessControlBo bo) { - Map params = bo.getParams(); - LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); - lqw.orderByAsc(TbAccessControl::getId); - lqw.eq(StringUtils.isNotBlank(bo.getAccessCode()), TbAccessControl::getAccessCode, bo.getAccessCode()); - lqw.like(StringUtils.isNotBlank(bo.getAccessName()), TbAccessControl::getAccessName, bo.getAccessName()); - lqw.eq(StringUtils.isNotBlank(bo.getCommunityCode()), TbAccessControl::getCommunityCode, bo.getCommunityCode()); - lqw.eq(StringUtils.isNotBlank(bo.getBuildingCode()), TbAccessControl::getBuildingCode, bo.getBuildingCode()); - lqw.eq(StringUtils.isNotBlank(bo.getAccessIp()), TbAccessControl::getAccessIp, bo.getAccessIp()); - lqw.eq(bo.getAccessPort() != null, TbAccessControl::getAccessPort, bo.getAccessPort()); - lqw.eq(bo.getAccssType() != null, TbAccessControl::getAccssType, bo.getAccssType()); - lqw.eq(StringUtils.isNotBlank(bo.getFactoryCode()), TbAccessControl::getFactoryCode, bo.getFactoryCode()); - lqw.eq(bo.getControlType() != null, TbAccessControl::getControlType, bo.getControlType()); - lqw.eq(StringUtils.isNotBlank(bo.getControlCode()), TbAccessControl::getControlCode, bo.getControlCode()); - lqw.eq(StringUtils.isNotBlank(bo.getOutCode()), TbAccessControl::getOutCode, bo.getOutCode()); - lqw.eq(StringUtils.isNotBlank(bo.getOrgCode()), TbAccessControl::getOrgCode, bo.getOrgCode()); - lqw.eq(bo.getDataState() != null, TbAccessControl::getDataState, bo.getDataState()); - lqw.eq(StringUtils.isNotBlank(bo.getSearchValue()), TbAccessControl::getSearchValue, bo.getSearchValue()); - return lqw; - } - - /** - * 新增门禁管理 - * - * @param bo 门禁管理 - * @return 是否新增成功 - */ - @Override - public Boolean insertByBo(TbAccessControlBo bo) { - TbAccessControl add = MapstructUtils.convert(bo, TbAccessControl.class); - validEntityBeforeSave(add); - boolean flag = baseMapper.insert(add) > 0; - if (flag) { - bo.setId(add.getId()); - } - return flag; - } - - /** - * 修改门禁管理 - * - * @param bo 门禁管理 - * @return 是否修改成功 - */ - @Override - public Boolean updateByBo(TbAccessControlBo bo) { - TbAccessControl update = MapstructUtils.convert(bo, TbAccessControl.class); - validEntityBeforeSave(update); - return baseMapper.updateById(update) > 0; - } - - /** - * 保存前的数据校验 - */ - private void validEntityBeforeSave(TbAccessControl entity){ - //TODO 做一些数据校验,如唯一约束 - } - - /** - * 校验并批量删除门禁管理信息 - * - * @param ids 待删除的主键集合 - * @param isValid 是否进行有效性校验 - * @return 是否删除成功 - */ - @Override - public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { - if(isValid){ - //TODO 做一些业务上的校验,判断是否需要校验 - } - return baseMapper.deleteByIds(ids) > 0; - } -} diff --git a/ruoyi-modules/Property/src/main/resources/mapper/Property/AssetTypeMapper.xml b/ruoyi-modules/Property/src/main/resources/mapper/Property/AssetTypeMapper.xml new file mode 100644 index 00000000..ebe6a7c3 --- /dev/null +++ b/ruoyi-modules/Property/src/main/resources/mapper/Property/AssetTypeMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/ruoyi-modules/Property/src/main/resources/mapper/Property/CleanserverOrderMapper.xml b/ruoyi-modules/Property/src/main/resources/mapper/Property/CleanserverOrderMapper.xml new file mode 100644 index 00000000..75ad37fa --- /dev/null +++ b/ruoyi-modules/Property/src/main/resources/mapper/Property/CleanserverOrderMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/ruoyi-modules/Property/src/main/resources/mapper/Property/TbAccessControlMapper.xml b/ruoyi-modules/Property/src/main/resources/mapper/Property/TbAccessControlMapper.xml deleted file mode 100644 index ac7f1040..00000000 --- a/ruoyi-modules/Property/src/main/resources/mapper/Property/TbAccessControlMapper.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/ruoyi-modules/Iot/Dockerfile b/ruoyi-modules/Sis/Dockerfile similarity index 79% rename from ruoyi-modules/Iot/Dockerfile rename to ruoyi-modules/Sis/Dockerfile index f449eff0..61d332c2 100644 --- a/ruoyi-modules/Iot/Dockerfile +++ b/ruoyi-modules/Sis/Dockerfile @@ -3,11 +3,11 @@ FROM bellsoft/liberica-openjdk-debian:17.0.11-cds #FROM bellsoft/liberica-openjdk-debian:21.0.5-cds #FROM findepi/graalvm:java17-native -LABEL maintainer="Lion Li" +LABEL maintainer="Lxj" -RUN mkdir -p /smartparks/iot/logs \ - /smartparks/iot/temp \ - /smartparks/iot/agent +RUN mkdir -p /smartparks/Sis/logs \ + /smartparks/Sis/temp \ + /smartparks/Sis/agent WORKDIR /ruoyi/system @@ -15,7 +15,7 @@ ENV SERVER_PORT=9201 LANG=C.UTF-8 LC_ALL=C.UTF-8 JAVA_OPTS="" EXPOSE ${SERVER_PORT} -ADD ./target/iot.jar ./iot.jar +ADD ./target/Sis.jar ./app.jar SHELL ["/bin/bash", "-c"] @@ -23,5 +23,5 @@ ENTRYPOINT java -Djava.security.egd=file:/dev/./urandom -Dserver.port=${SERVER_P #-Dskywalking.agent.service_name=ruoyi-system \ #-javaagent:/ruoyi/skywalking/agent/skywalking-agent.jar \ -XX:+HeapDumpOnOutOfMemoryError -XX:+UseZGC ${JAVA_OPTS} \ - -jar iot.jar + -jar app.jar diff --git a/ruoyi-modules/Sis/doc/宇视AIBOX对外标准接口20240626.pdf b/ruoyi-modules/Sis/doc/宇视AIBOX对外标准接口20240626.pdf new file mode 100644 index 00000000..4fe4b142 Binary files /dev/null and b/ruoyi-modules/Sis/doc/宇视AIBOX对外标准接口20240626.pdf differ diff --git a/ruoyi-modules/Iot/pom.xml b/ruoyi-modules/Sis/pom.xml similarity index 97% rename from ruoyi-modules/Iot/pom.xml rename to ruoyi-modules/Sis/pom.xml index 952197a8..f8f3f877 100644 --- a/ruoyi-modules/Iot/pom.xml +++ b/ruoyi-modules/Sis/pom.xml @@ -9,11 +9,8 @@ 4.0.0 - Iot - - - 物业管理模块 - + Sis + Smart Intelligent Security 智能安防管理系统 diff --git a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/IotyApplication.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/SisApplication.java similarity index 68% rename from ruoyi-modules/Iot/src/main/java/org/dromara/iot/IotyApplication.java rename to ruoyi-modules/Sis/src/main/java/org/dromara/sis/SisApplication.java index 0038bf6a..abf1ada4 100644 --- a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/IotyApplication.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/SisApplication.java @@ -1,4 +1,4 @@ -package org.dromara.iot; +package org.dromara.sis; import org.apache.dubbo.config.spring.context.annotation.EnableDubbo; import org.springframework.boot.SpringApplication; @@ -12,11 +12,11 @@ import org.springframework.boot.context.metrics.buffering.BufferingApplicationSt */ @EnableDubbo @SpringBootApplication -public class IotyApplication { +public class SisApplication { public static void main(String[] args) { - SpringApplication application = new SpringApplication(IotyApplication.class); + SpringApplication application = new SpringApplication(SisApplication.class); application.setApplicationStartup(new BufferingApplicationStartup(2048)); application.run(args); - System.out.println("(♥◠‿◠)ノ゙ 设备模块启动成功 ლ(´ڡ`ლ)゙ "); + System.out.println("(♥◠‿◠)ノ゙ 安防启动成功 ლ(´ڡ`ლ)゙ "); } } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/config/RestTemplateConfig.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/config/RestTemplateConfig.java new file mode 100644 index 00000000..def0d121 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/config/RestTemplateConfig.java @@ -0,0 +1,15 @@ +package org.dromara.sis.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.client.RestTemplate; + +@Configuration +public class RestTemplateConfig { + + @Bean + public RestTemplate restTemplate() { + // 使用JDK自带的HttpURLConnection作为客户端 + return new RestTemplate(); + } +} diff --git a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/controller/TbAccessControlController.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/SisAccessControlController.java similarity index 76% rename from ruoyi-modules/Iot/src/main/java/org/dromara/iot/controller/TbAccessControlController.java rename to ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/SisAccessControlController.java index 5eaaf6f7..50f88fbd 100644 --- a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/controller/TbAccessControlController.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/SisAccessControlController.java @@ -1,4 +1,4 @@ -package org.dromara.iot.controller; +package org.dromara.sis.controller; import cn.dev33.satoken.annotation.SaCheckPermission; import jakarta.servlet.http.HttpServletResponse; @@ -15,9 +15,9 @@ 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.iot.domain.bo.TbAccessControlBo; -import org.dromara.iot.domain.vo.TbAccessControlVo; -import org.dromara.iot.service.ITbAccessControlService; +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.*; @@ -34,16 +34,16 @@ import java.util.List; @RequiredArgsConstructor @RestController @RequestMapping("/accessControl") -public class TbAccessControlController extends BaseController { +public class SisAccessControlController extends BaseController { - private final ITbAccessControlService tbAccessControlService; + private final ISisAccessControlService tbAccessControlService; /** * 查询门禁管理列表 */ @SaCheckPermission("property:accessControl:list") @GetMapping("/list") - public TableDataInfo list(TbAccessControlBo bo, PageQuery pageQuery) { + public TableDataInfo list(SisAccessControlBo bo, PageQuery pageQuery) { return tbAccessControlService.queryPageList(bo, pageQuery); } @@ -53,9 +53,9 @@ public class TbAccessControlController extends BaseController { @SaCheckPermission("property:accessControl:export") @Log(title = "门禁管理", businessType = BusinessType.EXPORT) @PostMapping("/export") - public void export(TbAccessControlBo bo, HttpServletResponse response) { - List list = tbAccessControlService.queryList(bo); - ExcelUtil.exportExcel(list, "门禁管理", TbAccessControlVo.class, response); + public void export(SisAccessControlBo bo, HttpServletResponse response) { + List list = tbAccessControlService.queryList(bo); + ExcelUtil.exportExcel(list, "门禁管理", SisAccessControlVo.class, response); } /** @@ -65,7 +65,7 @@ public class TbAccessControlController extends BaseController { */ @SaCheckPermission("property:accessControl:query") @GetMapping("/{id}") - public R getInfo(@NotNull(message = "主键不能为空") + public R getInfo(@NotNull(message = "主键不能为空") @PathVariable("id") Long id) { return R.ok(tbAccessControlService.queryById(id)); } @@ -77,7 +77,7 @@ public class TbAccessControlController extends BaseController { @Log(title = "门禁管理", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping() - public R add(@Validated(AddGroup.class) @RequestBody TbAccessControlBo bo) { + public R add(@Validated(AddGroup.class) @RequestBody SisAccessControlBo bo) { return toAjax(tbAccessControlService.insertByBo(bo)); } @@ -88,7 +88,7 @@ public class TbAccessControlController extends BaseController { @Log(title = "门禁管理", businessType = BusinessType.UPDATE) @RepeatSubmit() @PutMapping() - public R edit(@Validated(EditGroup.class) @RequestBody TbAccessControlBo bo) { + public R edit(@Validated(EditGroup.class) @RequestBody SisAccessControlBo bo) { return toAjax(tbAccessControlService.updateByBo(bo)); } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/SisAccessControlDeviceController.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/SisAccessControlDeviceController.java new file mode 100644 index 00000000..844638ad --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/SisAccessControlDeviceController.java @@ -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.SisAccessControlDeviceVo; +import org.dromara.sis.domain.bo.SisAccessControlDeviceBo; +import org.dromara.sis.service.ISisAccessControlDeviceService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * 门禁设备 + * 前端访问路由地址为:/sis/accessControlDevice + * + * @author mocheng + * @date 2025-06-25 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/accessControlDevice") +public class SisAccessControlDeviceController extends BaseController { + + private final ISisAccessControlDeviceService sisAccessControlDeviceService; + + /** + * 查询门禁设备列表 + */ + @SaCheckPermission("sis:accessControlDevice:list") + @GetMapping("/list") + public TableDataInfo list(SisAccessControlDeviceBo bo, PageQuery pageQuery) { + return sisAccessControlDeviceService.queryPageList(bo, pageQuery); + } + + /** + * 导出门禁设备列表 + */ + @SaCheckPermission("sis:accessControlDevice:export") + @Log(title = "门禁设备", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(SisAccessControlDeviceBo bo, HttpServletResponse response) { + List list = sisAccessControlDeviceService.queryList(bo); + ExcelUtil.exportExcel(list, "门禁设备", SisAccessControlDeviceVo.class, response); + } + + /** + * 获取门禁设备详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("sis:accessControlDevice:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable("id") Long id) { + return R.ok(sisAccessControlDeviceService.queryById(id)); + } + + /** + * 新增门禁设备 + */ + @SaCheckPermission("sis:accessControlDevice:add") + @Log(title = "门禁设备", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody SisAccessControlDeviceBo bo) { + return toAjax(sisAccessControlDeviceService.insertByBo(bo)); + } + + /** + * 修改门禁设备 + */ + @SaCheckPermission("sis:accessControlDevice:edit") + @Log(title = "门禁设备", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody SisAccessControlDeviceBo bo) { + return toAjax(sisAccessControlDeviceService.updateByBo(bo)); + } + + /** + * 删除门禁设备 + * + * @param ids 主键串 + */ + @SaCheckPermission("sis:accessControlDevice:remove") + @Log(title = "门禁设备", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable("ids") Long[] ids) { + return toAjax(sisAccessControlDeviceService.deleteWithValidByIds(List.of(ids), true)); + } +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/SisDevicePointController.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/SisDevicePointController.java new file mode 100644 index 00000000..ee42aace --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/SisDevicePointController.java @@ -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.SisDevicePointVo; +import org.dromara.sis.domain.bo.SisDevicePointBo; +import org.dromara.sis.service.ISisDevicePointService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * 宇视设备点位(通道) + * 前端访问路由地址为:/sis/devicePoint + * + * @author mocheng + * @date 2025-06-25 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/devicePoint") +public class SisDevicePointController extends BaseController { + + private final ISisDevicePointService sisDevicePointService; + + /** + * 查询宇视设备点位(通道)列表 + */ + @SaCheckPermission("sis:devicePoint:list") + @GetMapping("/list") + public TableDataInfo list(SisDevicePointBo bo, PageQuery pageQuery) { + return sisDevicePointService.queryPageList(bo, pageQuery); + } + + /** + * 导出宇视设备点位(通道)列表 + */ + @SaCheckPermission("sis:devicePoint:export") + @Log(title = "宇视设备点位(通道)", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(SisDevicePointBo bo, HttpServletResponse response) { + List list = sisDevicePointService.queryList(bo); + ExcelUtil.exportExcel(list, "宇视设备点位(通道)", SisDevicePointVo.class, response); + } + + /** + * 获取宇视设备点位(通道)详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("sis:devicePoint:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable("id") Long id) { + return R.ok(sisDevicePointService.queryById(id)); + } + + /** + * 新增宇视设备点位(通道) + */ + @SaCheckPermission("sis:devicePoint:add") + @Log(title = "宇视设备点位(通道)", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody SisDevicePointBo bo) { + return toAjax(sisDevicePointService.insertByBo(bo)); + } + + /** + * 修改宇视设备点位(通道) + */ + @SaCheckPermission("sis:devicePoint:edit") + @Log(title = "宇视设备点位(通道)", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody SisDevicePointBo bo) { + return toAjax(sisDevicePointService.updateByBo(bo)); + } + + /** + * 删除宇视设备点位(通道) + * + * @param ids 主键串 + */ + @SaCheckPermission("sis:devicePoint:remove") + @Log(title = "宇视设备点位(通道)", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable("ids") Long[] ids) { + return toAjax(sisDevicePointService.deleteWithValidByIds(List.of(ids), true)); + } +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/SisPersonLibController.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/SisPersonLibController.java new file mode 100644 index 00000000..1dcc6d37 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/SisPersonLibController.java @@ -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.SisPersonLibVo; +import org.dromara.sis.domain.bo.SisPersonLibBo; +import org.dromara.sis.service.ISisPersonLibService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * 人像库 + * 前端访问路由地址为:/sis/personLib + * + * @author mocheng + * @date 2025-06-24 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/personLib") +public class SisPersonLibController extends BaseController { + + private final ISisPersonLibService tbPersonLibService; + + /** + * 查询人像库列表 + */ + @SaCheckPermission("sis:personLib:list") + @GetMapping("/list") + public TableDataInfo list(SisPersonLibBo bo, PageQuery pageQuery) { + return tbPersonLibService.queryPageList(bo, pageQuery); + } + + /** + * 导出人像库列表 + */ + @SaCheckPermission("sis:personLib:export") + @Log(title = "人像库", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(SisPersonLibBo bo, HttpServletResponse response) { + List list = tbPersonLibService.queryList(bo); + ExcelUtil.exportExcel(list, "人像库", SisPersonLibVo.class, response); + } + + /** + * 获取人像库详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("sis:personLib:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable("id") Long id) { + return R.ok(tbPersonLibService.queryById(id)); + } + + /** + * 新增人像库 + */ + @SaCheckPermission("sis:personLib:add") + @Log(title = "人像库", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody SisPersonLibBo bo) { + return toAjax(tbPersonLibService.insertByBo(bo)); + } + + /** + * 修改人像库 + */ + @SaCheckPermission("sis:personLib:edit") + @Log(title = "人像库", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody SisPersonLibBo bo) { + return toAjax(tbPersonLibService.updateByBo(bo)); + } + + /** + * 删除人像库 + * + * @param ids 主键串 + */ + @SaCheckPermission("sis:personLib:remove") + @Log(title = "人像库", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable("ids") Long[] ids) { + return toAjax(tbPersonLibService.deleteWithValidByIds(List.of(ids), true)); + } +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/SisPersonLibImgController.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/SisPersonLibImgController.java new file mode 100644 index 00000000..f4c6bbb8 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/SisPersonLibImgController.java @@ -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.SisPersonLibImgVo; +import org.dromara.sis.domain.bo.SisPersonLibImgBo; +import org.dromara.sis.service.ISisPersonLibImgService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * 人像信息 + * 前端访问路由地址为:/sis/personLibImg + * + * @author mocheng + * @date 2025-06-24 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/personLibImg") +public class SisPersonLibImgController extends BaseController { + + private final ISisPersonLibImgService tbPersonLibImgService; + + /** + * 查询人像信息列表 + */ + @SaCheckPermission("sis:personLibImg:list") + @GetMapping("/list") + public TableDataInfo list(SisPersonLibImgBo bo, PageQuery pageQuery) { + return tbPersonLibImgService.queryPageList(bo, pageQuery); + } + + /** + * 导出人像信息列表 + */ + @SaCheckPermission("sis:personLibImg:export") + @Log(title = "人像信息", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(SisPersonLibImgBo bo, HttpServletResponse response) { + List list = tbPersonLibImgService.queryList(bo); + ExcelUtil.exportExcel(list, "人像信息", SisPersonLibImgVo.class, response); + } + + /** + * 获取人像信息详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("sis:personLibImg:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable("id") Long id) { + return R.ok(tbPersonLibImgService.queryById(id)); + } + + /** + * 新增人像信息 + */ + @SaCheckPermission("sis:personLibImg:add") + @Log(title = "人像信息", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody SisPersonLibImgBo bo) { + return toAjax(tbPersonLibImgService.insertByBo(bo)); + } + + /** + * 修改人像信息 + */ + @SaCheckPermission("sis:personLibImg:edit") + @Log(title = "人像信息", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody SisPersonLibImgBo bo) { + return toAjax(tbPersonLibImgService.updateByBo(bo)); + } + + /** + * 删除人像信息 + * + * @param ids 主键串 + */ + @SaCheckPermission("sis:personLibImg:remove") + @Log(title = "人像信息", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable("ids") Long[] ids) { + return toAjax(tbPersonLibImgService.deleteWithValidByIds(List.of(ids), true)); + } +} diff --git a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/controller/TdFactoryController.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/TdFactoryController.java similarity index 94% rename from ruoyi-modules/Iot/src/main/java/org/dromara/iot/controller/TdFactoryController.java rename to ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/TdFactoryController.java index 3afbf831..48bd0079 100644 --- a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/controller/TdFactoryController.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/TdFactoryController.java @@ -1,4 +1,4 @@ -package org.dromara.iot.controller; +package org.dromara.sis.controller; import java.util.List; @@ -17,9 +17,9 @@ 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.iot.domain.vo.TdFactoryVo; -import org.dromara.iot.domain.bo.TdFactoryBo; -import org.dromara.iot.service.ITdFactoryService; +import org.dromara.sis.domain.vo.TdFactoryVo; +import org.dromara.sis.domain.bo.TdFactoryBo; +import org.dromara.sis.service.ITdFactoryService; import org.dromara.common.mybatis.core.page.TableDataInfo; /** diff --git a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/controller/TdMeterConfigController.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/TdMeterConfigController.java similarity index 94% rename from ruoyi-modules/Iot/src/main/java/org/dromara/iot/controller/TdMeterConfigController.java rename to ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/TdMeterConfigController.java index d4299ea8..acab525d 100644 --- a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/controller/TdMeterConfigController.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/TdMeterConfigController.java @@ -1,4 +1,4 @@ -package org.dromara.iot.controller; +package org.dromara.sis.controller; import java.util.List; @@ -17,9 +17,9 @@ 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.iot.domain.vo.TdMeterConfigVo; -import org.dromara.iot.domain.bo.TdMeterConfigBo; -import org.dromara.iot.service.ITdMeterConfigService; +import org.dromara.sis.domain.vo.TdMeterConfigVo; +import org.dromara.sis.domain.bo.TdMeterConfigBo; +import org.dromara.sis.service.ITdMeterConfigService; import org.dromara.common.mybatis.core.page.TableDataInfo; /** diff --git a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/controller/TdMeterController.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/TdMeterController.java similarity index 95% rename from ruoyi-modules/Iot/src/main/java/org/dromara/iot/controller/TdMeterController.java rename to ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/TdMeterController.java index 3b5cec27..51cdf575 100644 --- a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/controller/TdMeterController.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/TdMeterController.java @@ -1,4 +1,4 @@ -package org.dromara.iot.controller; +package org.dromara.sis.controller; import cn.dev33.satoken.annotation.SaCheckPermission; import jakarta.servlet.http.HttpServletResponse; @@ -15,9 +15,9 @@ 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.iot.domain.bo.TdMeterBo; -import org.dromara.iot.domain.vo.TdMeterVo; -import org.dromara.iot.service.ITdMeterService; +import org.dromara.sis.domain.bo.TdMeterBo; +import org.dromara.sis.domain.vo.TdMeterVo; +import org.dromara.sis.service.ITdMeterService; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; diff --git a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/controller/TdMeterRoomController.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/TdMeterRoomController.java similarity index 90% rename from ruoyi-modules/Iot/src/main/java/org/dromara/iot/controller/TdMeterRoomController.java rename to ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/TdMeterRoomController.java index d26bfecb..7d36e472 100644 --- a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/controller/TdMeterRoomController.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/TdMeterRoomController.java @@ -1,26 +1,27 @@ -package org.dromara.iot.controller; +package org.dromara.sis.controller; -import java.util.List; - -import lombok.RequiredArgsConstructor; -import jakarta.servlet.http.HttpServletResponse; -import jakarta.validation.constraints.*; import cn.dev33.satoken.annotation.SaCheckPermission; -import org.springframework.web.bind.annotation.*; -import org.springframework.validation.annotation.Validated; -import org.dromara.common.idempotent.annotation.RepeatSubmit; -import org.dromara.common.log.annotation.Log; -import org.dromara.common.web.core.BaseController; -import org.dromara.common.mybatis.core.page.PageQuery; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.RequiredArgsConstructor; import org.dromara.common.core.domain.R; import org.dromara.common.core.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.iot.domain.vo.TdMeterRoomVo; -import org.dromara.iot.domain.bo.TdMeterRoomBo; -import org.dromara.iot.service.ITdMeterRoomService; +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.TdMeterRoomBo; +import org.dromara.sis.domain.vo.TdMeterRoomVo; +import org.dromara.sis.service.ITdMeterRoomService; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; /** * 和房间的关联 @@ -65,7 +66,7 @@ public class TdMeterRoomController extends BaseController { @SaCheckPermission("system:meterRoom:query") @GetMapping("/{id}") public R getInfo(@NotNull(message = "主键不能为空") - @PathVariable("id") Long id) { + @PathVariable("id") Long id) { return R.ok(tdMeterRoomService.queryById(id)); } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/VideoAlarmController.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/VideoAlarmController.java new file mode 100644 index 00000000..a38b9ed9 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/VideoAlarmController.java @@ -0,0 +1,33 @@ +package org.dromara.sis.controller; + +import com.alibaba.fastjson2.JSONObject; +import jakarta.annotation.Resource; +import lombok.RequiredArgsConstructor; +import org.dromara.sis.sdk.unview.model.UvModel; +import org.dromara.sis.sdk.unview.service.VideoAlarmService; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; + +/** + * 宇视告警书记上报 + * + * @author lxj + * @since 25-06-24 + */ +@RestController +@RequiredArgsConstructor +public class VideoAlarmController { + + @Resource + private VideoAlarmService videoAlarmService; + + @PostMapping("/custom/router") + public UvModel.UniViewResult alarm(@RequestBody String data) { + UvModel.AlarmReportInfo alarmReportData = JSONObject.parseObject(data, UvModel.AlarmReportInfo.class); + videoAlarmService.handleAlarmData(alarmReportData); + return UvModel.UniViewResult.success(null); + } + + +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/e8/AccessControlController.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/e8/AccessControlController.java new file mode 100644 index 00000000..1b35a4b7 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/e8/AccessControlController.java @@ -0,0 +1,108 @@ +package org.dromara.sis.controller.e8; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.dromara.common.core.domain.R; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.sis.sdk.e8.AccessControlService; +import org.dromara.sis.sdk.e8.domain.accessControl.req.CustomerAuthAddReq; +import org.dromara.sis.sdk.e8.domain.accessControl.req.RemoteOpenDoorReq; +import org.dromara.sis.sdk.e8.domain.accessControl.res.AccessRecordFindRes; +import org.dromara.sis.sdk.e8.domain.QueryDto; +import org.dromara.sis.sdk.e8.domain.accessControl.res.CustomerAuthFindRes; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @author lsm + * @apiNote AccessControlController + * @since 2025/6/24 + */ +@Slf4j +@RestController +@RequiredArgsConstructor +@RequestMapping("/e8AccessControl") +public class AccessControlController { + + private final AccessControlService accessControlService; + + /** + * 远程开门 + * + * @param req 传参 + * @return Boolean + */ + @PostMapping("/remoteOpenDoor") + public R remoteOpenDoor(@RequestBody RemoteOpenDoorReq req) { + log.info("E8远程开门 入参:{}", req); + + Boolean flag = accessControlService.remoteOpenDoor(req); + + if (flag) { + return R.ok(); + } else { + return R.fail("E8远程开门,调用失败!"); + } + } + + /** + * 获取门禁记录列表 + * + * @param dto 查询参数 + * @return IPage + * @apiNote 获取参数示例 {"maxResultCount":10,"pageIndex":1,"queryDto":{"isViewFullData":false}} + */ + @PostMapping("/getPageAccessRecordList") + public R> getPageAccessRecordList(@RequestBody QueryDto dto) { + log.info("E8获取门禁记录列表 入参:{}", dto); + TableDataInfo page = accessControlService.getPageAccessRecordList(dto); + if (page == null) { + return R.fail("E8获取门禁记录列表,调用失败!"); + } else { + return R.ok(page); + } + } + + /** + * 人员授权 + * + * @param req 传参 + * @return Boolean + * @apiNote 参数示例 {"accessAuthModel":0,"authData":[{"floors":[],"gatewayType":1,"id":528705580163141,"type":0}],"authType":0,"elevatorAuthModel":1,"endTime":"2025-07-2511: 23: 39","personIds":[539696740646981],"scheduleId":1,"startTime":"2025-06-2511: 23: 39"} + */ + @PostMapping("/addCustomerAuth") + public R addCustomerAuth(@RequestBody CustomerAuthAddReq req) { + log.info("E8人员授权 入参:{}", req); + + Boolean flag = accessControlService.addCustomerAuth(req); + + if (flag) { + return R.ok(); + } else { + return R.fail("E8人员授权,调用失败!"); + } + } + + /** + * 获取人员权限分页列表 + * + * @param dto 获取参数 + * @return TableDataInfo + * @apiNote 获取参数示例 {"maxResultCount":10,"pageIndex":1,"queryDto":{"isViewFullData":false}} + */ + @PostMapping("getPageCustomerAuth") + public R> getPageCustomerAuth(@RequestBody QueryDto dto) { + log.info("E8获取人员权限分页列表 入参:{}", dto); + + TableDataInfo page = accessControlService.getPageCustomerAuth(dto); + + if (page == null) { + return R.fail("E8获取人员权限分页列表,调用失败!"); + } else { + return R.ok(page); + } + } + +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/e8/DoorDeviceController.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/e8/DoorDeviceController.java new file mode 100644 index 00000000..a6499168 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/e8/DoorDeviceController.java @@ -0,0 +1,115 @@ +package org.dromara.sis.controller.e8; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.dromara.common.core.domain.R; +import org.dromara.common.mybatis.core.page.TableDataInfo; +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.req.DoorDeviceUpdateReq; +import org.dromara.sis.sdk.e8.domain.door.res.DoorDeviceAddRes; +import org.dromara.sis.sdk.e8.domain.door.res.DoorDeviceFindRes; +import org.dromara.sis.sdk.e8.domain.QueryDto; +import org.springframework.util.ObjectUtils; +import org.springframework.web.bind.annotation.*; + +/** + * @author lsm + * @apiNote DoorDeviceController + * @since 2025/6/23 + */ +@Slf4j +@RestController +@RequiredArgsConstructor +@RequestMapping("/e8DoorDevice") +public class DoorDeviceController { + + private final DoorDeviceService doorDeviceService; + + /** + * 查询门禁信息 + * + * @param id 入参 + * @return Result + */ + @PostMapping("/findDoorDevice/{id}") + public R findDoorDevice(@PathVariable Long id) { + log.info("E8接口 查询门禁信息 入参={}", id); + DoorDeviceFindRes doorDeviceInfo = doorDeviceService.findDoorDevice(id); + if (doorDeviceInfo == null) { + return R.fail("E8接口查询门禁信息,调用失败!"); + } else { + return R.ok(doorDeviceInfo); + } + } + + /** + * 新增门禁信息 + * + * @param addReq 入参 + * @return Boolean + */ + @PostMapping("/addDoorDevice") + public R addDoorDevice(@RequestBody DoorDeviceAddReq addReq) { + log.info("E8接口新增门禁信息 入参={}", addReq); + + DoorDeviceAddRes doorDevice = doorDeviceService.addDoorDevice(addReq); + + if (doorDevice == null) { + return R.fail("E8接口新增门禁信息,调用失败!"); + } else { + return R.ok(doorDevice); + } + } + + /** + * 门禁信息修改 + * + * @param updateReq 入参 + * @return Boolean + */ + @PostMapping("/updateDoorDevice") + public R updateDoorDevice(@RequestBody DoorDeviceUpdateReq updateReq) { + log.info("E8接口门禁信息修改 入参={}", updateReq); + + Boolean flag = doorDeviceService.updateDoorDevice(updateReq); + + if (flag) { + return R.ok(); + } else { + return R.fail("E8接口门禁信息修改,调用失败!"); + } + } + + /** + * 删除门禁信息 + * + * @param id 入参 + * @return Boolean + */ + @PostMapping("/deleteDoorDevice/{id}") + public R deleteDoorDevice(@PathVariable Integer id) { + log.info("E8接口删除门禁信息 入参={}", id); + + Boolean flag = doorDeviceService.deleteDoorDevice(id); + + return flag ? R.ok() : R.fail("E8接口删除门禁信息,调用失败!"); + } + + /** + * 查询门禁信息列表 + * + * @param dto 入参 + * @return IPage + */ + @PostMapping("/findDoorDeviceList") + public R> findDoorDeviceList(@RequestBody QueryDto dto) { + log.info("E8接口查询门禁信息列表 入参={}", dto); + TableDataInfo doorDeviceList = doorDeviceService.findDoorDeviceList(dto); + if (ObjectUtils.isEmpty(doorDeviceList)) { + return R.fail("E8接口查询门禁信息列表,调用失败!"); + } else { + return R.ok(doorDeviceList); + } + } +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/e8/VoucherControlController.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/e8/VoucherControlController.java new file mode 100644 index 00000000..bb6c3b63 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/e8/VoucherControlController.java @@ -0,0 +1,153 @@ +package org.dromara.sis.controller.e8; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.dromara.common.core.domain.R; +import org.dromara.sis.sdk.e8.VoucherControlService; +import org.dromara.sis.sdk.e8.domain.voucher.req.CancelVoucherReq; +import org.dromara.sis.sdk.e8.domain.voucher.req.ChangeCardReq; +import org.dromara.sis.sdk.e8.domain.voucher.req.IssueVoucherReq; +import org.dromara.sis.sdk.e8.domain.voucher.req.OperateVoucherReq; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.List; + +/** + * @author lsm + * @apiNote VoucherControlController + * @since 2025/6/25 + */ +@Slf4j +@RestController +@RequiredArgsConstructor +@RequestMapping("/e8VoucherControl") +public class VoucherControlController { + + private final VoucherControlService voucherControlService; + + /** + * 发行凭证 + * + * @param req 入参 + * @return 是否成功 + */ + @PostMapping("/issueVoucher") + public R issueVoucher(@RequestBody IssueVoucherReq req) { + log.info("E8发行凭证入参:{}", req); + + Boolean flag = voucherControlService.issueVoucher(req); + + if (flag) { + return R.ok(); + } else { + return R.fail("E8发行凭证,调用失败!"); + } + } + + /** + * 批量发行凭证 + * + * @param req 凭证数据 + * @return Boolean + */ + @PostMapping("/issueVoucherMany") + public R issueVoucherMany(@RequestBody List req) { + log.info("E8批量发行凭证入参:{}", req); + + Boolean flag = voucherControlService.issueVoucherMany(req); + + if (flag) { + return R.ok(); + } else { + return R.fail("E8批量发行凭证,调用失败!"); + } + } + + /** + * 操作凭证 + * + * @param req 入参 + * @return Boolean + */ + @PostMapping("/operateVoucher") + public R operateVoucher(@RequestBody OperateVoucherReq req) { + log.info("E8操作凭证入参:{}", req); + + Boolean flag = voucherControlService.operateVoucher(req); + + if (flag) { + return R.ok(); + } else { + return R.fail("E8操作凭证,调用失败!"); + } + } + + /** + * 换卡补卡 + * + * @param req 入参 + * @return Boolean + */ + @PostMapping("/changeCard") + public R changeCard(@RequestBody ChangeCardReq req) { + log.info("E8换卡补卡入参:{}", req); + + Boolean flag = voucherControlService.changeCard(req); + + if (flag) { + return R.ok(); + } else { + return R.fail("E8换卡补卡,调用失败!"); + } + } + + /** + * 注销人员凭证 + * + * @param req 入参 + * @return Boolean + */ + @PostMapping("/cancelVoucher") + public R cancelVoucher(@RequestBody CancelVoucherReq req) { + log.info("E8注销人员凭证入参:{}", req); + + Boolean flag = voucherControlService.cancelVoucher(req); + + if (flag) { + return R.ok(); + } else { + return R.fail("E8注销人员凭证,调用失败!"); + } + } + + /** + * 上传人脸 + * + * @param file 入参 + * @return imageUrl 人脸图片地址 + */ + @PostMapping("/uploadFace") + public R uploadFace(@RequestParam("file") MultipartFile file) { + log.info("E8上传人脸入参:{}", file.getOriginalFilename()); + + // 获取文件字节数组 + byte[] imageByte; + try { + imageByte = file.getBytes(); + } catch (IOException e) { + log.error("获取上传文件字节失败:{}", e.getMessage()); + return R.fail("E8上传人脸,获取文件字节失败!"); + } + + String imageUrl = voucherControlService.uploadFace(imageByte); + + if (imageUrl != null) { + return R.ok(imageUrl); + } else { + return R.fail("E8上传人脸,调用失败!"); + } + } + +} diff --git a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/domain/TbAccessControl.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisAccessControl.java similarity index 93% rename from ruoyi-modules/Iot/src/main/java/org/dromara/iot/domain/TbAccessControl.java rename to ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisAccessControl.java index 72a34bd1..fb98c5b4 100644 --- a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/domain/TbAccessControl.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisAccessControl.java @@ -1,4 +1,4 @@ -package org.dromara.iot.domain; +package org.dromara.sis.domain; import org.dromara.common.mybatis.core.domain.BaseEntity; import com.baomidou.mybatisplus.annotation.*; @@ -16,8 +16,8 @@ import java.io.Serial; */ @Data @EqualsAndHashCode(callSuper = true) -@TableName("tb_access_control") -public class TbAccessControl extends BaseEntity { +@TableName("sis_access_control") +public class SisAccessControl extends BaseEntity { @Serial private static final long serialVersionUID = 1L; diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisAccessControlDevice.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisAccessControlDevice.java new file mode 100644 index 00000000..b39a0724 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisAccessControlDevice.java @@ -0,0 +1,91 @@ +package org.dromara.sis.domain; + +import org.dromara.common.tenant.core.TenantEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; + +/** + * 门禁设备对象 sis_access_control_device + * + * @author mocheng + * @date 2025-06-25 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("sis_access_control_device") +public class SisAccessControlDevice extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + @TableId(value = "id") + private Long id; + + /** + * 设备编码 + */ + private String eqpNo; + + /** + * 设备名称 + */ + private String eqpName; + + /** + * 厂商编码 + */ + private String factoryNo; + + /** + * 设备类型 + */ + private Long eqpType; + + /** + * 接入类型(1: 平台接入,2:设备接入) + */ + private Long accessType; + + /** + * 设备ip + */ + private String eqpIp; + + /** + * 设备端口 + */ + private Long eqpPort; + + /** + * 设备账号 + */ + private String eqpAccount; + + /** + * 设备密码 + */ + private String eqpPwd; + + /** + * 创建人id + */ + private Long createById; + + /** + * 更新人id + */ + private Long updateById; + + /** + * 搜索值 + */ + private String searchValue; + + +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisDevicePoint.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisDevicePoint.java new file mode 100644 index 00000000..1b14e647 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisDevicePoint.java @@ -0,0 +1,110 @@ +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_device_point + * + * @author mocheng + * @date 2025-06-25 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("sis_device_point") +public class SisDevicePoint extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + @TableId(value = "id") + private Long id; + + /** + * 设备编码 + */ + private String eqpCode; + + /** + * 视频协议 1:onvif 2: +rtsp + */ + private Long video; + + /** + * 传输协议(AIBOX 需要,一 +体机不需要) 1: tcp 2: +udp + */ + private Long transportType; + + /** + * 点位名称 + */ + private String channelName; + + /** + * rtsp 地址(当视频协议为 +rtsp 时,该字段必填) + */ + private String rtspAddr; + + /** + * 点位名称 + */ + private String ip; + + /** + * 端口 + */ + private Long port; + + /** + * 通道相机账号 + */ + private String username; + + /** + * 相机密码 + */ + private String pwd; + + /** + * onvif 设备码流添加方 +式:1:主码流 2:自定 +义码流 + */ + private Long videoType; + + /** + * 码流 id:当选择自定义码 +流时,该字段必填,值为 +获取设备码流信息接口返 +回的码流 id + */ + private Long videoId; + + /** + * 创建人id + */ + private Long createById; + + /** + * 更新人id + */ + private Long updateById; + + /** + * 搜索值 + */ + private String searchValue; + + +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisLibDeviceImgRef.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisLibDeviceImgRef.java new file mode 100644 index 00000000..f0ba1504 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisLibDeviceImgRef.java @@ -0,0 +1,71 @@ +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; + +/** + * 系统图片和设备图片的关联对象 tb_lib_device_img_ref + * + * @author mocheng + * @date 2025-06-24 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("sis_lib_device_img_ref") +public class SisLibDeviceImgRef extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + @TableId(value = "id") + private Long id; + + /** + * 库编码 + */ + private String libCode; + + /** + * 图片编码 + */ + private String imgCode; + + /** + * 设备编码 + */ + private String eqpCode; + + /** + * 设备库id + */ + private Long eqpLibId; + + /** + * 设备库图片id + */ + private Long eqpLibImgId; + + /** + * 创建人id + */ + private Long createById; + + /** + * 更新人id + */ + private Long updateById; + + /** + * 搜索值 + */ + private String searchValue; + + +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisLibDeviceRef.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisLibDeviceRef.java new file mode 100644 index 00000000..4dfa97e3 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisLibDeviceRef.java @@ -0,0 +1,66 @@ +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; + +/** + * 系统库与设备库的关联对象 tb_lib_device_ref + * + * @author mocheng + * @date 2025-06-24 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("sis_lib_device_ref") +public class SisLibDeviceRef extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + @TableId(value = "id") + private Long id; + + /** + * 人员库编码 + */ + private String libCode; + + /** + * 设备编码 + */ + private String eqpCode; + + /** + * 设备上的库id + */ + private Long eqpLibCode; + + /** + * 第三方设备库添加状态 1: 成功,2:失败 + */ + private Long eqpLibState; + + /** + * 创建人id + */ + private Long createById; + + /** + * 更新人id + */ + private Long updateById; + + /** + * 搜索值 + */ + private String searchValue; + + +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisPersonLib.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisPersonLib.java new file mode 100644 index 00000000..887dabf3 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisPersonLib.java @@ -0,0 +1,71 @@ +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; + +/** + * 人像库对象 tb_person_lib + * + * @author mocheng + * @date 2025-06-24 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("sis_person_lib") +public class SisPersonLib extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + @TableId(value = "id") + private Long id; + + /** + * 人员库编码 + */ + private String libCode; + + /** + * 人员库名称 + */ + private String libName; + + /** + * 人员库描述 + */ + private String libDesc; + + /** + * 库类型,1:人员库,2:工服库 + */ + private Long libType; + + /** + * 库的业务类型 1: 门禁库,2: 黑名单库 + */ + private Long busiType; + + /** + * 创建人id + */ + private Long createById; + + /** + * 更新人id + */ + private Long updateById; + + /** + * 搜索值 + */ + private String searchValue; + + +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisPersonLibImg.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisPersonLibImg.java new file mode 100644 index 00000000..2ae0061d --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisPersonLibImg.java @@ -0,0 +1,99 @@ +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; + +/** + * 人像信息对象 tb_person_lib_img + * + * @author mocheng + * @date 2025-06-24 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("sis_person_lib_img") +public class SisPersonLibImg extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + @TableId(value = "id") + private Long id; + + /** + * 人员库编码 + */ + private String libCode; + + /** + * 人像名称 + */ + private String imgName; + + /** + * 图片编码 + */ + private String imgCode; + + /** + * 图片的存储地址 + */ + private String imgUrl; + + /** + * 性别 1:男 +2:女 99:未说明 + */ + private Long sex; + + /** + * 邮箱 + */ + private String email; + + /** + * 联系方式 + */ + private String tel; + + /** + * 证件类型 +1:身份证 2:护照 +3:行驶证 99:其它 + */ + private Long certificateType; + + /** + * 证件号码 + */ + private String certificateNo; + + /** + * 出生日期 + */ + private String birthDate; + + /** + * 创建人id + */ + private Long createById; + + /** + * 更新人id + */ + private Long updateById; + + /** + * 搜索值 + */ + private String searchValue; + + +} diff --git a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/domain/TdFactory.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/TdFactory.java similarity index 91% rename from ruoyi-modules/Iot/src/main/java/org/dromara/iot/domain/TdFactory.java rename to ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/TdFactory.java index ea17cf98..a67d4104 100644 --- a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/domain/TdFactory.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/TdFactory.java @@ -1,11 +1,10 @@ -package org.dromara.iot.domain; +package org.dromara.sis.domain; import org.dromara.common.mybatis.core.domain.BaseEntity; import com.baomidou.mybatisplus.annotation.*; import lombok.Data; import lombok.EqualsAndHashCode; import java.util.Date; -import com.fasterxml.jackson.annotation.JsonFormat; import java.io.Serial; diff --git a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/domain/TdMeter.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/TdMeter.java similarity index 98% rename from ruoyi-modules/Iot/src/main/java/org/dromara/iot/domain/TdMeter.java rename to ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/TdMeter.java index f04301ab..b5378d7b 100644 --- a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/domain/TdMeter.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/TdMeter.java @@ -1,4 +1,4 @@ -package org.dromara.iot.domain; +package org.dromara.sis.domain; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; diff --git a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/domain/TdMeterConfig.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/TdMeterConfig.java similarity index 97% rename from ruoyi-modules/Iot/src/main/java/org/dromara/iot/domain/TdMeterConfig.java rename to ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/TdMeterConfig.java index fe5695fd..4e8e275c 100644 --- a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/domain/TdMeterConfig.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/TdMeterConfig.java @@ -1,4 +1,4 @@ -package org.dromara.iot.domain; +package org.dromara.sis.domain; import org.dromara.common.mybatis.core.domain.BaseEntity; import com.baomidou.mybatisplus.annotation.*; diff --git a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/domain/TdMeterRoom.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/TdMeterRoom.java similarity index 95% rename from ruoyi-modules/Iot/src/main/java/org/dromara/iot/domain/TdMeterRoom.java rename to ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/TdMeterRoom.java index 1f8f681f..f62aeb04 100644 --- a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/domain/TdMeterRoom.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/TdMeterRoom.java @@ -1,4 +1,4 @@ -package org.dromara.iot.domain; +package org.dromara.sis.domain; import org.dromara.common.mybatis.core.domain.BaseEntity; import com.baomidou.mybatisplus.annotation.*; diff --git a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/domain/bo/TbAccessControlBo.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisAccessControlBo.java similarity index 91% rename from ruoyi-modules/Iot/src/main/java/org/dromara/iot/domain/bo/TbAccessControlBo.java rename to ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisAccessControlBo.java index 05976e7c..9c427827 100644 --- a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/domain/bo/TbAccessControlBo.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisAccessControlBo.java @@ -1,4 +1,4 @@ -package org.dromara.iot.domain.bo; +package org.dromara.sis.domain.bo; import io.github.linpeilie.annotations.AutoMapper; import jakarta.validation.constraints.NotBlank; @@ -8,7 +8,7 @@ import lombok.EqualsAndHashCode; import org.dromara.common.core.validate.AddGroup; import org.dromara.common.core.validate.EditGroup; import org.dromara.common.mybatis.core.domain.BaseEntity; -import org.dromara.iot.domain.TbAccessControl; +import org.dromara.sis.domain.SisAccessControl; /** * 门禁管理业务对象 tb_access_control @@ -18,8 +18,8 @@ import org.dromara.iot.domain.TbAccessControl; */ @Data @EqualsAndHashCode(callSuper = true) -@AutoMapper(target = TbAccessControl.class, reverseConvertGenerate = false) -public class TbAccessControlBo extends BaseEntity { +@AutoMapper(target = SisAccessControl.class, reverseConvertGenerate = false) +public class SisAccessControlBo extends BaseEntity { /** * id diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisAccessControlDeviceBo.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisAccessControlDeviceBo.java new file mode 100644 index 00000000..5aa2e78b --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisAccessControlDeviceBo.java @@ -0,0 +1,96 @@ +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 lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; + +/** + * 门禁设备业务对象 sis_access_control_device + * + * @author mocheng + * @date 2025-06-25 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = SisAccessControlDevice.class, reverseConvertGenerate = false) +public class SisAccessControlDeviceBo extends BaseEntity { + + /** + * 主键id + */ + @NotNull(message = "主键id不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 设备编码 + */ + @NotBlank(message = "设备编码不能为空", groups = { AddGroup.class, EditGroup.class }) + private String eqpNo; + + /** + * 设备名称 + */ + @NotBlank(message = "设备名称不能为空", groups = { AddGroup.class, EditGroup.class }) + private String eqpName; + + /** + * 厂商编码 + */ + private String factoryNo; + + /** + * 设备类型 + */ + private Long eqpType; + + /** + * 接入类型(1: 平台接入,2:设备接入) + */ + private Long accessType; + + /** + * 设备ip + */ + @NotBlank(message = "设备ip不能为空", groups = { AddGroup.class, EditGroup.class }) + private String eqpIp; + + /** + * 设备端口 + */ + @NotNull(message = "设备端口不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long eqpPort; + + /** + * 设备账号 + */ + @NotBlank(message = "设备账号不能为空", groups = { AddGroup.class, EditGroup.class }) + private String eqpAccount; + + /** + * 设备密码 + */ + @NotBlank(message = "设备密码不能为空", groups = { AddGroup.class, EditGroup.class }) + private String eqpPwd; + + /** + * 创建人id + */ + private Long createById; + + /** + * 更新人id + */ + private Long updateById; + + /** + * 搜索值 + */ + private String searchValue; + + +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisDevicePointBo.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisDevicePointBo.java new file mode 100644 index 00000000..c18cab5d --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisDevicePointBo.java @@ -0,0 +1,110 @@ +package org.dromara.sis.domain.bo; + +import org.dromara.sis.domain.SisDevicePoint; +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_device_point + * + * @author mocheng + * @date 2025-06-25 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = SisDevicePoint.class, reverseConvertGenerate = false) +public class SisDevicePointBo extends BaseEntity { + + /** + * 主键id + */ + @NotNull(message = "主键id不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 设备编码 + */ + @NotBlank(message = "设备编码不能为空", groups = { AddGroup.class, EditGroup.class }) + private String eqpCode; + + /** + * 视频协议 1:onvif 2: +rtsp + */ + private Long video; + + /** + * 传输协议(AIBOX 需要,一 +体机不需要) 1: tcp 2: +udp + */ + private Long transportType; + + /** + * 点位名称 + */ + private String channelName; + + /** + * rtsp 地址(当视频协议为 +rtsp 时,该字段必填) + */ + private String rtspAddr; + + /** + * 点位名称 + */ + private String ip; + + /** + * 端口 + */ + private Long port; + + /** + * 通道相机账号 + */ + private String username; + + /** + * 相机密码 + */ + private String pwd; + + /** + * onvif 设备码流添加方 +式:1:主码流 2:自定 +义码流 + */ + private Long videoType; + + /** + * 码流 id:当选择自定义码 +流时,该字段必填,值为 +获取设备码流信息接口返 +回的码流 id + */ + private Long videoId; + + /** + * 创建人id + */ + private Long createById; + + /** + * 更新人id + */ + private Long updateById; + + /** + * 搜索值 + */ + private String searchValue; + + +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisLibDeviceImgRefBo.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisLibDeviceImgRefBo.java new file mode 100644 index 00000000..4a3fd114 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisLibDeviceImgRefBo.java @@ -0,0 +1,75 @@ +package org.dromara.sis.domain.bo; + +import org.dromara.sis.domain.SisLibDeviceImgRef; +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.*; + +/** + * 系统图片和设备图片的关联业务对象 tb_lib_device_img_ref + * + * @author mocheng + * @date 2025-06-24 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = SisLibDeviceImgRef.class, reverseConvertGenerate = false) +public class SisLibDeviceImgRefBo extends BaseEntity { + + /** + * 主键id + */ + @NotNull(message = "主键id不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 库编码 + */ + @NotBlank(message = "库编码不能为空", groups = { AddGroup.class, EditGroup.class }) + private String libCode; + + /** + * 图片编码 + */ + @NotBlank(message = "图片编码不能为空", groups = { AddGroup.class, EditGroup.class }) + private String imgCode; + + /** + * 设备编码 + */ + @NotBlank(message = "设备编码不能为空", groups = { AddGroup.class, EditGroup.class }) + private String eqpCode; + + /** + * 设备库id + */ + @NotNull(message = "设备库id不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long eqpLibId; + + /** + * 设备库图片id + */ + @NotNull(message = "设备库图片id不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long eqpLibImgId; + + /** + * 创建人id + */ + private Long createById; + + /** + * 更新人id + */ + private Long updateById; + + /** + * 搜索值 + */ + private String searchValue; + + +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisLibDeviceRefBo.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisLibDeviceRefBo.java new file mode 100644 index 00000000..03173a4b --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisLibDeviceRefBo.java @@ -0,0 +1,69 @@ +package org.dromara.sis.domain.bo; + +import org.dromara.sis.domain.SisLibDeviceRef; +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.*; + +/** + * 系统库与设备库的关联业务对象 tb_lib_device_ref + * + * @author mocheng + * @date 2025-06-24 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = SisLibDeviceRef.class, reverseConvertGenerate = false) +public class SisLibDeviceRefBo extends BaseEntity { + + /** + * 主键id + */ + @NotNull(message = "主键id不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 人员库编码 + */ + @NotBlank(message = "人员库编码不能为空", groups = { AddGroup.class, EditGroup.class }) + private String libCode; + + /** + * 设备编码 + */ + @NotBlank(message = "设备编码不能为空", groups = { AddGroup.class, EditGroup.class }) + private String eqpCode; + + /** + * 设备上的库id + */ + @NotNull(message = "设备上的库id不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long eqpLibCode; + + /** + * 第三方设备库添加状态 1: 成功,2:失败 + */ + @NotNull(message = "第三方设备库添加状态 1: 成功,2:失败不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long eqpLibState; + + /** + * 创建人id + */ + private Long createById; + + /** + * 更新人id + */ + private Long updateById; + + /** + * 搜索值 + */ + private String searchValue; + + +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisPersonLibBo.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisPersonLibBo.java new file mode 100644 index 00000000..3e319122 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisPersonLibBo.java @@ -0,0 +1,72 @@ +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 lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; + +/** + * 人像库业务对象 tb_person_lib + * + * @author mocheng + * @date 2025-06-24 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = SisPersonLib.class, reverseConvertGenerate = false) +public class SisPersonLibBo extends BaseEntity { + + /** + * 主键id + */ + @NotNull(message = "主键id不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 人员库编码 + */ + @NotBlank(message = "人员库编码不能为空", groups = { AddGroup.class, EditGroup.class }) + private String libCode; + + /** + * 人员库名称 + */ + @NotBlank(message = "人员库名称不能为空", groups = { AddGroup.class, EditGroup.class }) + private String libName; + + /** + * 人员库描述 + */ + private String libDesc; + + /** + * 库类型,1:人员库,2:工服库 + */ + private Long libType; + + /** + * 库的业务类型 1: 门禁库,2: 黑名单库 + */ + private Long busiType; + + /** + * 创建人id + */ + private Long createById; + + /** + * 更新人id + */ + private Long updateById; + + /** + * 搜索值 + */ + private String searchValue; + + +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisPersonLibImgBo.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisPersonLibImgBo.java new file mode 100644 index 00000000..3aaa337d --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisPersonLibImgBo.java @@ -0,0 +1,101 @@ +package org.dromara.sis.domain.bo; + +import org.dromara.sis.domain.SisPersonLibImg; +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.*; + +/** + * 人像信息业务对象 tb_person_lib_img + * + * @author mocheng + * @date 2025-06-24 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = SisPersonLibImg.class, reverseConvertGenerate = false) +public class SisPersonLibImgBo extends BaseEntity { + + /** + * 主键id + */ + @NotNull(message = "主键id不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 人员库编码 + */ + @NotBlank(message = "人员库编码不能为空", groups = { AddGroup.class, EditGroup.class }) + private String libCode; + + /** + * 人像名称 + */ + @NotBlank(message = "人像名称不能为空", groups = { AddGroup.class, EditGroup.class }) + private String imgName; + + /** + * 图片编码 + */ + private String imgCode; + + /** + * 图片的存储地址 + */ + @NotBlank(message = "图片的存储地址不能为空", groups = { AddGroup.class, EditGroup.class }) + private String imgUrl; + + /** + * 性别 1:男 +2:女 99:未说明 + */ + private Long sex; + + /** + * 邮箱 + */ + private String email; + + /** + * 联系方式 + */ + private String tel; + + /** + * 证件类型 +1:身份证 2:护照 +3:行驶证 99:其它 + */ + private Long certificateType; + + /** + * 证件号码 + */ + private String certificateNo; + + /** + * 出生日期 + */ + private String birthDate; + + /** + * 创建人id + */ + private Long createById; + + /** + * 更新人id + */ + private Long updateById; + + /** + * 搜索值 + */ + private String searchValue; + + +} diff --git a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/domain/bo/TdFactoryBo.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/TdFactoryBo.java similarity index 94% rename from ruoyi-modules/Iot/src/main/java/org/dromara/iot/domain/bo/TdFactoryBo.java rename to ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/TdFactoryBo.java index cea86858..2cd84c79 100644 --- a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/domain/bo/TdFactoryBo.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/TdFactoryBo.java @@ -1,4 +1,4 @@ -package org.dromara.iot.domain.bo; +package org.dromara.sis.domain.bo; import io.github.linpeilie.annotations.AutoMapper; import jakarta.validation.constraints.NotBlank; @@ -8,7 +8,7 @@ import lombok.EqualsAndHashCode; import org.dromara.common.core.validate.AddGroup; import org.dromara.common.core.validate.EditGroup; import org.dromara.common.mybatis.core.domain.BaseEntity; -import org.dromara.iot.domain.TdFactory; +import org.dromara.sis.domain.TdFactory; /** * 厂商管理业务对象 td_factory diff --git a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/domain/bo/TdMeterBo.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/TdMeterBo.java similarity index 96% rename from ruoyi-modules/Iot/src/main/java/org/dromara/iot/domain/bo/TdMeterBo.java rename to ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/TdMeterBo.java index f4c69a2f..376bf344 100644 --- a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/domain/bo/TdMeterBo.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/TdMeterBo.java @@ -1,4 +1,4 @@ -package org.dromara.iot.domain.bo; +package org.dromara.sis.domain.bo; import io.github.linpeilie.annotations.AutoMapper; import jakarta.validation.constraints.NotBlank; @@ -8,7 +8,7 @@ import lombok.EqualsAndHashCode; import org.dromara.common.core.validate.AddGroup; import org.dromara.common.core.validate.EditGroup; import org.dromara.common.mybatis.core.domain.BaseEntity; -import org.dromara.iot.domain.TdMeter; +import org.dromara.sis.domain.TdMeter; import java.util.List; diff --git a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/domain/bo/TdMeterConfigBo.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/TdMeterConfigBo.java similarity index 95% rename from ruoyi-modules/Iot/src/main/java/org/dromara/iot/domain/bo/TdMeterConfigBo.java rename to ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/TdMeterConfigBo.java index 0f0aeb35..13b52169 100644 --- a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/domain/bo/TdMeterConfigBo.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/TdMeterConfigBo.java @@ -1,6 +1,6 @@ -package org.dromara.iot.domain.bo; +package org.dromara.sis.domain.bo; -import org.dromara.iot.domain.TdMeterConfig; +import org.dromara.sis.domain.TdMeterConfig; import org.dromara.common.mybatis.core.domain.BaseEntity; import org.dromara.common.core.validate.AddGroup; import org.dromara.common.core.validate.EditGroup; diff --git a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/domain/bo/TdMeterRoomBo.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/TdMeterRoomBo.java similarity index 93% rename from ruoyi-modules/Iot/src/main/java/org/dromara/iot/domain/bo/TdMeterRoomBo.java rename to ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/TdMeterRoomBo.java index f874962b..39f83065 100644 --- a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/domain/bo/TdMeterRoomBo.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/TdMeterRoomBo.java @@ -1,6 +1,6 @@ -package org.dromara.iot.domain.bo; +package org.dromara.sis.domain.bo; -import org.dromara.iot.domain.TdMeterRoom; +import org.dromara.sis.domain.TdMeterRoom; import org.dromara.common.mybatis.core.domain.BaseEntity; import org.dromara.common.core.validate.AddGroup; import org.dromara.common.core.validate.EditGroup; diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisAccessControlDeviceVo.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisAccessControlDeviceVo.java new file mode 100644 index 00000000..09e1d8c5 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisAccessControlDeviceVo.java @@ -0,0 +1,110 @@ +package org.dromara.sis.domain.vo; + +import org.dromara.sis.domain.SisAccessControlDevice; +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_access_control_device + * + * @author mocheng + * @date 2025-06-25 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = SisAccessControlDevice.class) +public class SisAccessControlDeviceVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + @ExcelProperty(value = "主键id") + private Long id; + + /** + * 设备编码 + */ + @ExcelProperty(value = "设备编码") + private String eqpNo; + + /** + * 设备名称 + */ + @ExcelProperty(value = "设备名称") + private String eqpName; + + /** + * 厂商编码 + */ + @ExcelProperty(value = "厂商编码") + private String factoryNo; + + /** + * 设备类型 + */ + @ExcelProperty(value = "设备类型") + private Long eqpType; + + /** + * 接入类型(1: 平台接入,2:设备接入) + */ + @ExcelProperty(value = "接入类型(1: 平台接入,2:设备接入)") + private Long accessType; + + /** + * 设备ip + */ + @ExcelProperty(value = "设备ip") + private String eqpIp; + + /** + * 设备端口 + */ + @ExcelProperty(value = "设备端口") + private Long eqpPort; + + /** + * 设备账号 + */ + @ExcelProperty(value = "设备账号") + private String eqpAccount; + + /** + * 设备密码 + */ + @ExcelProperty(value = "设备密码") + private String eqpPwd; + + /** + * 创建人id + */ + @ExcelProperty(value = "创建人id") + private Long createById; + + /** + * 更新人id + */ + @ExcelProperty(value = "更新人id") + private Long updateById; + + /** + * 搜索值 + */ + @ExcelProperty(value = "搜索值") + private String searchValue; + + +} diff --git a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/domain/vo/TbAccessControlVo.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisAccessControlVo.java similarity index 91% rename from ruoyi-modules/Iot/src/main/java/org/dromara/iot/domain/vo/TbAccessControlVo.java rename to ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisAccessControlVo.java index bc7c7f5b..5bc50d74 100644 --- a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/domain/vo/TbAccessControlVo.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisAccessControlVo.java @@ -1,10 +1,10 @@ -package org.dromara.iot.domain.vo; +package org.dromara.sis.domain.vo; import cn.idev.excel.annotation.ExcelIgnoreUnannotated; import cn.idev.excel.annotation.ExcelProperty; import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; -import org.dromara.iot.domain.TbAccessControl; +import org.dromara.sis.domain.SisAccessControl; import java.io.Serial; import java.io.Serializable; @@ -18,8 +18,8 @@ import java.io.Serializable; */ @Data @ExcelIgnoreUnannotated -@AutoMapper(target = TbAccessControl.class) -public class TbAccessControlVo implements Serializable { +@AutoMapper(target = SisAccessControl.class) +public class SisAccessControlVo implements Serializable { @Serial private static final long serialVersionUID = 1L; diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisDevicePointVo.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisDevicePointVo.java new file mode 100644 index 00000000..ef84ef44 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisDevicePointVo.java @@ -0,0 +1,131 @@ +package org.dromara.sis.domain.vo; + +import org.dromara.sis.domain.SisDevicePoint; +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_device_point + * + * @author mocheng + * @date 2025-06-25 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = SisDevicePoint.class) +public class SisDevicePointVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + @ExcelProperty(value = "主键id") + private Long id; + + /** + * 设备编码 + */ + @ExcelProperty(value = "设备编码") + private String eqpCode; + + /** + * 视频协议 1:onvif 2: + * rtsp + */ + @ExcelProperty(value = "视频协议 1:onvif 2:rtsp") + private Long video; + + /** + * 传输协议(AIBOX 需要,一 + * 体机不需要) 1: tcp 2: + * udp + */ + @ExcelProperty(value = "传输协议(AIBOX 需要,一体机不需要) 1:tcp 2:udp") + private Long transportType; + + /** + * 点位名称 + */ + @ExcelProperty(value = "点位名称") + private String channelName; + + /** + * rtsp 地址(当视频协议为 + * rtsp 时,该字段必填) + */ + @ExcelProperty(value = "rtsp 地址", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "当=视频协议为rtsp, 时 =,该字段必填") + private String rtspAddr; + + /** + * 点位名称 + */ + @ExcelProperty(value = "点位名称") + private String ip; + + /** + * 端口 + */ + @ExcelProperty(value = "端口") + private Long port; + + /** + * 通道相机账号 + */ + @ExcelProperty(value = "通道相机账号") + private String username; + + /** + * 相机密码 + */ + @ExcelProperty(value = "相机密码") + private String pwd; + + /** + * onvif 设备码流添加方 + 式:1:主码流 2:自定 + 义码流 + */ + @ExcelProperty(value = "onvif 设备码流添加方式:1:主码流 2:自定义码流") + private Long videoType; + + /** + * 码流 id:当选择自定义码 + 流时,该字段必填,值为 + 获取设备码流信息接口返 + 回的码流 id + */ + @ExcelProperty(value = "码流 id:当选择自定义码流时,该字段必填,值为获取设备码流信息接口返回的码流 id") + private Long videoId; + + /** + * 创建人id + */ + @ExcelProperty(value = "创建人id") + private Long createById; + + /** + * 更新人id + */ + @ExcelProperty(value = "更新人id") + private Long updateById; + + /** + * 搜索值 + */ + @ExcelProperty(value = "搜索值") + private String searchValue; + + +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisLibDeviceImgRefVo.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisLibDeviceImgRefVo.java new file mode 100644 index 00000000..8a5344e1 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisLibDeviceImgRefVo.java @@ -0,0 +1,82 @@ +package org.dromara.sis.domain.vo; + +import org.dromara.sis.domain.SisLibDeviceImgRef; +import cn.idev.excel.annotation.ExcelIgnoreUnannotated; +import cn.idev.excel.annotation.ExcelProperty; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + + +/** + * 系统图片和设备图片的关联视图对象 tb_lib_device_img_ref + * + * @author mocheng + * @date 2025-06-24 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = SisLibDeviceImgRef.class) +public class SisLibDeviceImgRefVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + @ExcelProperty(value = "主键id") + private Long id; + + /** + * 库编码 + */ + @ExcelProperty(value = "库编码") + private String libCode; + + /** + * 图片编码 + */ + @ExcelProperty(value = "图片编码") + private String imgCode; + + /** + * 设备编码 + */ + @ExcelProperty(value = "设备编码") + private String eqpCode; + + /** + * 设备库id + */ + @ExcelProperty(value = "设备库id") + private Long eqpLibId; + + /** + * 设备库图片id + */ + @ExcelProperty(value = "设备库图片id") + private Long eqpLibImgId; + + /** + * 创建人id + */ + @ExcelProperty(value = "创建人id") + private Long createById; + + /** + * 更新人id + */ + @ExcelProperty(value = "更新人id") + private Long updateById; + + /** + * 搜索值 + */ + @ExcelProperty(value = "搜索值") + private String searchValue; + + +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisLibDeviceRefVo.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisLibDeviceRefVo.java new file mode 100644 index 00000000..a82dee51 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisLibDeviceRefVo.java @@ -0,0 +1,76 @@ +package org.dromara.sis.domain.vo; + +import org.dromara.sis.domain.SisLibDeviceRef; +import cn.idev.excel.annotation.ExcelIgnoreUnannotated; +import cn.idev.excel.annotation.ExcelProperty; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + + +/** + * 系统库与设备库的关联视图对象 tb_lib_device_ref + * + * @author mocheng + * @date 2025-06-24 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = SisLibDeviceRef.class) +public class SisLibDeviceRefVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + @ExcelProperty(value = "主键id") + private Long id; + + /** + * 人员库编码 + */ + @ExcelProperty(value = "人员库编码") + private String libCode; + + /** + * 设备编码 + */ + @ExcelProperty(value = "设备编码") + private String eqpCode; + + /** + * 设备上的库id + */ + @ExcelProperty(value = "设备上的库id") + private Long eqpLibCode; + + /** + * 第三方设备库添加状态 1: 成功,2:失败 + */ + @ExcelProperty(value = "第三方设备库添加状态 1: 成功,2:失败") + private Long eqpLibState; + + /** + * 创建人id + */ + @ExcelProperty(value = "创建人id") + private Long createById; + + /** + * 更新人id + */ + @ExcelProperty(value = "更新人id") + private Long updateById; + + /** + * 搜索值 + */ + @ExcelProperty(value = "搜索值") + private String searchValue; + + +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisPersonLibImgVo.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisPersonLibImgVo.java new file mode 100644 index 00000000..15068b33 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisPersonLibImgVo.java @@ -0,0 +1,116 @@ +package org.dromara.sis.domain.vo; + +import cn.idev.excel.annotation.ExcelIgnoreUnannotated; +import cn.idev.excel.annotation.ExcelProperty; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import org.dromara.sis.domain.SisPersonLibImg; + +import java.io.Serial; +import java.io.Serializable; + + + +/** + * 人像信息视图对象 tb_person_lib_img + * + * @author mocheng + * @date 2025-06-24 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = SisPersonLibImg.class) +public class SisPersonLibImgVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + @ExcelProperty(value = "主键id") + private Long id; + + /** + * 人员库编码 + */ + @ExcelProperty(value = "人员库编码") + private String libCode; + + /** + * 人像名称 + */ + @ExcelProperty(value = "人像名称") + private String imgName; + + /** + * 图片编码 + */ + @ExcelProperty(value = "图片编码") + private String imgCode; + + /** + * 图片的存储地址 + */ + @ExcelProperty(value = "图片的存储地址") + private String imgUrl; + + /** + * 性别 1:男 +2:女 99:未说明 + */ + @ExcelProperty(value = "性别 1") + private Long sex; + + /** + * 邮箱 + */ + @ExcelProperty(value = "邮箱") + private String email; + + /** + * 联系方式 + */ + @ExcelProperty(value = "联系方式") + private String tel; + + /** + * 证件类型 +1:身份证 2:护照 +3:行驶证 99:其它 + */ + @ExcelProperty(value = "证件类型") + private Long certificateType; + + /** + * 证件号码 + */ + @ExcelProperty(value = "证件号码") + private String certificateNo; + + /** + * 出生日期 + */ + @ExcelProperty(value = "出生日期") + private String birthDate; + + /** + * 创建人id + */ + @ExcelProperty(value = "创建人id") + private Long createById; + + /** + * 更新人id + */ + @ExcelProperty(value = "更新人id") + private Long updateById; + + /** + * 搜索值 + */ + @ExcelProperty(value = "搜索值") + private String searchValue; + + +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisPersonLibVo.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisPersonLibVo.java new file mode 100644 index 00000000..c5384e01 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisPersonLibVo.java @@ -0,0 +1,82 @@ +package org.dromara.sis.domain.vo; + +import org.dromara.sis.domain.SisPersonLib; +import cn.idev.excel.annotation.ExcelIgnoreUnannotated; +import cn.idev.excel.annotation.ExcelProperty; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + + +/** + * 人像库视图对象 tb_person_lib + * + * @author mocheng + * @date 2025-06-24 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = SisPersonLib.class) +public class SisPersonLibVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + @ExcelProperty(value = "主键id") + private Long id; + + /** + * 人员库编码 + */ + @ExcelProperty(value = "人员库编码") + private String libCode; + + /** + * 人员库名称 + */ + @ExcelProperty(value = "人员库名称") + private String libName; + + /** + * 人员库描述 + */ + @ExcelProperty(value = "人员库描述") + private String libDesc; + + /** + * 库类型,1:人员库,2:工服库 + */ + @ExcelProperty(value = "库类型,1:人员库,2:工服库") + private Long libType; + + /** + * 库的业务类型 1: 门禁库,2: 黑名单库 + */ + @ExcelProperty(value = "库的业务类型 1: 门禁库,2: 黑名单库") + private Long busiType; + + /** + * 创建人id + */ + @ExcelProperty(value = "创建人id") + private Long createById; + + /** + * 更新人id + */ + @ExcelProperty(value = "更新人id") + private Long updateById; + + /** + * 搜索值 + */ + @ExcelProperty(value = "搜索值") + private String searchValue; + + +} diff --git a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/domain/vo/TdFactoryVo.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/TdFactoryVo.java similarity index 93% rename from ruoyi-modules/Iot/src/main/java/org/dromara/iot/domain/vo/TdFactoryVo.java rename to ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/TdFactoryVo.java index 356b8ec0..534a75e1 100644 --- a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/domain/vo/TdFactoryVo.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/TdFactoryVo.java @@ -1,10 +1,10 @@ -package org.dromara.iot.domain.vo; +package org.dromara.sis.domain.vo; import cn.idev.excel.annotation.ExcelIgnoreUnannotated; import cn.idev.excel.annotation.ExcelProperty; import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; -import org.dromara.iot.domain.TdFactory; +import org.dromara.sis.domain.TdFactory; import java.io.Serial; import java.io.Serializable; diff --git a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/domain/vo/TdMeterConfigVo.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/TdMeterConfigVo.java similarity index 95% rename from ruoyi-modules/Iot/src/main/java/org/dromara/iot/domain/vo/TdMeterConfigVo.java rename to ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/TdMeterConfigVo.java index 24b145dc..ca4d7e19 100644 --- a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/domain/vo/TdMeterConfigVo.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/TdMeterConfigVo.java @@ -1,4 +1,4 @@ -package org.dromara.iot.domain.vo; +package org.dromara.sis.domain.vo; import cn.idev.excel.annotation.ExcelIgnoreUnannotated; import cn.idev.excel.annotation.ExcelProperty; @@ -6,7 +6,7 @@ import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; import org.dromara.common.excel.annotation.ExcelDictFormat; import org.dromara.common.excel.convert.ExcelDictConvert; -import org.dromara.iot.domain.TdMeterConfig; +import org.dromara.sis.domain.TdMeterConfig; import java.io.Serial; import java.io.Serializable; diff --git a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/domain/vo/TdMeterRoomVo.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/TdMeterRoomVo.java similarity index 92% rename from ruoyi-modules/Iot/src/main/java/org/dromara/iot/domain/vo/TdMeterRoomVo.java rename to ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/TdMeterRoomVo.java index 487f6703..90169336 100644 --- a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/domain/vo/TdMeterRoomVo.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/TdMeterRoomVo.java @@ -1,10 +1,10 @@ -package org.dromara.iot.domain.vo; +package org.dromara.sis.domain.vo; import cn.idev.excel.annotation.ExcelIgnoreUnannotated; import cn.idev.excel.annotation.ExcelProperty; import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; -import org.dromara.iot.domain.TdMeterRoom; +import org.dromara.sis.domain.TdMeterRoom; import java.io.Serial; import java.io.Serializable; diff --git a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/domain/vo/TdMeterVo.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/TdMeterVo.java similarity index 96% rename from ruoyi-modules/Iot/src/main/java/org/dromara/iot/domain/vo/TdMeterVo.java rename to ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/TdMeterVo.java index 6a5326d5..ab703497 100644 --- a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/domain/vo/TdMeterVo.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/TdMeterVo.java @@ -1,10 +1,10 @@ -package org.dromara.iot.domain.vo; +package org.dromara.sis.domain.vo; import cn.idev.excel.annotation.ExcelIgnoreUnannotated; import cn.idev.excel.annotation.ExcelProperty; import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; -import org.dromara.iot.domain.TdMeter; +import org.dromara.sis.domain.TdMeter; import java.io.Serial; import java.io.Serializable; diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/mapper/SisAccessControlDeviceMapper.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/mapper/SisAccessControlDeviceMapper.java new file mode 100644 index 00000000..30079632 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/mapper/SisAccessControlDeviceMapper.java @@ -0,0 +1,15 @@ +package org.dromara.sis.mapper; + +import org.dromara.sis.domain.SisAccessControlDevice; +import org.dromara.sis.domain.vo.SisAccessControlDeviceVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 门禁设备Mapper接口 + * + * @author mocheng + * @date 2025-06-25 + */ +public interface SisAccessControlDeviceMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/mapper/SisAccessControlMapper.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/mapper/SisAccessControlMapper.java new file mode 100644 index 00000000..fe174ad0 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/mapper/SisAccessControlMapper.java @@ -0,0 +1,17 @@ +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.vo.SisAccessControlVo; + +/** + * 门禁管理Mapper接口 + * + * @author mocheng + * @date 2025-06-17 + */ +@Mapper +public interface SisAccessControlMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/mapper/SisDevicePointMapper.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/mapper/SisDevicePointMapper.java new file mode 100644 index 00000000..cf8538d5 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/mapper/SisDevicePointMapper.java @@ -0,0 +1,15 @@ +package org.dromara.sis.mapper; + +import org.dromara.sis.domain.SisDevicePoint; +import org.dromara.sis.domain.vo.SisDevicePointVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 宇视设备点位(通道)Mapper接口 + * + * @author mocheng + * @date 2025-06-25 + */ +public interface SisDevicePointMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/mapper/SisLibDeviceImgRefMapper.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/mapper/SisLibDeviceImgRefMapper.java new file mode 100644 index 00000000..02dd47fa --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/mapper/SisLibDeviceImgRefMapper.java @@ -0,0 +1,15 @@ +package org.dromara.sis.mapper; + +import org.dromara.sis.domain.SisLibDeviceImgRef; +import org.dromara.sis.domain.vo.SisLibDeviceImgRefVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 系统图片和设备图片的关联Mapper接口 + * + * @author mocheng + * @date 2025-06-24 + */ +public interface SisLibDeviceImgRefMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/mapper/SisLibDeviceRefMapper.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/mapper/SisLibDeviceRefMapper.java new file mode 100644 index 00000000..52ed2f75 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/mapper/SisLibDeviceRefMapper.java @@ -0,0 +1,15 @@ +package org.dromara.sis.mapper; + +import org.dromara.sis.domain.SisLibDeviceRef; +import org.dromara.sis.domain.vo.SisLibDeviceRefVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 系统库与设备库的关联Mapper接口 + * + * @author mocheng + * @date 2025-06-24 + */ +public interface SisLibDeviceRefMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/mapper/SisPersonLibImgMapper.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/mapper/SisPersonLibImgMapper.java new file mode 100644 index 00000000..df1e89a4 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/mapper/SisPersonLibImgMapper.java @@ -0,0 +1,15 @@ +package org.dromara.sis.mapper; + +import org.dromara.sis.domain.SisPersonLibImg; +import org.dromara.sis.domain.vo.SisPersonLibImgVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 人像信息Mapper接口 + * + * @author mocheng + * @date 2025-06-24 + */ +public interface SisPersonLibImgMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/mapper/SisPersonLibMapper.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/mapper/SisPersonLibMapper.java new file mode 100644 index 00000000..40cdf676 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/mapper/SisPersonLibMapper.java @@ -0,0 +1,15 @@ +package org.dromara.sis.mapper; + +import org.dromara.sis.domain.SisPersonLib; +import org.dromara.sis.domain.vo.SisPersonLibVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 人像库Mapper接口 + * + * @author mocheng + * @date 2025-06-24 + */ +public interface SisPersonLibMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/mapper/TdFactoryMapper.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/mapper/TdFactoryMapper.java similarity index 65% rename from ruoyi-modules/Iot/src/main/java/org/dromara/iot/mapper/TdFactoryMapper.java rename to ruoyi-modules/Sis/src/main/java/org/dromara/sis/mapper/TdFactoryMapper.java index 38cbdc14..fb24b531 100644 --- a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/mapper/TdFactoryMapper.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/mapper/TdFactoryMapper.java @@ -1,7 +1,7 @@ -package org.dromara.iot.mapper; +package org.dromara.sis.mapper; -import org.dromara.iot.domain.TdFactory; -import org.dromara.iot.domain.vo.TdFactoryVo; +import org.dromara.sis.domain.TdFactory; +import org.dromara.sis.domain.vo.TdFactoryVo; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; /** diff --git a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/mapper/TdMeterConfigMapper.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/mapper/TdMeterConfigMapper.java similarity index 65% rename from ruoyi-modules/Iot/src/main/java/org/dromara/iot/mapper/TdMeterConfigMapper.java rename to ruoyi-modules/Sis/src/main/java/org/dromara/sis/mapper/TdMeterConfigMapper.java index c72b1e2b..376a1082 100644 --- a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/mapper/TdMeterConfigMapper.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/mapper/TdMeterConfigMapper.java @@ -1,7 +1,7 @@ -package org.dromara.iot.mapper; +package org.dromara.sis.mapper; -import org.dromara.iot.domain.TdMeterConfig; -import org.dromara.iot.domain.vo.TdMeterConfigVo; +import org.dromara.sis.domain.TdMeterConfig; +import org.dromara.sis.domain.vo.TdMeterConfigVo; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; /** diff --git a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/mapper/TdMeterMapper.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/mapper/TdMeterMapper.java similarity index 65% rename from ruoyi-modules/Iot/src/main/java/org/dromara/iot/mapper/TdMeterMapper.java rename to ruoyi-modules/Sis/src/main/java/org/dromara/sis/mapper/TdMeterMapper.java index b1018c00..dbf0b209 100644 --- a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/mapper/TdMeterMapper.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/mapper/TdMeterMapper.java @@ -1,7 +1,7 @@ -package org.dromara.iot.mapper; +package org.dromara.sis.mapper; -import org.dromara.iot.domain.TdMeter; -import org.dromara.iot.domain.vo.TdMeterVo; +import org.dromara.sis.domain.TdMeter; +import org.dromara.sis.domain.vo.TdMeterVo; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; /** diff --git a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/mapper/TdMeterRoomMapper.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/mapper/TdMeterRoomMapper.java similarity index 65% rename from ruoyi-modules/Iot/src/main/java/org/dromara/iot/mapper/TdMeterRoomMapper.java rename to ruoyi-modules/Sis/src/main/java/org/dromara/sis/mapper/TdMeterRoomMapper.java index c0a43246..4cd678c3 100644 --- a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/mapper/TdMeterRoomMapper.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/mapper/TdMeterRoomMapper.java @@ -1,8 +1,8 @@ -package org.dromara.iot.mapper; +package org.dromara.sis.mapper; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; -import org.dromara.iot.domain.TdMeterRoom; -import org.dromara.iot.domain.vo.TdMeterRoomVo; +import org.dromara.sis.domain.TdMeterRoom; +import org.dromara.sis.domain.vo.TdMeterRoomVo; /** * 和房间的关联Mapper接口 diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/AccessControlService.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/AccessControlService.java new file mode 100644 index 00000000..60979379 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/AccessControlService.java @@ -0,0 +1,49 @@ +package org.dromara.sis.sdk.e8; + +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.sis.sdk.e8.domain.accessControl.req.CustomerAuthAddReq; +import org.dromara.sis.sdk.e8.domain.accessControl.req.RemoteOpenDoorReq; +import org.dromara.sis.sdk.e8.domain.accessControl.res.AccessRecordFindRes; +import org.dromara.sis.sdk.e8.domain.QueryDto; +import org.dromara.sis.sdk.e8.domain.accessControl.res.CustomerAuthFindRes; + +/** + * @author lsm + * @apiNote AccessControlService + * @since 2025/6/24 + */ +public interface AccessControlService { + + /** + * 远程开门 + * + * @param req 传参 + * @return Boolean + */ + Boolean remoteOpenDoor(RemoteOpenDoorReq req); + + + /** + * 获取通行记录分页列表 + * + * @param dto 传参 + * @return IPage + */ + TableDataInfo getPageAccessRecordList(QueryDto dto); + + /** + * 人员授权 + * + * @param req 传参 + * @return Boolean + */ + Boolean addCustomerAuth(CustomerAuthAddReq req); + + /** + * 获取人员权限分页列表 + * + * @param dto 传参 + * @return TableDataInfo + */ + TableDataInfo getPageCustomerAuth(QueryDto dto); +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/CustomerService.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/CustomerService.java new file mode 100644 index 00000000..164b1f38 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/CustomerService.java @@ -0,0 +1,57 @@ +package org.dromara.sis.sdk.e8; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.dromara.sis.sdk.e8.domain.QueryDto; +import org.dromara.sis.sdk.e8.domain.custom.req.CustomAddReq; +import org.dromara.sis.sdk.e8.domain.custom.req.CustomFindReq; +import org.dromara.sis.sdk.e8.domain.custom.req.CustomUpdateReq; +import org.dromara.sis.sdk.e8.domain.custom.res.CustomAddRes; +import org.dromara.sis.sdk.e8.domain.custom.res.CustomFindRes; + +/** + * @author lsm + * @apiNote CustomerService + * @since 2025/6/23 + */ +public interface CustomerService { + + /** + * 查询单个人员信息 + * + * @param findReq 传参 + * @return CustomFindRes + */ + CustomFindRes findCustomer(CustomFindReq findReq); + + /** + * 人员信息分页查询 + * + * @param dto 传参 + * @return IPage + */ + IPage findCustomerList(QueryDto dto); + + /** + * 新增人员信息 + * + * @param addReq 传参 + * @return CustomAddRes + */ + CustomAddRes addCustomer(CustomAddReq addReq); + + /** + * 人员信息修改 + * + * @param updateReq 传参 + * @return Boolean + */ + Boolean updateCustomer(CustomUpdateReq updateReq); + + /** + * 删除人员信息 + * + * @param id 传参 + * @return Boolean + */ + Boolean deleteCustomer(Long id); +} diff --git a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/service/e8/api/base/DoorDeviceService.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/DoorDeviceService.java similarity index 61% rename from ruoyi-modules/Iot/src/main/java/org/dromara/iot/service/e8/api/base/DoorDeviceService.java rename to ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/DoorDeviceService.java index 76901684..aa70d856 100644 --- a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/service/e8/api/base/DoorDeviceService.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/DoorDeviceService.java @@ -1,11 +1,11 @@ -package org.dromara.iot.service.e8.api.base; +package org.dromara.sis.sdk.e8; -import com.baomidou.mybatisplus.core.metadata.IPage; -import org.dromara.iot.service.e8.model.DoorDevice.req.DoorDeviceAddReq; -import org.dromara.iot.service.e8.model.DoorDevice.req.DoorDeviceUpdateReq; -import org.dromara.iot.service.e8.model.DoorDevice.res.DoorDeviceAddRes; -import org.dromara.iot.service.e8.model.DoorDevice.res.DoorDeviceFindRes; -import org.dromara.iot.service.e8.model.QueryDto; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.sis.sdk.e8.domain.door.req.DoorDeviceAddReq; +import org.dromara.sis.sdk.e8.domain.door.req.DoorDeviceUpdateReq; +import org.dromara.sis.sdk.e8.domain.door.res.DoorDeviceAddRes; +import org.dromara.sis.sdk.e8.domain.door.res.DoorDeviceFindRes; +import org.dromara.sis.sdk.e8.domain.QueryDto; /** * @author lsm @@ -28,7 +28,7 @@ public interface DoorDeviceService { * @param dto 入参 * @return IPage */ - IPage findDoorDeviceList(QueryDto dto); + TableDataInfo findDoorDeviceList(QueryDto dto); /** * 新增门禁信息 @@ -42,7 +42,7 @@ public interface DoorDeviceService { * 门禁信息修改 * * @param updateReq 入参 - * @return Boolean + * @return DoorDeviceUpdateRes */ Boolean updateDoorDevice(DoorDeviceUpdateReq updateReq); diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/LiftService.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/LiftService.java new file mode 100644 index 00000000..1045d092 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/LiftService.java @@ -0,0 +1,56 @@ +package org.dromara.sis.sdk.e8; + + +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.dromara.sis.sdk.e8.domain.QueryDto; +import org.dromara.sis.sdk.e8.domain.lift.req.LiftAddReq; +import org.dromara.sis.sdk.e8.domain.lift.req.LiftUpdateReq; +import org.dromara.sis.sdk.e8.domain.lift.res.LiftFindRes; + +/** + * @author zcxlsm + * @apiNote LiftService + * @since 2025/5/9 18:04 + */ +public interface LiftService { + + /** + * 电梯信息分页查询 + * + * @param dto 传参 + * @return IPage + */ + IPage getPageList(QueryDto dto); + + /** + * 查询电梯楼层 + * + * @param id 传参 + * @return LiftFindRes + */ + LiftFindRes getLiftFloor(Long id); + + /** + * 添加电梯 + * + * @param addReq 传参 + * @return Boolean + */ + Boolean addLift(LiftAddReq addReq); + + /** + * 修改电梯信息 + * + * @param updateReq 传参 + * @return Boolean + */ + Boolean updateLift(LiftUpdateReq updateReq); + + /** + * 删除电梯信息 + * + * @param id 传参 + * @return Boolean + */ + Boolean deleteLift(Integer id); +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/VoucherControlService.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/VoucherControlService.java new file mode 100644 index 00000000..0bb9f0e5 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/VoucherControlService.java @@ -0,0 +1,64 @@ +package org.dromara.sis.sdk.e8; + +import org.dromara.sis.sdk.e8.domain.voucher.req.CancelVoucherReq; +import org.dromara.sis.sdk.e8.domain.voucher.req.ChangeCardReq; +import org.dromara.sis.sdk.e8.domain.voucher.req.IssueVoucherReq; +import org.dromara.sis.sdk.e8.domain.voucher.req.OperateVoucherReq; + +import java.util.List; + +/** + * @author lsm + * @apiNote VoucherControlService + * @since 2025/6/24 + */ +public interface VoucherControlService { + + /** + * 发行凭证 + * + * @param req 凭证数据 + * @return Boolean + */ + Boolean issueVoucher(IssueVoucherReq req); + + /** + * 批量发行凭证 + * + * @param req 凭证数据 + * @return Boolean + */ + Boolean issueVoucherMany(List req); + + /** + * 操作凭证 + * + * @param req 入参 + * @return Boolean + */ + Boolean operateVoucher(OperateVoucherReq req); + + /** + * 换卡补卡 + * + * @param req 入参 + * @return Boolean + */ + Boolean changeCard(ChangeCardReq req); + + /** + * 注销人员凭证 + * + * @param req 入参 + * @return Boolean + */ + Boolean cancelVoucher(CancelVoucherReq req); + + /** + * 上传人脸 + * + * @param imageByte 入参 + * @return imageUrl 人脸图片地址 + */ + String uploadFace(byte[] imageByte); +} diff --git a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/service/e8/model/ApiResp.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/ApiResp.java similarity index 93% rename from ruoyi-modules/Iot/src/main/java/org/dromara/iot/service/e8/model/ApiResp.java rename to ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/ApiResp.java index 5d85b476..7a9adb21 100644 --- a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/service/e8/model/ApiResp.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/ApiResp.java @@ -1,4 +1,4 @@ -package org.dromara.iot.service.e8.model; +package org.dromara.sis.sdk.e8.domain; import lombok.AllArgsConstructor; import lombok.Data; diff --git a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/service/e8/model/QueryDto.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/QueryDto.java similarity index 88% rename from ruoyi-modules/Iot/src/main/java/org/dromara/iot/service/e8/model/QueryDto.java rename to ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/QueryDto.java index 1f3fa60d..90113810 100644 --- a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/service/e8/model/QueryDto.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/QueryDto.java @@ -1,4 +1,4 @@ -package org.dromara.iot.service.e8.model; +package org.dromara.sis.sdk.e8.domain; import lombok.Data; diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/accesscontrol/req/AccessRecordFindReq.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/accesscontrol/req/AccessRecordFindReq.java new file mode 100644 index 00000000..3cabd92c --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/accesscontrol/req/AccessRecordFindReq.java @@ -0,0 +1,60 @@ +package org.dromara.sis.sdk.e8.domain.accessControl.req; + +import lombok.Data; + +/** + * @author lsm + * @apiNote AccessRecordFindReq + * @since 2025/5/27 15:08 + */ +@Data +public class AccessRecordFindReq { + + /** + * 是否脱敏 true脱敏,敏感信息加***隐藏;false完整显示 + */ + private Boolean isViewFullData; + + /** + * 开始时间 + */ + private String startTime; + + /** + * 结束时间 + */ + private String endTime; + + /** + * 人员姓名 + */ + private String customerName; + + /** + * 人员手机号码 + */ + private String tel; + + /** + * 组织ID + */ + private Long orgId; + + /** + * 门ID + */ + private Long doorId; + + /** + * 设备ID + */ + private Long deviceId; + + /** + * 通行记录类型 0:未知 1:卡开门 2:人脸开门 3:指纹开门 4:密码开门 5:按钮开门 6:条码开门 7:多卡开门 8:密码开门 9:蓝牙开门 10:身份证开门 + * 11:二维码开门 12:远程开门 13:卡呼梯 14:卡乘梯 15:密码呼梯 16:密码乘梯 17:指纹呼梯 18:指纹乘梯 19:人脸呼梯 20:人脸乘梯 + * 21:二维码呼梯 22:二维码乘梯 23:扫码呼梯 24:扫码乘梯 25:蓝牙呼梯 26:远程呼梯 27:远程授权 + */ + private Integer recordType; + +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/accesscontrol/req/CustomerAuthAddReq.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/accesscontrol/req/CustomerAuthAddReq.java new file mode 100644 index 00000000..9d7c66cb --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/accesscontrol/req/CustomerAuthAddReq.java @@ -0,0 +1,112 @@ +package org.dromara.sis.sdk.e8.domain.accessControl.req; + +import lombok.Data; + +import java.util.List; + +/** + * @author lsm + * @apiNote CustomerAuthAddReq + * @since 2025/6/25 + */ +@Data +public class CustomerAuthAddReq { + + /** + * 门禁授权类型 0:人员 + */ + private Integer authType; + + /** + * 时区ID + */ + private Long scheduleId; + + /** + * 人员ID集合 + */ + private List personIds; + + /** + * 授权数据 + */ + private List authData; + + /** + * 开始时间 + */ + private String startTime; + + /** + * 结束时间 + */ + private String endTime; + + /** + * 授权日期类型 0:默认 1:一月 2:半年 3:一年 4:三年 5:永久 + */ + private Integer dateType; + + @Data + public static class AuthGroupData { + + /** + * 门/电梯ID + */ + private Long id; + + /** + * 类型 0:门 1:电梯 + */ + private Integer type; + + /** + * 出入口类型 0:未知 1:入口 2:出口 + */ + private Integer gatewayType; + + /** + * 楼层 + */ + private List floors; + } + + @Data + public static class Floor { + + /** + * 楼层权限标识 + */ + private Long floorId; + + /** + * 楼层名称 + */ + private String floorName; + + /** + * 是否前门可用 + */ + private Boolean isFrontDoor; + + /** + * 是否后门可用 + */ + private Boolean isBackDoor; + + /** + * 是否选择前门 + */ + private Boolean isSelectFrontDoor; + + /** + * 是否选择后门 + */ + private Boolean isSelectBackDoor; + + /** + * 是否公共门 + */ + private Boolean isCommonFloor; + } +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/accesscontrol/req/CustomerAuthFindReq.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/accesscontrol/req/CustomerAuthFindReq.java new file mode 100644 index 00000000..637f16a5 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/accesscontrol/req/CustomerAuthFindReq.java @@ -0,0 +1,52 @@ +package org.dromara.sis.sdk.e8.domain.accessControl.req; + +import lombok.Data; + +/** + * @author lsm + * @apiNote CustomerAuthFindReq + * @since 2025/6/25 + */ +@Data +public class CustomerAuthFindReq { + + /** + * 是否脱敏 true脱敏,敏感信息加***隐藏;false完整显示; + */ + private Boolean isViewFullData; + + /** + * 客户编号 + */ + private String customerNo; + + /** + * 客户姓名 + */ + private String customerName; + + /** + * 客户手机号码 + */ + private String customerMobile; + + /** + * 组织ID + */ + private Long organId; + + /** + * 门/电梯ID + */ + private Long itemId; + + /** + * 授权开始时间 + */ + private String authStartTime; + + /** + * 授权结束时间 + */ + private String authEndTime; +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/accesscontrol/req/RemoteOpenDoorReq.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/accesscontrol/req/RemoteOpenDoorReq.java new file mode 100644 index 00000000..c4b98512 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/accesscontrol/req/RemoteOpenDoorReq.java @@ -0,0 +1,48 @@ +package org.dromara.sis.sdk.e8.domain.accessControl.req; + +import lombok.Data; + +import java.util.List; + +/** + * @author lsm + * @apiNote RemoteOpenDoorReq + * @since 2025/5/27 15:02 + */ +@Data +public class RemoteOpenDoorReq { + + /** + * 门操作类型 0:开门 1:关门 2:常开 3:常闭 4:取消常开 5:取消常闭 6:取消报警 + */ + private Integer type; + + /** + * 原因 + */ + private String reason; + + /** + * 操作人ID + */ + private Long operatorId; + + /** + * 门操作数据 + */ + private List controlList; + + @Data + public static class ControlData { + + /** + * 门ID + */ + private Long doorId; + + /** + * 设备ID + */ + private Long deviceId; + } +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/accesscontrol/res/AccessRecordFindRes.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/accesscontrol/res/AccessRecordFindRes.java new file mode 100644 index 00000000..4d92ba1f --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/accesscontrol/res/AccessRecordFindRes.java @@ -0,0 +1,245 @@ +package org.dromara.sis.sdk.e8.domain.accessControl.res; + +import lombok.Data; + +import java.util.Date; + +/** + * @author lsm + * @apiNote AccessRecordFindRes + * @since 2025/5/27 15:12 + */ +@Data +public class AccessRecordFindRes { + + /** + * 主键 + */ + private Long id; + + /** + * 记录ID + */ + private String recordId; + + /** + * 设备ID + */ + private Long deviceId; + + /** + * 设备编号 + */ + private Integer devNo; + + /** + * 设备名称 + */ + private String deviceName; + + /** + * 门ID + */ + private Long doorId; + + /** + * 门名称 + */ + private String doorName; + + /** + * 设备类型(例如:1102-车场控制机,205-辅机等) + */ + private Integer deviceType; + + /** + * 分控ID + */ + private Long deviceSubId; + + /** + * 读头ID + */ + private Long readerId; + + /** + * 读头名称 + */ + private String readerName; + + /** + * 出入口类型(0-未知,1-入口,2-出口) + */ + private Integer gatewayType; + + /** + * 区域ID + */ + private Long areaId; + + /** + * 区域名称 + */ + private String areaName; + + /** + * 客户ID + */ + private Long customerId; + + /** + * 客户编号 + */ + private String customerNo; + + /** + * 客户名称 + */ + private String customerName; + + /** + * 客户名称(备用字段) + */ + private String customerName1; + + /** + * 客户手机号 + */ + private String customerTel; + + /** + * 客户手机号(备用字段) + */ + private String customerTel1; + + /** + * 组织ID + */ + private String organIds; + + /** + * 组织全路径 + */ + private String organFullPath; + + /** + * 卡类别(例如:34-普通用户卡,35-胁迫卡等) + */ + private Integer cardType; + + /** + * 凭证编号 + */ + private String idno; + + /** + * 凭证类型(例如:10-MF1-A卡,20-个人密码等) + */ + private Integer voucherType; + + /** + * 凭证模式(0-ID卡模式,1-IC卡模式等) + */ + private Integer voucherMode; + + /** + * 图片地址 + */ + private String pictureUrl; + + /** + * 监控图片地址 + */ + private String monitorPictureUrl; + + /** + * 视频地址 + */ + private String videoUrl; + + /** + * 通行记录类型(例如:1-卡开门,2-人脸开门等) + */ + private Integer recordType; + + /** + * 是否脱机记录(0-否,1-是) + */ + private Integer offineFlag; + + /** + * 通行时间 + */ + private Date actionTime; + + /** + * 添加时间 + */ + private Date addTime; + + /** + * 扩展字段 + */ + private String extend; + + /** + * 体温 + */ + private Double temperature; + + /** + * 健康状态(0-未知,1-正常,2-异常) + */ + private Integer healthCodeStatus; + + /** + * 设备类型描述 + */ + private String deviceTypeDesc; + + /** + * 出入口类型描述 + */ + private String gatewayTypeDesc; + + /** + * 凭证类型描述 + */ + private String voucherTypeDesc; + + /** + * 凭证模式描述 + */ + private String voucherModeDesc; + + /** + * 卡类描述 + */ + private String cardTypeDesc; + + /** + * 记录类型描述 + */ + private String recordTypeDesc; + + /** + * 体温描述 + */ + private String temperatureDesc; + + /** + * 健康码状态描述 + */ + private String healthCodeStatusDesc; + + /** + * 人脸凭证地址 + */ + private String voucherUrl; + + /** + * 是否显示敏感信息(true-隐藏,false-显示) + */ + private Boolean isViewFullData; + +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/accesscontrol/res/CustomerAuthFindRes.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/accesscontrol/res/CustomerAuthFindRes.java new file mode 100644 index 00000000..0828a586 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/accesscontrol/res/CustomerAuthFindRes.java @@ -0,0 +1,210 @@ +package org.dromara.sis.sdk.e8.domain.accessControl.res; + +import lombok.Data; + +import java.util.Date; +import java.util.List; + +/** + * @author lsm + * @apiNote CustomerAuthFindRes + * @since 2025/6/25 + */ +@Data +public class CustomerAuthFindRes { + + /** + * 主键 + */ + private Long id; + + /** + * 创建时间 + */ + private Date creationTime; + + /** + * 创建人 + */ + private String creatorId; + + /** + * 最后修改时间 + */ + private Date lastModificationTime; + + /** + * 最后修改人 + */ + private String lastModifierId; + + /** + * 是否删除 + */ + private Boolean isDeleted; + + /** + * 删除人 + */ + private String deleterId; + + /** + * 删除时间 + */ + private Date deletionTime; + + /** + * 客户ID + */ + private Long personId; + + /** + * 主设备ID + */ + private Long mainDeviceId; + + /** + * 读头ID + */ + private Long readerId; + + /** + * 组织ID + */ + private Long organId; + + /** + * 组织名称 + */ + private String orgName; + + /** + * 区域ID + */ + private Long areaId; + + /** + * 区域名称 + */ + private String areaName; + + /** + * 客户姓名 + */ + private String customerName; + + /** + * 客户编号 + */ + private String customerNo; + + /** + * 客户手机号码 + */ + private String mobile; + + /** + * 门/电梯名称 + */ + private String itemName; + + /** + * 是否显示敏感信息 true隐藏 false显示 + */ + private Boolean isViewFullData; + + /** + * 授权楼层字符串 + */ + private String content; + + /** + * 授权开始时间 + */ + private Date startTime; + + /** + * 授权结束时间 + */ + private Date endTime; + + /** + * 设施类型 0:门禁 1:电梯 + */ + private Integer facilityType; + + /** + * 时区ID + */ + private Long scheduleId; + + /** + * 时区名称 + */ + private String scheduleName; + + /** + * 授权人 + */ + private String authName; + + /** + * 授权时间段 + */ + private String duration; + + /** + * 出入口类型 0:未知 1:入口 2:出口 + */ + private Integer gatewayType; + + /** + * 出入口类型描述 + */ + private String gatewayTypeDesc; + + /** + * 授权楼层 + */ + private List floors; + + @Data + public static class Floor { + + /** + * 楼层权限标识 + */ + private Long floorId; + + /** + * 楼层名称 + */ + private String floorName; + + /** + * 是否前门可用 + */ + private Boolean isFrontDoor; + + /** + * 是否后门可用 + */ + private Boolean isBackDoor; + + /** + * 是否选择前门 + */ + private Boolean isSelectFrontDoor; + + /** + * 是否选择后门 + */ + private Boolean isSelectBackDoor; + + /** + * 是否公共门 + */ + private Boolean isCommonFloor; + } + +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/custom/req/CustomAddReq.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/custom/req/CustomAddReq.java new file mode 100644 index 00000000..fa479409 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/custom/req/CustomAddReq.java @@ -0,0 +1,309 @@ +package org.dromara.sis.sdk.e8.domain.custom.req; + +import lombok.Data; + +import java.util.List; + +/** + * @author lsm + * @apiNote CustomAddReq + * @since 2025/5/26 21:43 + */ +@Data +public class CustomAddReq { + + /** + * 人员姓名 + */ + private String name; + + /** + * 证件类型,0身份证,1驾驶证,2工作证,100其他 + */ + private Integer identityType; + + /** + * 证件编号 + */ + private String identityNo; + + /** + * 籍贯 + */ + private String hometown; + + /** + * 生日 + */ + private String birthday; + + /** + * 地址 + */ + private String address; + + /** + * 性别,0女,1男 + */ + private Integer gender; + + /** + * 职务 + */ + private String duty; + + /** + * 房号 + */ + private String roomNo; + + /** + * 入职时间 + */ + private String enterTime; + + /** + * 手机号 + */ + private String mobile; + + /** + * 邮箱 + */ + private String email; + + /** + * 紧急联系人 + */ + private String emergencyContact; + + /** + * 紧急联系人电话 + */ + private String emergencyContactPhone; + + /** + * 备注 + */ + private String remark; + + /** + * 区域全路径(多个以;分割,层级以|分割) + */ + private String areaFullPath; + + /** + * 组织ID(以;分隔) + */ + private String areaIds; + + /** + * 组织全路径(多个以;分割,层级以|分割) + */ + private String organFullPath; + + /** + * 组织ID(以;分隔) + */ + private String organIds; + + /** + * 客户明细 + */ + private CustomerDetail detail; + + /** + * 车牌号 + */ + private String carNos; + + /** + * 人员图片 + */ + private String image; + + /** + * 指纹索引,0-9,0-左手大拇指,4-左手小指,……,9-右手小指 + */ + private String fingerNo; + + /** + * 指纹信息 多个以“;分隔” + */ + private String fingerData; + + /** + * 绑定车辆信息 + */ + private List vehicleInfos; + + /** + * 相关联区域 + */ + private List relAreas; + + /** + * 是否特殊车牌 + */ + private Boolean isSpecialPlate; + + /** + * 车辆信息· + */ + @Data + public static class Vehicle { + + /** + * 用户id + */ + private Long customerId; + + /** + * 车牌号 + */ + private String plateNO; + + /** + * 车牌颜色,0其他,1蓝牌,2黄牌,3白牌,4黑牌,5绿牌,6黄绿牌 + */ + private Integer plateColor; + + /** + * 车辆类型0小型车,1大型车,2其它,3摩托车 + */ + private Integer type; + + /** + * 品牌 + */ + private String carLogo; + } + + /** + * 人员明细 + */ + @Data + public static class CustomerDetail { + + /** + * 客户Id + */ + private Long customerId; + + /** + * 工号 + */ + private String workNo; + + /** + * 最高学历,0未知,1小学,2初中,3高中,4大学专科,5大学本科,6硕士研究生,7博士研究生 + */ + private Integer education; + + /** + * 毕业学校 + */ + private String school; + + /** + * 专业 + */ + private String master; + + /** + * 政治面貌 + */ + private String politics; + + /** + * 婚姻状况 + */ + private Integer marriage; + + /** + * QQ + */ + private String qq; + + /** + * 微信 + */ + private String wechat; + + /** + * 驾驶证号 + */ + private String driverLicense; + + /** + * 是否忽略反潜回(1:是;0:否) + */ + private Integer isIgnoreEntryBack; + + /** + * 是否忽略门时区(1:是;0:否) + */ + private Integer isIgnoreDoorSchedule; + + /** + * 是否忽略互锁(1:是;0:否) + */ + private Integer isIgnoreLock; + + /** + * 是否忽略报警(1:是;0:否) + */ + private Integer isIgnoreAlarm; + + /** + * 是否发行卡凭证(0:未录入;1:未发行;2:已发行) + */ + private Integer isIssue; + + /** + * 是否忽略人时区(1:是;0:否) + */ + private Integer isIgnorePersonSchedule; + + /** + * 是否黑名单人员(1:是;0:否) + */ + private Integer isBlacklist; + } + + /** + * 相关联的区域 + */ + @Data + public static class RelatedArea { + /** + * 区域id + */ + private Long areaId; + + /** + * 区域名称 + */ + private String areaName; + + /** + * 用户类型 0业主,1家属,2租客,3员工,4企业主,11职员,12临时人员,13户主,14外部人员,100其他人员 + */ + private Integer userType; + + /** + * 区域类型 0区域,1楼栋,2,房屋,3门,4楼层 + */ + private Integer areaType; + + /** + * 区域类型描述 + */ + private String areaTypeDesc; + + /** + * 区域编号 + */ + private String areaNo; + } +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/custom/req/CustomFindReq.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/custom/req/CustomFindReq.java new file mode 100644 index 00000000..292d011f --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/custom/req/CustomFindReq.java @@ -0,0 +1,75 @@ +package org.dromara.sis.sdk.e8.domain.custom.req; + +import lombok.Data; + +import java.util.List; + +/** + * @author lsm + * @apiNote CustomFindReq + * @since 2025/5/26 20:14 + */ + +@Data +public class CustomFindReq { + + /** + * 是否脱敏 true脱敏,敏感信息加***隐藏;false完整显示 + */ + private Boolean isViewFullData; + + /** + * 人员ID + */ + private Long customerId; + + /** + * 人员编号 + */ + private String no; + + /** + * 人员姓名 + */ + private String name; + + /** + * 所属区域id + */ + private Long areaId; + + /** + * 手机号 + */ + private String mobileNo; + + /** + * 组织id列表 + */ + private List orgIds; + + /** + * 人员姓名/编号/手机号 模糊查询 + */ + private String matchString; + + /** + * 人员是否添加凭证 为true时筛选有凭证的人员 + */ + private Boolean isHasVoucher; + + /** + * 需要排除的人员id列表 + */ + private List exceptIds; + + /** + * 完整手机号精确查找 + */ + private String fullMobile; + + /** + * 人员是否在多人开门组 + */ + private Boolean isFilterMoreGroup; +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/custom/req/CustomUpdateReq.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/custom/req/CustomUpdateReq.java new file mode 100644 index 00000000..e5322431 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/custom/req/CustomUpdateReq.java @@ -0,0 +1,329 @@ +package org.dromara.sis.sdk.e8.domain.custom.req; + +import lombok.Data; + +import java.util.List; + +/** + * @author lsm + * @apiNote : CustomUpdateReq + * @since 2025/5/27 10:11 + */ +@Data +public class CustomUpdateReq { + + /** + * 人员id + */ + private Long id; + + /** + * 人员编号 + */ + private String no; + + /** + * 人员姓名 + */ + private String name; + + /** + * 证件类型,0身份证,1驾驶证,2工作证,100其他 + */ + private Integer identityType; + + /** + * 证件编号 + */ + private String identityNo; + + /** + * 籍贯 + */ + private String hometown; + + /** + * 生日 + */ + private String birthday; + + /** + * 地址 + */ + private String address; + + /** + * 性别,0女,1男 + */ + private Integer gender; + + /** + * 职务 + */ + private String duty; + + /** + * 房号 + */ + private String roomNo; + + /** + * 入职时间 + */ + private String enterTime; + + /** + * 手机号 + */ + private String mobile; + + /** + * 邮箱 + */ + private String email; + + /** + * 紧急联系人 + */ + private String emergencyContact; + + /** + * 紧急联系人电话 + */ + private String emergencyContactPhone; + + /** + * 备注 + */ + private String remark; + + /** + * 区域全路径(多个以;分割,层级以|分割) + */ + private String areaFullPath; + + /** + * 组织ID(以;分隔) + */ + private String areaIds; + + /** + * 组织全路径(多个以;分割,层级以|分割) + */ + private String organFullPath; + + /** + * 组织ID(以;分隔) + */ + private String organIds; + + /** + * 客户明细 + */ + private CustomerDetail detail; + + /** + * 车牌号 + */ + private String carNos; + + /** + * 人员图片 + */ + private String image; + + /** + * 指纹索引,0-9,0-左手大拇指,4-左手小指,……,9-右手小指 + */ + private String fingerNo; + + /** + * 指纹信息 多个以“;分隔” + */ + private String fingerData; + + /** + * 绑定车辆信息 + */ + private List vehicleInfos; + + /** + * 相关联区域 + */ + private List relAreas; + + /** + * 是否特殊车牌 + */ + private Boolean isSpecialPlate; + + /** + * 人员明细 + */ + @Data + public static class CustomerDetail { + + /** + * 主键 + */ + private Long id; + + /** + * 客户Id + */ + private Long customerId; + + /** + * 工号 + */ + private String workNo; + + /** + * 最高学历,0未知,1小学,2初中,3高中,4大学专科,5大学本科,6硕士研究生,7博士研究生 + */ + private Integer education; + + /** + * 毕业学校 + */ + private String school; + + /** + * 专业 + */ + private String master; + + /** + * 政治面貌 + */ + private String politics; + + /** + * 婚姻状况 + */ + private Integer marriage; + + /** + * QQ + */ + private String qq; + + /** + * 微信 + */ + private String wechat; + + /** + * 驾驶证号 + */ + private String driverLicense; + + /** + * 是否忽略反潜回(1:是;0:否) + */ + private Integer isIgnoreEntryBack; + + /** + * 是否忽略门时区(1:是;0:否) + */ + private Integer isIgnoreDoorSchedule; + + /** + * 是否忽略互锁(1:是;0:否) + */ + private Integer isIgnoreLock; + + /** + * 是否忽略报警(1:是;0:否) + */ + private Integer isIgnoreAlarm; + + /** + * 是否发行卡凭证(0:未录入;1:未发行;2:已发行) + */ + private Integer isIssue; + + /** + * 是否忽略人时区(1:是;0:否) + */ + private Integer isIgnorePersonSchedule; + + /** + * 是否黑名单人员(1:是;0:否) + */ + private Integer isBlacklist; + } + + /** + * 车辆信息· + */ + @Data + public static class Vehicle { + + /** + * 主键 + */ + private Long id; + + /** + * 用户id + */ + private Long customerId; + + /** + * 车牌号 + */ + private String plateNO; + + /** + * 车牌颜色,0其他,1蓝牌,2黄牌,3白牌,4黑牌,5绿牌,6黄绿牌 + */ + private Integer plateColor; + + /** + * 车辆类型0小型车,1大型车,2其它,3摩托车 + */ + private Integer type; + + /** + * 品牌 + */ + private String carLogo; + } + + /** + * 相关联的区域 + */ + @Data + public static class RelatedArea { + /** + * 区域id + */ + private Long areaId; + + /** + * 区域名称 + */ + private String areaName; + + /** + * 用户类型 0业主,1家属,2租客,3员工,4企业主,11职员,12临时人员,13户主,14外部人员,100其他人员 + */ + private Integer userType; + + /** + * 区域类型 0区域,1楼栋,2,房屋,3门,4楼层 + */ + private Integer areaType; + + /** + * 区域类型描述 + */ + private String areaTypeDesc; + + /** + * 区域编号 + */ + private String areaNo; + } +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/custom/res/CustomAddRes.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/custom/res/CustomAddRes.java new file mode 100644 index 00000000..5245b7c2 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/custom/res/CustomAddRes.java @@ -0,0 +1,72 @@ +package org.dromara.sis.sdk.e8.domain.custom.res; + +import lombok.Data; + +/** + * @apiNote CustomAddRes + * @author lsm + * @since 2025/6/24 +*/ +@Data +public class CustomAddRes { + /** + * id + */ + private Long id; + /** + * 人员编号 + */ + private String no; + /** + * 人员姓名 + */ + private String name; + /** + * 证件类型,0身份证,1驾驶证,2工作证,100其他 + */ + private Object identityType; + /** + * 证件号 + */ + private String identityNo; + /** + * 籍贯 + */ + private String hometown; + /** + * 生日 + */ + private Object birthday; + /** + * 地址 + */ + private String address; + /** + * 性别,0女,1男 + */ + private Integer gender; + /** + * 手机号 + */ + private String mobile; + /** + * 邮箱 + */ + private String email; + /** + * 紧急联系人 + */ + private String emergencyContact; + /** + * 紧急联系人电话 + */ + private String emergencyContactPhone; + /** + * 备注 + */ + private String remark; + /** + * isViewFullData + */ + private Boolean isViewFullData; +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/custom/res/CustomFindRes.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/custom/res/CustomFindRes.java new file mode 100644 index 00000000..3bf23398 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/custom/res/CustomFindRes.java @@ -0,0 +1,490 @@ +package org.dromara.sis.sdk.e8.domain.custom.res; + + +import lombok.Data; +import org.dromara.sis.sdk.e8.domain.enums.AreaTypeEnum; +import org.dromara.sis.sdk.e8.domain.enums.UserTypeEnum; + +import java.util.List; + +/** + * @author lsm + * @apiNote CustomFindRes + * @since 2025/5/26 20:34 + */ +@Data +public class CustomFindRes { + + /** + * 人员id + */ + private Long id; + + /** + * 创建时间 + */ + private String creationTime; + + /** + * 创建者id(uuid) + */ + private String creatorId; + + /** + * 最后修改时间 + */ + private String lastModificationTime; + + /** + * 最后修改者id(uuid) + */ + private String lastModifierId; + + /** + * 是否删除 + */ + private Boolean isDeleted; + + /** + * 删除者id(uuid) + */ + private String deleterId; + + /** + * 删除时间 + */ + private String deletionTime; + + /** + * 人员编号 + */ + private String no; + + /** + * 人员姓名 + */ + private String name; + + /** + * 证件类型,0身份证,1驾驶证,2工作证,100其他 + */ + private Integer identityType; + + /** + * 证件类型名 + */ + private String identityTypeName; + + /** + * 证件编号 + */ + private String identityNo; + + /** + * 籍贯 + */ + private String hometown; + + /** + * 生日 + */ + private String birthday; + + /** + * 地址 + */ + private String address; + + /** + * 性别,0女,1男 + */ + private Integer gender; + + /** + * 性别名称 + */ + private String genderName; + + /** + * 职务 + */ + private String duty; + + /** + * 组织名称 + */ + private String orgName; + + /** + * 区域名称 + */ + private String areaName; + + /** + * 绑定车辆信息 + */ + private List tempCars; + + /** + * 房号 + */ + private String roomNo; + + /** + * 入职时间 + */ + private String enterTime; + + /** + * 手机号 + */ + private String mobile; + + /** + * 邮箱 + */ + private String email; + + /** + * 紧急联系人 + */ + private String emergencyContact; + + /** + * 紧急联系人电话 + */ + private String emergencyContactPhone; + + /** + * 箱号 + */ + private String crateName; + + /** + * 备注 + */ + private String remark; + + /** + * 客户明细 + */ + private CustomerDetail detail; + + /** + * 区域全路径(多个以;分割,层级以|分割) + */ + private String areaFullPath; + + /** + * 区域全路径(多个以;分割,层级以|分割) + */ + private String areaIds; + + /** + * 组织ID(以;分隔) + */ + private String organFullPath; + + /** + * 组织ID(以;分隔) + */ + private String organIds; + + /** + * 凭证信息 + */ + private String voucherInfos; + + /** + * 人员图片 + */ + private String image; + + /** + * 人员图片地址 + */ + private String imageUrl; + + /** + * 指纹索引,0-9,0-左手大拇指,4-左手小指,……,9-右手小指 + */ + private String fingerNo; + + /** + * 指纹信息 多个以“;分隔” + */ + private String fingerData; + + /** + * 是否在黑名单 1:是 0:否 + */ + private Integer isBlacklist; + + /** + * 相关联区域 + */ + private List relAreas; + + /** + * 线上id + */ + private String onlineId; + + /** + * 车牌号 + */ + private String carNos; + + /** + * 是否特殊车牌 + */ + private boolean isSpecialPlate; + + /** + * 是否脱敏 true脱敏,敏感信息加***隐藏;false完整显示 + */ + private boolean isViewFullData; + + /** + * 车辆信息· + */ + @Data + public static class Vehicle { + /** + * 车辆id + */ + private Long id; + + /** + * 创建时间 + */ + private String creationTime; + + /** + * 创建者id(uuid) + */ + private String creatorId; + + /** + * 最后修改时间 + */ + private String lastModificationTime; + + /** + * 最后修改者id(uuid) + */ + private String lastModifierId; + + /** + * 是否删除 + */ + private Boolean isDeleted; + + /** + * 删除者id(uuid) + */ + private String deleterId; + + /** + * 删除时间 + */ + private String deletionTime; + + /** + * 用户id + */ + private Long customerId; + + /** + * 车牌号 + */ + private String plateNO; + + /** + * 车牌颜色,0其他,1蓝牌,2黄牌,3白牌,4黑牌,5绿牌,6黄绿牌 + */ + private Integer plateColor; + + /** + * 车辆类型0小型车,1大型车,2其它,3摩托车 + */ + private Integer type; + + /** + * 车辆状态 + */ + private Integer status; + + /** + * 品牌 + */ + private String carLogo; + } + + /** + * 人员明细 + */ + @Data + public static class CustomerDetail { + /** + * 客户明细id + */ + private Long id; + + /** + * 创建时间 + */ + private String creationTime; + + /** + * 创建者id(uuid) + */ + private String creatorId; + + /** + * 最后修改时间 + */ + private String lastModificationTime; + + /** + * 最后修改者id(uuid) + */ + private String lastModifierId; + + /** + * 是否删除 + */ + private boolean isDeleted; + + /** + * 删除者id(uuid) + */ + private String deleterId; + + /** + * 删除时间 + */ + private String deletionTime; + + /** + * 客户Id + */ + private Integer customerId; + + /** + * 工号 + */ + private String workNo; + + /** + * 最高学历,0未知,1小学,2初中,3高中,4大学专科,5大学本科,6硕士研究生,7博士研究生 + */ + private Integer education; + + /** + * 毕业学校 + */ + private String school; + + /** + * 专业 + */ + private String master; + + /** + * 政治面貌 + */ + private String politics; + + /** + * 婚姻状况 + */ + private Integer marriage; + + /** + * QQ + */ + private String qq; + + /** + * 微信 + */ + private String wechat; + + /** + * 驾驶证号 + */ + private String driverLicense; + + /** + * 是否忽略反潜回(1:是;0:否) + */ + private Integer isIgnoreEntryBack; + + /** + * 是否忽略门时区(1:是;0:否) + */ + private Integer isIgnoreDoorSchedule; + + /** + * 是否忽略互锁(1:是;0:否) + */ + private Integer isIgnoreLock; + + /** + * 是否忽略报警(1:是;0:否) + */ + private Integer isIgnoreAlarm; + + /** + * 是否发行卡凭证(0:未录入;1:未发行;2:已发行) + */ + private Integer isIssue; + + /** + * 是否忽略人时区(1:是;0:否) + */ + private Integer isIgnorePersonSchedule; + + /** + * 是否黑名单人员(1:是;0:否) + */ + private Integer isBlacklist; + } + + /** + * 相关联的区域 + */ + @Data + public static class RelatedArea { + /** + * 区域id + */ + private Long areaId; + + /** + * 区域名称 + */ + private String areaName; + + /** + * 用户类型 + */ + private UserTypeEnum userType; + + /** + * 区域类型 + */ + private AreaTypeEnum areaType; + + /** + * 区域类型描述 + */ + private String areaTypeDesc; + + /** + * 区域编号 + */ + private String areaNo; + } +} diff --git a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/service/e8/model/DoorDevice/req/DoorDeviceAddReq.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/door/req/DoorDeviceAddReq.java similarity index 97% rename from ruoyi-modules/Iot/src/main/java/org/dromara/iot/service/e8/model/DoorDevice/req/DoorDeviceAddReq.java rename to ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/door/req/DoorDeviceAddReq.java index 9bdfecf7..b2e66904 100644 --- a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/service/e8/model/DoorDevice/req/DoorDeviceAddReq.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/door/req/DoorDeviceAddReq.java @@ -1,4 +1,4 @@ -package org.dromara.iot.service.e8.model.DoorDevice.req; +package org.dromara.sis.sdk.e8.domain.door.req; import lombok.Data; diff --git a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/service/e8/model/DoorDevice/req/DoorDeviceFindReq.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/door/req/DoorDeviceFindReq.java similarity index 93% rename from ruoyi-modules/Iot/src/main/java/org/dromara/iot/service/e8/model/DoorDevice/req/DoorDeviceFindReq.java rename to ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/door/req/DoorDeviceFindReq.java index 0b60a579..839df533 100644 --- a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/service/e8/model/DoorDevice/req/DoorDeviceFindReq.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/door/req/DoorDeviceFindReq.java @@ -1,4 +1,4 @@ -package org.dromara.iot.service.e8.model.DoorDevice.req; +package org.dromara.sis.sdk.e8.domain.door.req; import lombok.Data; diff --git a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/service/e8/model/DoorDevice/req/DoorDeviceUpdateReq.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/door/req/DoorDeviceUpdateReq.java similarity index 97% rename from ruoyi-modules/Iot/src/main/java/org/dromara/iot/service/e8/model/DoorDevice/req/DoorDeviceUpdateReq.java rename to ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/door/req/DoorDeviceUpdateReq.java index e90ea0b2..ed01e07e 100644 --- a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/service/e8/model/DoorDevice/req/DoorDeviceUpdateReq.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/door/req/DoorDeviceUpdateReq.java @@ -1,4 +1,4 @@ -package org.dromara.iot.service.e8.model.DoorDevice.req; +package org.dromara.sis.sdk.e8.domain.door.req; import lombok.Data; diff --git a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/service/e8/model/DoorDevice/res/DoorDeviceAddRes.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/door/res/DoorDeviceAddRes.java similarity index 98% rename from ruoyi-modules/Iot/src/main/java/org/dromara/iot/service/e8/model/DoorDevice/res/DoorDeviceAddRes.java rename to ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/door/res/DoorDeviceAddRes.java index e800ceae..c106a8ba 100644 --- a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/service/e8/model/DoorDevice/res/DoorDeviceAddRes.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/door/res/DoorDeviceAddRes.java @@ -1,4 +1,4 @@ -package org.dromara.iot.service.e8.model.DoorDevice.res; +package org.dromara.sis.sdk.e8.domain.door.res; import lombok.Data; diff --git a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/service/e8/model/DoorDevice/res/DoorDeviceFindRes.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/door/res/DoorDeviceFindRes.java similarity index 98% rename from ruoyi-modules/Iot/src/main/java/org/dromara/iot/service/e8/model/DoorDevice/res/DoorDeviceFindRes.java rename to ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/door/res/DoorDeviceFindRes.java index 93db8ebe..64d3324a 100644 --- a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/service/e8/model/DoorDevice/res/DoorDeviceFindRes.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/door/res/DoorDeviceFindRes.java @@ -1,4 +1,4 @@ -package org.dromara.iot.service.e8.model.DoorDevice.res; +package org.dromara.sis.sdk.e8.domain.door.res; import lombok.Data; diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/door/res/DoorDeviceUpdateRes.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/door/res/DoorDeviceUpdateRes.java new file mode 100644 index 00000000..d9efb131 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/door/res/DoorDeviceUpdateRes.java @@ -0,0 +1,198 @@ +package org.dromara.sis.sdk.e8.domain.door.res; + +import lombok.Data; + +import java.util.List; + +/** + * @author lsm + * @apiNote DoorDeviceUpdateRes + * @since 2025/6/23 + */ +@Data +public class DoorDeviceUpdateRes { + /** + * 设备ID + */ + private Long id; + /** + * 创建时间 + */ + private String creationTime; + /** + * 创建者ID + */ + private String creatorId; + /** + * 修改时间 + */ + private String lastModificationTime; + /** + * 修改者ID + */ + private String lastModifierId; + /** + * 是否删除 + */ + private Boolean isDeleted; + /** + * 删除者ID + */ + private String deleterId; + /** + * 删除时间 + */ + private String deletionTime; + /** + * 设备编号 + */ + private String no; + /** + * 设备编号编码 + */ + private Integer noCode; + /** + * cloudId + */ + private String cloudId; + /** + * name + */ + private String name; + /** + * 父级设备名称 + */ + private String parentName; + /** + * 父级设备ID,默认0 + */ + private Integer parentId; + /** + * 管理机IP + */ + private String masterIp; + /** + * 设备IP + */ + private String ip; + /** + * 设备端口 + */ + private Long port; + /** + * 设备MAC + */ + private String mac; + /** + * 子网掩码 + */ + private String netMask; + /** + * 设备网关 + */ + private String gatewayIP; + /** + * 设备产品线类型 0:车行 1:车位 2:人行 + */ + private Integer productType; + /** + * 设备类型 + */ + private Long type; + /** + * 设备类型描述 + */ + private String typeDescription; + /** + * 业务逻辑设备类型 + */ + private Integer logicType; + /** + * 设备型号 + */ + private Integer model; + /** + * 设备型号描述 + */ + private String modelDescription; + /** + * 机号 + */ + private String modelName; + /** + * 设备序列号 + */ + private String sn; + /** + * 设备CPUID + */ + private String cpuID; + /** + * 设备在线状态 0:离线 1:在线 2:未知 + */ + private Integer status; + /** + * 设备在线状态描述 + */ + private String statusDescription; + /** + * 机号 + */ + private String macNo; + /** + * 蓝牙地址 + */ + private String bluetoothAddr; + /** + * 设备层级 + */ + private Integer deviceLevel; + /** + * 父级设备路径 默认空 + */ + private String parentIdPath; + /** + * 是否需要升级 + */ + private Boolean isNeedUpgrade; + /** + * 项目ID + */ + private Integer projectId; + /** + * 创建者 + */ + private String creatorName; + /** + * 关联门 + */ + private String relDoors; + /** + * int32 出入口类型 0:未知 1:入口 2:出口 + */ + private Integer gatewayType; + /** + * 出入口类型 + */ + private String gatewayTypeDesc; + /** + * 备注 + */ + private String remark; + /** + * 设备通讯方式 0:TCP/IP 1:RS485 + */ + private Integer commType; + /** + * 工单号(设备搜索) + */ + private String projectNumber; + /** + * 固件版本信息(设备搜索) + */ + private String version; + /** + * 子设备列表 + */ + private List childList; +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/enums/AreaTypeEnum.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/enums/AreaTypeEnum.java new file mode 100644 index 00000000..97d9ee0d --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/enums/AreaTypeEnum.java @@ -0,0 +1,45 @@ +package org.dromara.sis.sdk.e8.domain.enums; + +/** + * @author lsm + * @apiNote AreaTypeEnum + * @since 2025/5/26 21:22 + */ +public enum AreaTypeEnum { + // 枚举值,括号中是对应的编号和描述 + REGION(0, "区域"), + BUILDING(1, "楼栋"), + HOUSE(2, "房屋"), + DOOR(3, "门"), + FLOOR(4, "楼层"); + + // 定义私有变量,用于存储编号和描述 + private final int code; + private final String description; + + // 构造方法,用于初始化每个枚举值的编号和描述 + AreaTypeEnum(int code, String description) { + this.code = code; + this.description = description; + } + + // 获取编号的方法 + public int getCode() { + return code; + } + + // 获取描述的方法 + public String getDescription() { + return description; + } + + // 根据编号获取对应的枚举值 + public static AreaTypeEnum getByCode(int code) { + for (AreaTypeEnum areaType : AreaTypeEnum.values()) { + if (areaType.getCode() == code) { + return areaType; + } + } + return null; // 如果没有找到匹配的编号,返回 null + } +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/enums/UserTypeEnum.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/enums/UserTypeEnum.java new file mode 100644 index 00000000..747ebb87 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/enums/UserTypeEnum.java @@ -0,0 +1,50 @@ +package org.dromara.sis.sdk.e8.domain.enums; + +/** + * @author zcxlsm + * @apiNote UserEnumType + * @since 2025/5/26 21:16 + */ +public enum UserTypeEnum { + // 枚举值,括号中是对应的编号和描述 + OWNER(0, "业主"), + FAMILY_MEMBER(1, "家属"), + TENANT(2, "租客"), + EMPLOYEE(3, "员工"), + BUSINESS_OWNER(4, "企业主"), + STAFF(11, "职员"), + TEMPORARY_PERSONNEL(12, "临时人员"), + HOUSEHOLD_HEAD(13, "户主"), + EXTERNAL_PERSONNEL(14, "外部人员"), + OTHER_PERSONNEL(100, "其他人员"); + + // 定义私有变量,用于存储编号和描述 + private final int code; + private final String description; + + // 构造方法,用于初始化每个枚举值的编号和描述 + UserTypeEnum(int code, String description) { + this.code = code; + this.description = description; + } + + // 获取编号的方法 + public int getCode() { + return code; + } + + // 获取描述的方法 + public String getDescription() { + return description; + } + + // 根据编号获取对应的枚举值 + public static UserTypeEnum getByCode(int code) { + for (UserTypeEnum userType : UserTypeEnum.values()) { + if (userType.getCode() == code) { + return userType; + } + } + return null; // 如果没有找到匹配的编号,返回 null + } +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/lift/req/LiftAddReq.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/lift/req/LiftAddReq.java new file mode 100644 index 00000000..0752a0d8 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/lift/req/LiftAddReq.java @@ -0,0 +1,27 @@ +package org.dromara.sis.sdk.e8.domain.lift.req; + +import lombok.Data; + +/** + * @author lsm + * @apiNote LiftAddReq + * @since 2025/5/27 11:47 + */ +@Data +public class LiftAddReq { + + /** + * 名称 + */ + private String name; + + /** + * 区域ID + */ + private Long areaId; + + /** + * 备注 + */ + private String remark; +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/lift/req/LiftFindReq.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/lift/req/LiftFindReq.java new file mode 100644 index 00000000..cd3ee778 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/lift/req/LiftFindReq.java @@ -0,0 +1,41 @@ +package org.dromara.sis.sdk.e8.domain.lift.req; + +import lombok.Data; + +/** + * @author lsm + * @apiNote LiftFindReq + * @since 2025/5/27 11:30 + */ +@Data +public class LiftFindReq { + /** + * 主键 + */ + private Long id; + + /** + * 是否脱敏 true脱敏,敏感信息加***隐藏;false完整显示; + */ + private Boolean isViewFullData; + + /** + * 电梯名称 + */ + private String name; + + /** + * 类型 0:单开 1:双开 + */ + private Integer type; + + /** + * 脱离原因 0:人工脱离 1:消防脱离 + */ + private Integer reason; + + /** + * 上级区域ID + */ + private Long parentId; +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/lift/req/LiftUpdateReq.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/lift/req/LiftUpdateReq.java new file mode 100644 index 00000000..fbbe19ef --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/lift/req/LiftUpdateReq.java @@ -0,0 +1,33 @@ +package org.dromara.sis.sdk.e8.domain.lift.req; + +import lombok.Data; + +/** + * @author lsm + * @apiNote LiftUpdateReq + * @since 2025/5/27 11:54 + */ +@Data +public class LiftUpdateReq { + + /** + * 主键 + */ + private Long id; + + /** + * 名称 + */ + private String name; + + /** + * 区域ID + */ + private Long areaId; + + /** + * 备注 + */ + private String remark; + +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/lift/res/LiftAddRes.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/lift/res/LiftAddRes.java new file mode 100644 index 00000000..ffc9b7dd --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/lift/res/LiftAddRes.java @@ -0,0 +1,9 @@ +package org.dromara.sis.sdk.e8.domain.lift.res; + +/** + * @author lsm + * @apiNote LiftAddRes + * @since 2025/6/24 + */ +public class LiftAddRes { +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/lift/res/LiftFindRes.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/lift/res/LiftFindRes.java new file mode 100644 index 00000000..a0ce42fe --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/lift/res/LiftFindRes.java @@ -0,0 +1,177 @@ +package org.dromara.sis.sdk.e8.domain.lift.res; + +import lombok.Data; + +import java.util.List; + +/** + * @author zcxlsm + * @apiNote LiftFindRes + * @since 2025/5/27 11:33 + */ +@Data +public class LiftFindRes { + /** + * 主键 + */ + private Long id; + + /** + * 创建时间 + */ + private String creationTime; + + /** + * 创建人 + */ + private String creatorId; + + /** + * 最后修改时间 + */ + private String lastModificationTime; + + /** + * 最后修改人 + */ + private String lastModifierId; + + /** + * 是否删除 + */ + private Boolean isDeleted; + + /** + * 删除人 + */ + private String deleterId; + + /** + * 删除时间 + */ + private String deletionTime; + + /** + * 电梯编号 + */ + private String code; + + /** + * 电梯名称 + */ + private String name; + + /** + * 所属区域Id + */ + private Long areaId; + + /** + * 区域名称 + */ + private String areaName; + + /** + * 绑定设备ID + */ + private Long deviceId; + + /** + * 设备名称 + */ + private String deviceName; + + /** + * 最高楼层限制 + */ + private Integer maxFloorNum; + + /** + * 类型 0:单开 1:多开 + */ + private Integer type; + + /** + * 状态 0:正常 1:脱离 + */ + private Integer status; + + /** + * 脱离原因 + */ + private String reason; + + /** + * 备注 + */ + private String remark; + + /** + * 创建人名称 + */ + private String creatorName; + + /** + * 楼层集合 + */ + private List floorList; + + /** + * 线上ID + */ + private String onlineId; + + @Data + public static class ManElevatorFloorsDto { + + /** + * 电梯Id + */ + private Long elevatorId; + + /** + * 楼层权限标识 + */ + private Long floorId; + + /** + * 楼层名称 + */ + private String floorName; + + /** + * 是否前门 + */ + private boolean isFrontDoor; + + /** + * 是否后门 + */ + private boolean isBackDoor; + + /** + * 是否公共楼层 + */ + private boolean isCommonFloor; + + /** + * 轿厢二维码 + */ + private String outSideCallqrCode; + + /** + * 是否选择前门 + */ + private boolean isSelectFrontDoor; + + /** + * 是否选择后门 + */ + private boolean isSelectBackDoor; + + /** + * 楼层按键值 + */ + private Long floorCode; + } +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/voucher/req/CancelVoucherReq.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/voucher/req/CancelVoucherReq.java new file mode 100644 index 00000000..cbf178eb --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/voucher/req/CancelVoucherReq.java @@ -0,0 +1,16 @@ +package org.dromara.sis.sdk.e8.domain.voucher.req; + +import lombok.Data; + +import java.util.List; + +/** + * @author lsm + * @apiNote CancelVoucherReq + * @since 2025/6/25 + */ +@Data +public class CancelVoucherReq { + + private List ids; +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/voucher/req/ChangeCardReq.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/voucher/req/ChangeCardReq.java new file mode 100644 index 00000000..a846f9b8 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/voucher/req/ChangeCardReq.java @@ -0,0 +1,39 @@ +package org.dromara.sis.sdk.e8.domain.voucher.req; + +import lombok.Data; + +/** + * @author lsm + * @apiNote ChangeCardReq + * @since 2025/6/25 + */ +@Data +public class ChangeCardReq { + /** + * origVoucherId int64 Y 原凭证ID + * idno string Y 物理卡号 + * remark string N 备注 + * personID int64 Y 人员ID + */ + + /** + * 原凭证ID + */ + private Long origVoucherId; + + /** + * 物理卡号 + */ + private String idno; + + /** + * 备注 + */ + private String remark; + + /** + * 人员ID + */ + private Long personID; + +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/voucher/req/IssueVoucherReq.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/voucher/req/IssueVoucherReq.java new file mode 100644 index 00000000..9bd444a6 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/voucher/req/IssueVoucherReq.java @@ -0,0 +1,69 @@ +package org.dromara.sis.sdk.e8.domain.voucher.req; + +import lombok.Data; + +/** + * @author lsm + * @apiNote IssueVoucher + * @since 2025/6/25 + */ +@Data +public class IssueVoucherReq { + + /** + * 物理卡号 + */ + private String idno; + + /** + * 密码 + */ + private String password; + + /** + * 凭证类型 10:MF1-A卡 11:MF1-B卡 12:MF1卡(ID) 20:个人密码 40:条码、纸票 50:指纹 60:身份证号码 70:人脸 80:虚拟卡 110:蓝牙卡 21:管理密码 22:胁迫密码 + */ + private Integer voucherType; + + /** + * 客户ID + */ + private Long personID; + + /** + * 开始日期 + */ + private String startTime; + + /** + * 结束日期 + */ + private String endTime; + + /** + * 图片地址 + */ + private String txtData; + + /** + * 指纹数据 + */ + private String blobData; + + /** + * 指纹编号 + */ + private String fingerNo; + + /** + * 卡类别 34:普通用户卡 35:胁迫卡 36:保安卡 40:临时卡 41:中级用户卡 48:高级用户卡 49:高级管理卡(注:41、48、49仅适用于分体式门禁) + */ + private Integer cardType; + + /** + * 凭证模式 0:ID卡模式 1:IC卡模式 3:CPU卡模式 + */ + private Integer voucherMode; + + +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/voucher/req/OperateVoucherReq.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/voucher/req/OperateVoucherReq.java new file mode 100644 index 00000000..8acd2284 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/voucher/req/OperateVoucherReq.java @@ -0,0 +1,29 @@ +package org.dromara.sis.sdk.e8.domain.voucher.req; + +import lombok.Data; + +import java.util.List; + +/** + * @author lsm + * @apiNote OperateVoucherReq + * @since 2025/6/25 + */ +@Data +public class OperateVoucherReq { + + /** + * 凭证ID集合 + */ + private List ids; + + /** + * 凭证操作类型 4:冻结 5:解冻 6:注销 7:挂失 8:解挂 + */ + private Integer type; + + /** + * 原因 (必填) + */ + private String reason; +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/impl/AccessControlServiceImpl.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/impl/AccessControlServiceImpl.java new file mode 100644 index 00000000..ff58738e --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/impl/AccessControlServiceImpl.java @@ -0,0 +1,162 @@ +package org.dromara.sis.sdk.e8.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.lang.TypeReference; +import cn.hutool.json.JSONUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.sis.sdk.e8.AccessControlService; +import org.dromara.sis.sdk.e8.domain.accessControl.req.AccessRecordFindReq; +import org.dromara.sis.sdk.e8.domain.accessControl.req.CustomerAuthAddReq; +import org.dromara.sis.sdk.e8.domain.accessControl.req.CustomerAuthFindReq; +import org.dromara.sis.sdk.e8.domain.accessControl.req.RemoteOpenDoorReq; +import org.dromara.sis.sdk.e8.domain.accessControl.res.AccessRecordFindRes; +import org.dromara.sis.sdk.e8.domain.ApiResp; +import org.dromara.sis.sdk.e8.domain.QueryDto; +import org.dromara.sis.sdk.e8.domain.accessControl.res.CustomerAuthFindRes; +import org.dromara.sis.sdk.e8.utils.E8ApiUtil; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.Map; + +/** + * @author lsm + * @apiNote AccessControlServiceImpl + * @since 2025/6/24 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class AccessControlServiceImpl implements AccessControlService { + + // 远程开门 + private static final String REMOTE_OPEN_DOOR = "/api/E8Door/man-device-info/device-control"; + + // 获取通行记录分页列表 + private static final String GET_PAGE_ACCESS_RECORD_PAGE_LIST = "/api/E8Door/man-pass-record/get-page-list"; + + // 人员授权 + private static final String PERSON_AUTHORIZATION = "/api/E8Door/man-auth-info/auth-info-by-type"; + + // 获取人员权限分页列表 + private static final String GET_PAGE_PERSON_AUTHORIZATION_PAGE_LIST = "/api/E8Door/man-person-device-finally/get-page-list"; + + + private final E8ApiUtil e8ApiUtil; + + /** + * 远程开门 + * + * @param req 入参 + * @return Boolean + */ + @Override + public Boolean remoteOpenDoor(RemoteOpenDoorReq req) { + // 将RemoteOpenDoorReq转为Map对象,以便作为API请求的参数 + Map params = BeanUtil.beanToMap(req); + + // 调用第三方API进行开门操作,传入处理后的参数和指定的API端点 + ApiResp apiResp = e8ApiUtil.doPost(params, REMOTE_OPEN_DOOR); + + if (!apiResp.getSuccess()) log.error("调用E8远程开门失败,errorMsg:{}", apiResp); + + // 返回API调用是否成功的结果 + return apiResp.getSuccess(); + } + + /** + * 获取通行记录分页列表 + * + * @param dto 传参 + * @return IPage + */ + @Override + public TableDataInfo getPageAccessRecordList(QueryDto dto) { + // 创建一个参数映射,用于存储API请求的参数 + Map params = new HashMap<>(); + // 将分页索引和最大结果数放入参数映射中 + params.put("pageIndex", dto.getPageIndex()); + params.put("maxResultCount", dto.getMaxResultCount()); + // 将查询DTO转换为JSON字符串,再转换为Map对象,然后放入参数映射中 + params.put("queryDto", JSONUtil.toBean(JSONUtil.toJsonStr(dto.getQueryDto()), AccessRecordFindReq.class)); + + // 调用API工具类的POST方法,传入参数和API路径,获取API响应对象 + ApiResp apiResp = e8ApiUtil.doPost(params, GET_PAGE_ACCESS_RECORD_PAGE_LIST); + // 如果API响应不成功,则返回null + if (!apiResp.getSuccess()) { + log.error("调用E8获取通行记录分页列表失败,errorMsg:{}", apiResp); + return null; + } + // 将API响应的结果转换为JSON字符串,再转换为Map对象 + Map result = JSONUtil.toBean(JSONUtil.toJsonStr(apiResp.getResult()), new TypeReference<>() { + }, false); + // 创建一个分页对象,传入分页索引和最大结果数 + TableDataInfo tableData = new TableDataInfo<>(); + // 从结果映射中获取总记录数,转换为长整型后设置到分页对象中 + tableData.setTotal(Long.parseLong(result.get("total").toString())); + // 从结果映射中获取项目列表,转换为访问记录信息列表后设置到分页对象中 + tableData.setRows(JSONUtil.toList(JSONUtil.toJsonStr(result.get("item")), AccessRecordFindRes.class)); + // 返回填充了数据的分页对象 + return tableData; + } + + /** + * 人员授权 + * + * @param req 传参 + * @return Boolean + */ + @Override + public Boolean addCustomerAuth(CustomerAuthAddReq req) { + // 创建一个参数映射,用于存储API请求的参数 + Map params = BeanUtil.beanToMap(req); + + // 调用API工具类的POST方法,传入参数和API路径,获取API响应对象 + ApiResp apiResp = e8ApiUtil.doPost(params, PERSON_AUTHORIZATION); + + if (!apiResp.getSuccess()) log.error("调用E8人员授权失败,errorMsg:{}", apiResp); + + // 返回API调用是否成功 + return apiResp.getSuccess(); + } + + /** + * 获取人员权限分页列表 + * + * @param dto 传参 + * @return TableDataInfo + */ + @Override + public TableDataInfo getPageCustomerAuth(QueryDto dto) { + // 创建一个参数映射,用于存储API请求的参数 + Map params = new HashMap<>(); + // 将分页索引和最大结果数放入参数映射中 + params.put("pageIndex", dto.getPageIndex()); + params.put("maxResultCount", dto.getMaxResultCount()); + // 将查询DTO转换为JSON字符串,再转换为Map对象,然后放入参数映射中 + params.put("queryDto", JSONUtil.toBean(JSONUtil.toJsonStr(dto.getQueryDto()), CustomerAuthFindReq.class)); + + // 调用API工具类的POST方法,传入参数和API路径,获取API响应对象 + ApiResp apiResp = e8ApiUtil.doPost(params, GET_PAGE_PERSON_AUTHORIZATION_PAGE_LIST); + // 如果API响应不成功,则返回null + if (!apiResp.getSuccess()) { + log.error("调用E8获取人员权限分页列表失败,errorMsg:{}", apiResp); + return null; + } + + // 将API响应的结果转换为JSON字符串,再转换为Map对象 + Map result = JSONUtil.toBean(JSONUtil.toJsonStr(apiResp.getResult()), new TypeReference<>() { + }, false); + // 创建一个分页对象,传入分页索引和最大结果数 + TableDataInfo tableData = new TableDataInfo<>(); + // 从结果映射中获取总记录数,转换为长整型后设置到分页对象中 + tableData.setTotal(Long.parseLong(result.get("total").toString())); + // 从结果映射中获取项目列表,转换为访问记录信息列表后设置到分页对象中 + tableData.setRows(JSONUtil.toList(JSONUtil.toJsonStr(result.get("item")), CustomerAuthFindRes.class)); + // 返回填充了数据的分页对象 + return tableData; + } + +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/impl/CustomerServiceImpl.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/impl/CustomerServiceImpl.java new file mode 100644 index 00000000..37e0053b --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/impl/CustomerServiceImpl.java @@ -0,0 +1,174 @@ +package org.dromara.sis.sdk.e8.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.lang.TypeReference; +import cn.hutool.json.JSONUtil; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.dromara.sis.sdk.e8.CustomerService; +import org.dromara.sis.sdk.e8.domain.ApiResp; +import org.dromara.sis.sdk.e8.domain.QueryDto; +import org.dromara.sis.sdk.e8.domain.custom.req.CustomAddReq; +import org.dromara.sis.sdk.e8.domain.custom.req.CustomFindReq; +import org.dromara.sis.sdk.e8.domain.custom.req.CustomUpdateReq; +import org.dromara.sis.sdk.e8.domain.custom.res.CustomAddRes; +import org.dromara.sis.sdk.e8.domain.custom.res.CustomFindRes; +import org.dromara.sis.sdk.e8.utils.E8ApiUtil; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.Map; + +/** + * @author lsm + * @apiNote CustomerServiceImpl + * @since 2025/6/23 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class CustomerServiceImpl implements CustomerService { + private final static String CUSTOMER_GET_PAGE_LIST = "/api/E8/customer/get-page-list"; + private final static String CUSTOMER_GET_FIRST_OR_DEFAULT = "/api/E8/customer/get-first-or-default"; + private final static String CUSTOMER_CREATE = "/api/E8/customer"; + private final static String CUSTOMER_UPDATE = "/api/E8/customer/{id}/update"; + private final static String CUSTOMER_DELETE = "/api/E8/customer/{id}"; + + + private final E8ApiUtil e8ApiUtil; + + /** + * 查询单个人员信息 + * + * @param findReq 传参 + * @return CustomerInfo + */ + @Override + public CustomFindRes findCustomer(CustomFindReq findReq) { + // 将查询请求对象转换为参数映射 + Map params = BeanUtil.beanToMap(findReq); + + // 调用API接口获取客户信息 + ApiResp apiResp = e8ApiUtil.doPost(params, CUSTOMER_GET_FIRST_OR_DEFAULT); + + // 检查API调用是否成功 + if (!apiResp.getSuccess()) { + log.error("E8查询人员信息失败 errorMsg:{}", apiResp); + // 如果API调用失败,返回null + return null; + } + + // 将API响应结果转换为CustomFindRes对象并返回 + return JSONUtil.toBean(JSONUtil.toJsonStr(apiResp.getResult()), CustomFindRes.class); + } + + /** + * 人员信息分页查询 + * + * @param dto 传参 + * @return IPage + */ + @Override + public IPage findCustomerList(QueryDto dto) { + // 创建参数映射,用于存储HTTP请求的参数 + Map params = new HashMap<>(); + // 添加分页参数:当前页码和最大结果数量 + params.put("pageIndex", dto.getPageIndex()); + params.put("maxResultCount", dto.getMaxResultCount()); + // 将查询条件对象转换为JSON字符串,并再次转换为Map对象,然后添加到参数映射中 + params.put("queryDto", JSONUtil.toBean(JSONUtil.toJsonStr(dto.getQueryDto()), CustomFindReq.class)); + + // 调用API工具类的POST方法,发送请求到第三方API,并获取响应结果 + ApiResp apiResp = e8ApiUtil.doPost(params, CUSTOMER_GET_PAGE_LIST); + + + if (!apiResp.getSuccess()) { + log.error("E8人员信息分页查询 errorMsg:{}", apiResp); + // 如果API响应不成功,返回null + return null; + } + + // 将API响应结果转换为Map对象,以便于后续处理 + Map result = JSONUtil.toBean(JSONUtil.toJsonStr(apiResp.getResult()), new TypeReference<>() { + }, false); + // 创建一个分页对象,用于存储客户信息列表和分页数据 + IPage pageInfo = new Page<>(dto.getPageIndex(), dto.getMaxResultCount()); + // 设置总记录数 + pageInfo.setTotal(Long.parseLong(result.get("total").toString())); + // 将API响应结果中的客户信息列表转换为CustomFindRes对象列表,并设置到分页对象中 + pageInfo.setRecords(JSONUtil.toList(JSONUtil.toJsonStr(result.get("item")), CustomFindRes.class)); + + // 返回分页对象 + return pageInfo; + } + + /** + * 新增人员信息 + * + * @param addReq 传参 + * @return Boolean + */ + @Override + public CustomAddRes addCustomer(CustomAddReq addReq) { + // 将添加请求对象转换为Map对象,以便后续API调用 + Map params = BeanUtil.beanToMap(addReq); + + // 执行客户创建API调用,并获取API响应对象 + ApiResp apiResp = e8ApiUtil.doPost(params, CUSTOMER_CREATE); + + // 检查API调用是否成功 + if (!apiResp.getSuccess()) { + log.error("E8新增人员信息失败 errorMsg:{}", apiResp); + // 如果API调用失败,返回null + return null; + } + + // 返回API调用是否成功的标志 + return JSONUtil.toBean(JSONUtil.toJsonStr(apiResp.getResult()), CustomAddRes.class); + } + + /** + * 人员信息修改 + * + * @param updateReq 传参 + * @return Boolean + */ + @Override + public Boolean updateCustomer(CustomUpdateReq updateReq) { + // 根据更新请求构建API URL + String api = CUSTOMER_UPDATE.replace("{id}", updateReq.getId().toString()); + + // 将更新请求对象转换为Map,以便后续API调用 + Map params = BeanUtil.beanToMap(updateReq); + + // 调用API工具类发送POST请求,并获取API响应对象 + ApiResp apiResp = e8ApiUtil.doPost(params, api); + + if (!apiResp.getSuccess()) log.error("E8人员信息修改失败 errorMsg:{}", apiResp); + + // 返回API调用是否成功的标志 + return apiResp.getSuccess(); + } + + /** + * 删除人员信息 + * + * @param id 传参 + * @return Boolean + */ + @Override + public Boolean deleteCustomer(Long id) { + // 构造删除客户的API请求URL + String api = CUSTOMER_DELETE.replace("{id}", id.toString()); + + // 调用API工具类的 doGetOrDel 方法发送GET或DELETE请求,并获取响应结果 + ApiResp apiResp = e8ApiUtil.doGetOrDel(api, null, true); + + if (!apiResp.getSuccess()) log.error("E8删除人员信息失败 errorMsg:{}", apiResp); + + // 返回API请求是否成功的标志 + return apiResp.getSuccess(); + } +} diff --git a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/service/e8/api/base/impl/DoorDeviceServiceImpl.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/impl/DoorDeviceServiceImpl.java similarity index 75% rename from ruoyi-modules/Iot/src/main/java/org/dromara/iot/service/e8/api/base/impl/DoorDeviceServiceImpl.java rename to ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/impl/DoorDeviceServiceImpl.java index c45efebe..060151cb 100644 --- a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/service/e8/api/base/impl/DoorDeviceServiceImpl.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/impl/DoorDeviceServiceImpl.java @@ -1,23 +1,22 @@ -package org.dromara.iot.service.e8.api.base.impl; +package org.dromara.sis.sdk.e8.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.lang.TypeReference; import cn.hutool.json.JSONUtil; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.dromara.iot.service.e8.api.base.DoorDeviceService; -import org.dromara.iot.service.e8.model.ApiResp; -import org.dromara.iot.service.e8.model.DoorDevice.req.DoorDeviceAddReq; -import org.dromara.iot.service.e8.model.DoorDevice.req.DoorDeviceFindReq; -import org.dromara.iot.service.e8.model.DoorDevice.req.DoorDeviceUpdateReq; -import org.dromara.iot.service.e8.model.DoorDevice.res.DoorDeviceAddRes; -import org.dromara.iot.service.e8.model.DoorDevice.res.DoorDeviceFindRes; -import org.dromara.iot.service.e8.model.QueryDto; -import org.dromara.iot.service.e8.utils.E8ApiUtil; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.sis.sdk.e8.DoorDeviceService; +import org.dromara.sis.sdk.e8.domain.ApiResp; +import org.dromara.sis.sdk.e8.domain.door.req.DoorDeviceAddReq; +import org.dromara.sis.sdk.e8.domain.door.req.DoorDeviceFindReq; +import org.dromara.sis.sdk.e8.domain.door.req.DoorDeviceUpdateReq; +import org.dromara.sis.sdk.e8.domain.door.res.DoorDeviceAddRes; +import org.dromara.sis.sdk.e8.domain.door.res.DoorDeviceFindRes; +import org.dromara.sis.sdk.e8.domain.QueryDto; +import org.dromara.sis.sdk.e8.utils.E8ApiUtil; import org.springframework.stereotype.Service; -import javax.annotation.Resource; import java.util.HashMap; import java.util.Map; @@ -28,6 +27,7 @@ import java.util.Map; */ @Slf4j @Service +@RequiredArgsConstructor public class DoorDeviceServiceImpl implements DoorDeviceService { private final static String DOOR_DEVICE_GET_PAGE_LIST = "/api/e8door/man-device-info/get-page-list"; @@ -36,8 +36,8 @@ public class DoorDeviceServiceImpl implements DoorDeviceService { private final static String DOOR_DEVICE_UPDATE = "/api/E8Door/man-device-info/{id}/update"; private final static String DOOR_DEVICE_DELETE = "/api/E8Door/man-device-info/{id}"; - @Resource - private E8ApiUtil e8ApiUtil; + + private final E8ApiUtil e8ApiUtil; /** * 查询门禁信息 @@ -56,7 +56,7 @@ public class DoorDeviceServiceImpl implements DoorDeviceService { // 检查API响应是否成功 if (!apiResp.getSuccess()) { - log.debug("查询E8门禁信息失败 msg:{}", apiResp); + log.error("查询E8门禁信息失败 errorMsg:{}", apiResp); // 如果响应不成功,则返回null return null; } @@ -72,7 +72,7 @@ public class DoorDeviceServiceImpl implements DoorDeviceService { * @return IPage */ @Override - public IPage findDoorDeviceList(QueryDto dto) { + public TableDataInfo findDoorDeviceList(QueryDto dto) { // 创建一个参数映射,用于存储API请求所需的参数 Map params = new HashMap<>(); // 将分页索引和最大结果数放入参数映射中 @@ -84,27 +84,23 @@ public class DoorDeviceServiceImpl implements DoorDeviceService { // 调用第三方API,获取门禁设备分页列表 ApiResp apiResp = e8ApiUtil.doPost(params, DOOR_DEVICE_GET_PAGE_LIST); - log.info("apiResp:{}", apiResp); - // 如果API调用不成功,则返回null if (!apiResp.getSuccess()) { - log.debug("分页查询E8门禁信息失败 msg:{}", apiResp); + log.error("分页查询E8门禁信息失败 errorMsg:{}", apiResp); + // 如果响应不成功,则返回null return null; } - - // 将API响应结果转换为Map对象,以便后续处理 Map result = JSONUtil.toBean(JSONUtil.toJsonStr(apiResp.getResult()), new TypeReference<>() { }, false); // 创建一个分页对象,用于存储处理后的门禁设备信息 - IPage page = new Page<>(dto.getPageIndex(), dto.getMaxResultCount()); + TableDataInfo tableDataInfo = new TableDataInfo<>(); // 设置分页对象的总记录数 - page.setTotal(Long.parseLong(result.get("total").toString())); + tableDataInfo.setTotal(Long.parseLong(result.get("total").toString())); // 将API响应结果中的门禁设备信息列表转换为DoorDeviceFindRes对象列表,并设置到分页对象中 - page.setRecords(JSONUtil.toList(JSONUtil.toJsonStr(result.get("item")), DoorDeviceFindRes.class)); - + tableDataInfo.setRows(JSONUtil.toList(JSONUtil.toJsonStr(result.get("item")), DoorDeviceFindRes.class)); // 返回处理后的分页对象 - return page; + return tableDataInfo; } /** @@ -122,7 +118,8 @@ public class DoorDeviceServiceImpl implements DoorDeviceService { ApiResp apiResp = e8ApiUtil.doPost(params, DOOR_DEVICE_CREATE); if (!apiResp.getSuccess()) { - log.info("新增E8门禁信息,msg:{}", apiResp); + log.error("新增E8门禁信息,errorMsg:{}", apiResp); + // 如果响应不成功,则返回null return null; } @@ -133,7 +130,7 @@ public class DoorDeviceServiceImpl implements DoorDeviceService { * 门禁信息修改 * * @param updateReq 传参 - * @return Boolean + * @return DoorDeviceUpdateRes */ @Override public Boolean updateDoorDevice(DoorDeviceUpdateReq updateReq) { @@ -147,7 +144,8 @@ public class DoorDeviceServiceImpl implements DoorDeviceService { // 调用API进行门设备信息更新 ApiResp apiResp = e8ApiUtil.doPost(params, api); - // 返回API调用是否成功的结果 + if (!apiResp.getSuccess()) log.error("修改E8门禁信息,errorMsg:{}", apiResp); + return apiResp.getSuccess(); } @@ -166,6 +164,8 @@ public class DoorDeviceServiceImpl implements DoorDeviceService { // 调用E8 API工具类进行HTTP DELETE请求,参数为构造的API路径和null(因为DELETE请求通常不需要请求体) ApiResp apiResp = e8ApiUtil.doGetOrDel(api, null, true); + if (!apiResp.getSuccess()) log.error("删除E8门禁信息,errorMsg:{}", apiResp); + // 返回API响应的成功标志 return apiResp.getSuccess(); } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/impl/LiftServiceImpl.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/impl/LiftServiceImpl.java new file mode 100644 index 00000000..079c5165 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/impl/LiftServiceImpl.java @@ -0,0 +1,161 @@ +package org.dromara.sis.sdk.e8.impl; + + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.lang.TypeReference; +import cn.hutool.json.JSONUtil; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.dubbo.config.annotation.DubboService; +import org.dromara.sis.sdk.e8.LiftService; +import org.dromara.sis.sdk.e8.domain.ApiResp; +import org.dromara.sis.sdk.e8.domain.QueryDto; +import org.dromara.sis.sdk.e8.domain.lift.req.LiftAddReq; +import org.dromara.sis.sdk.e8.domain.lift.req.LiftFindReq; +import org.dromara.sis.sdk.e8.domain.lift.req.LiftUpdateReq; +import org.dromara.sis.sdk.e8.domain.lift.res.LiftFindRes; +import org.dromara.sis.sdk.e8.utils.E8ApiUtil; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.Map; + +/** + * @author lsm + * @apiNote LiftServiceImpl + * @since 2025/5/9 11:52 + */ +@Service +@DubboService +public class LiftServiceImpl implements LiftService { + + private static final String GET_PAGE_LIST = "/api/E8Door/man-elevator-management/get-page-list"; + private static final String GET_LIFT_FLOOR = "/api/E8Door/man-elevator-management/{id}/get-man-elevator-floors"; + private static final String LIFT_ADD = "/api/E8Door/man-elevator-management"; + private static final String LIFT_UPDATE = "/api/E8Door/man-elevator-management/{id}/update"; + private static final String LIFT_DELETE = "/api/E8Door/man-elevator-management/{id}"; + + @Resource + private E8ApiUtil e8ApiUtil; + + /** + * 电梯信息分页查询 + * + * @param dto 传参 + * @return IPage + */ + @Override + public IPage getPageList(QueryDto dto) { + // 创建一个参数映射,用于存储API请求所需的参数 + Map params = new HashMap<>(); + // 将分页索引和最大结果数放入参数映射中 + params.put("pageIndex", dto.getPageIndex()); + params.put("maxResultCount", dto.getMaxResultCount()); + // 将查询DTO转换为LiftInfo对象,并将其添加到参数映射中 + params.put("queryDto", JSONUtil.toBean(JSONUtil.toJsonStr(dto.getQueryDto()), LiftFindReq.class)); + + // 调用E8 API工具类的POST方法,传入参数和API路径,获取API响应 + ApiResp apiResp = e8ApiUtil.doPost(params, GET_PAGE_LIST); + // 如果API响应不成功,则返回null + if (!apiResp.getSuccess()) { + return null; + } + + // 将API响应的结果转换为一个Map对象 + Map result = JSONUtil.toBean(JSONUtil.toJsonStr(apiResp.getResult()), new TypeReference<>() { + }, false); + // 创建一个分页对象,传入分页索引和最大结果数 + IPage page = new Page<>(dto.getPageIndex(), dto.getMaxResultCount()); + // 设置分页对象的总记录数 + page.setTotal(Long.parseLong(result.get("total").toString())); + // 将结果中的项转换为LiftFindRes列表,并设置为分页对象的记录 + page.setRecords(JSONUtil.toList(JSONUtil.toJsonStr(result.get("item")), LiftFindRes.class)); + + // 返回填充了数据的分页对象 + return page; + } + + /** + * 查询电梯楼层 + * + * @param id 传参 + * @return LiftFindRes + */ + @Override + public LiftFindRes getLiftFloor(Long id) { + + // 构造请求URL,其中{id}将被liftInfo的ID替换 + String url = GET_LIFT_FLOOR.replace("{id}", id.toString()); + + // 调用API接口,获取电梯信息 + ApiResp apiResp = e8ApiUtil.doPost(null, url); + // 如果API调用不成功,则返回null + if (!apiResp.getSuccess()) { + return null; + } + + // 将API响应结果转换为LiftFindRes对象,并返回 + return JSONUtil.toBean(JSONUtil.toJsonStr(apiResp.getResult()), LiftFindRes.class); + } + + /** + * 添加电梯 + * + * @param addReq 传参 + * @return Boolean + */ + @Override + public Boolean addLift(LiftAddReq addReq) { + // 将添加请求对象转换为Map对象,便于后续操作 + Map params = BeanUtil.beanToMap(addReq); + + // 调用第三方API进行电梯添加操作,并获取API响应结果 + ApiResp apiResp = e8ApiUtil.doPost(params, LIFT_ADD); + + // 返回API操作是否成功的标志 + return apiResp.getSuccess(); + } + + /** + * 修改电梯信息 + * + * @param updateReq 传参 + * @return Boolean + */ + @Override + public Boolean updateLift(LiftUpdateReq updateReq) { + + // 根据LiftUpdateReq对象中的ID生成请求URL + String url = LIFT_UPDATE.replace("{id}", updateReq.getId().toString()); + + // 将LiftUpdateReq对象转换为Map类型,以便于API请求参数的处理 + Map params = BeanUtil.beanToMap(updateReq); + + // 调用E8 API进行POST请求,并返回API响应对象 + ApiResp apiResp = e8ApiUtil.doPost(params, url); + + // 返回API调用是否成功的标志 + return apiResp.getSuccess(); + } + + /** + * 删除电梯信息 + * + * @param id 传参 + * @return Boolean + */ + @Override + public Boolean deleteLift(Integer id) { + + // 构造删除电梯的API请求URL,使用id替换模板中的{id}占位符 + String url = LIFT_DELETE.replace("{id}", id.toString()); + + // 调用e8ApiUtils工具类执行DELETE请求,并获取API响应结果 + ApiResp apiResp = e8ApiUtil.doGetOrDel(url, null, true); + + // 返回API响应中的成功标志,表示删除操作是否成功 + return apiResp.getSuccess(); + } + +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/impl/VoucherControlServiceImpl.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/impl/VoucherControlServiceImpl.java new file mode 100644 index 00000000..dc39abe9 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/impl/VoucherControlServiceImpl.java @@ -0,0 +1,149 @@ +package org.dromara.sis.sdk.e8.impl; + +import cn.hutool.core.bean.BeanUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.dromara.sis.sdk.e8.VoucherControlService; +import org.dromara.sis.sdk.e8.domain.ApiResp; +import org.dromara.sis.sdk.e8.domain.voucher.req.CancelVoucherReq; +import org.dromara.sis.sdk.e8.domain.voucher.req.ChangeCardReq; +import org.dromara.sis.sdk.e8.domain.voucher.req.IssueVoucherReq; +import org.dromara.sis.sdk.e8.domain.voucher.req.OperateVoucherReq; +import org.dromara.sis.sdk.e8.utils.E8ApiUtil; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author lsm + * @apiNote VoucherControlServiceImpl + * @since 2025/6/25 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class VoucherControlServiceImpl implements VoucherControlService { + + private static final String ISSUANCE_VOUCHER = "/api/E8/voucher/issue-voucher"; + private static final String ISSUANCE_VOUCHER_MANY = "/api/E8/voucher/issue-voucher-many"; + private static final String OPERATE_VOUCHER = "/api/E8/voucher/operate-many"; + private static final String CHANGE_CARD = "/api/E8/voucher/change-card"; + private static final String CANCEL_VOUCHER = "/api/E8/voucher/cancel-voucher"; + + private final E8ApiUtil e8ApiUtil; + + /** + * 发行凭证 + * + * @param req 入参 + * @return 是否成功 + */ + @Override + public Boolean issueVoucher(IssueVoucherReq req) { + // 封装入参 + Map params = BeanUtil.beanToMap(req); + + // 调用API + ApiResp apiResp = e8ApiUtil.doPost(params, ISSUANCE_VOUCHER); + + if (!apiResp.getSuccess()) log.error("E8发行凭证失败,errorMsg:{}", apiResp); + + return apiResp.getSuccess(); + } + + /** + * 批量发行凭证 + * + * @param req 凭证数据 + * @return Boolean + */ + public Boolean issueVoucherMany(List req) { + // 封装入参 + Map params = new HashMap<>(); + params.put("", req); + + // 调用API + ApiResp apiResp = e8ApiUtil.doPost(params, ISSUANCE_VOUCHER_MANY); + + if (!apiResp.getSuccess()) log.error("E8批量发行凭证失败,errorMsg:{}", apiResp); + + return apiResp.getSuccess(); + } + + /** + * 操作凭证 + * + * @param req 入参 + * @return Boolean + */ + @Override + public Boolean operateVoucher(OperateVoucherReq req) { + // 封装入参 + Map params = BeanUtil.beanToMap(req); + + // 调用API + ApiResp apiResp = e8ApiUtil.doPost(params, OPERATE_VOUCHER); + + if (!apiResp.getSuccess()) log.error("E8操作凭证失败,errorMsg:{}", apiResp); + + return apiResp.getSuccess(); + } + + /** + * 换卡补卡 + * + * @param req 入参 + * @return Boolean + */ + @Override + public Boolean changeCard(ChangeCardReq req) { + // 封装入参 + Map params = BeanUtil.beanToMap(req); + + // 调用API + ApiResp apiResp = e8ApiUtil.doPost(params, CHANGE_CARD); + + if (!apiResp.getSuccess()) log.error("E8换卡补卡失败,errorMsg:{}", apiResp); + + return apiResp.getSuccess(); + } + + /** + * 注销人员凭证 + * + * @param req 入参 + * @return Boolean + */ + @Override + public Boolean cancelVoucher(CancelVoucherReq req) { + Map params = new HashMap<>(); + params.put("", req.getIds()); + + ApiResp apiResp = e8ApiUtil.doPost(params, CANCEL_VOUCHER); + + if (!apiResp.getSuccess()) log.error("E8注销人员凭证失败,errorMsg:{}", apiResp); + + return apiResp.getSuccess(); + } + + /** + * 上传人脸 + * + * @param imageByte 入参 + * @return imageUrl 人脸图片地址 + */ + @Override + public String uploadFace(byte[] imageByte) { + + ApiResp apiResp = e8ApiUtil.doFaceImgUpload(imageByte); + + if (!apiResp.getSuccess()) { + log.error("上传人脸图片失败,errorMsg:{}", apiResp); + return null; + } + + return apiResp.getMessage(); + } +} diff --git a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/service/e8/utils/E8ApiUtil.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/utils/E8ApiUtil.java similarity index 85% rename from ruoyi-modules/Iot/src/main/java/org/dromara/iot/service/e8/utils/E8ApiUtil.java rename to ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/utils/E8ApiUtil.java index 4a660ac7..84fd0e74 100644 --- a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/service/e8/utils/E8ApiUtil.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/utils/E8ApiUtil.java @@ -1,10 +1,10 @@ -package org.dromara.iot.service.e8.utils; +package org.dromara.sis.sdk.e8.utils; import cn.hutool.crypto.digest.DigestUtil; import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; import cn.hutool.json.JSONUtil; -import org.dromara.iot.service.e8.model.ApiResp; +import org.dromara.sis.sdk.e8.domain.ApiResp; import org.springframework.stereotype.Component; import org.springframework.util.ObjectUtils; @@ -24,7 +24,7 @@ import java.util.stream.Collectors; @Component public class E8ApiUtil { - private static final String BASE_URL = "http://192.168.8.230:50014"; + private static final String BASE_URL = "http://47.109.37.87:4000"; private static final String SECRET_KEY = "ZG4ocLq1"; private static final String KEY = "b97c7090379f490bb4b2ead0f57fd1bf"; @@ -57,7 +57,6 @@ public class E8ApiUtil { .header("sign", sign) .body(base64Body) .execute()) { - return JSONUtil.toBean(response.body(), ApiResp.class); } } @@ -87,7 +86,7 @@ public class E8ApiUtil { .header("paramstr", paramStr == null ? "50014" : paramStr).execute()) { return JSONUtil.toBean(response.body(), ApiResp.class); } - }else { + } else { // 发送请求获取响应 // 使用 try-with-resources 确保资源释放 try (HttpResponse response = HttpRequest.get(url) @@ -100,6 +99,36 @@ public class E8ApiUtil { } } + /** + * e8人脸图片上传接口 + * + * @param imageByte 请求入参 + * @return 请求结果 + */ + public ApiResp doFaceImgUpload(byte[] imageByte) { + // 请求地址 + String api = "/api/E8/voucher/upload-images"; + // 时间戳 + String timestamp = Long.toString(System.currentTimeMillis()); + // sign签名 + String sign = getPostSign(null, api, timestamp); + // url + String url = BASE_URL + api; + + // 创建HttpRequest对象,设置请求参数 + // 使用 try-with-resources 确保资源释放 + try (HttpResponse response = HttpRequest.post(url) + .header("Content-Type", "multipart/form-data") + .header("key", KEY) + .header("sign", sign) + .header("timestamp", timestamp) + .form("file", imageByte, "image.jpg") + .execute()) { + + return JSONUtil.toBean(response.body(), ApiResp.class); + } + } + /** * 获取Post接口签名Sign * diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/unview/UnViewAiBoxApi.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/unview/UnViewAiBoxApi.java new file mode 100644 index 00000000..5b1007e2 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/unview/UnViewAiBoxApi.java @@ -0,0 +1,257 @@ +package org.dromara.sis.sdk.unview; + +import java.util.List; +import static org.dromara.sis.sdk.unview.model.UvModel.*; + +public interface UnViewAiBoxApi { + + /** + * 行为分析检索 + * + * @param params 检索参数 + * @param uvSystemInfo 设备信息 + * @return 发你检索数据 + */ + SearchBehaviorResult searchBehavior(UvSystemInfo uvSystemInfo, SearchBehaviorParams params); + + /** + * 添加人脸库 + * + * @param libName 人脸库名称 + * @param uvSystemInfo 设备信息 + * @return 返回人像库id + */ + AddLibResult addPersonLib(UvSystemInfo uvSystemInfo, String libName); + + /** + * 删除人像库 + * + * @param libIds 人像库id列表 + * @param uvSystemInfo 设备信息 + * @return 是否删除成功 + */ + boolean deletePersonLib(UvSystemInfo uvSystemInfo, Integer... libIds); + + /** + * 更新人像库信息 + * + * @param uvSystemInfo 设备信息 + * @param libId 人像库id + * @param LibName 人像库名称 + * @return + */ + boolean updatePersonLib(UvSystemInfo uvSystemInfo, Integer libId, String LibName); + + /** + * 分页查询人像库信息 + * + * @param uvSystemInfo 设备信息 + * @param libName 人像库名称 + * @param current 页面 + * @param size 查询数量 + * @return 返回人像库数据 + */ + QueryLibResult findPagePersonLib(UvSystemInfo uvSystemInfo, String libName, Integer current, Integer size); + + /** + * 添加人像 + * + * @param uvSystemInfo 设备信息 + * @param personAddReq 人像信息 + * @return 返回人像信息 + */ + AddPersonResult addPerson(UvSystemInfo uvSystemInfo, AddPersonParams personAddReq); + + /** + * 批量添加人像 + * + * @param uvSystemInfo 设备信息 + * @param personParams 批量人像信息 + * @return 返回批量的人像信息 + */ + BatchAddPersonResult batchAddPerson(UvSystemInfo uvSystemInfo, BatchAddPersonParams personParams); + + /** + * 批量删除人像信息 + * + * @param uvSystemInfo 设备信息 + * @param personIds 人像id + * @return 返回是否删除成功 + */ + Boolean batchDeletePerson(UvSystemInfo uvSystemInfo, Integer[] personIds); + + /** + * 更新人像信息 + * + * @param uvSystemInfo 设备信息 + * @param params 更新参数 + * @return 返回是否更新成功 + */ + Boolean updatePerson(UvSystemInfo uvSystemInfo, UpdatePersonParams params); + + /** + * 分页查询人像信息 + * + * @param uvSystemInfo 设备信息 + * @param params 查询参数 + * @return 返回是否查询成功 + */ + queryPersonPageResult findPersonPage(UvSystemInfo uvSystemInfo, queryPersonPageParams params); + + /** + * 获取 rsa 公钥 + * + * @param uvSystemInfo 设备信息 + * @return GetPublickeyResp 获取公钥响应 + */ + GetPublickeyResult getPublickey(UvSystemInfo uvSystemInfo); + + /** + * 获取码流信息 + * + * @param uvSystemInfo 设备信息 + * @param uvSystemInfo req 查询参数 + * @return 返回码流信息 + */ + QueryOnvifResult getOnvif(UvSystemInfo uvSystemInfo); + + /** + * 新增点位 + * + * @param uvSystemInfo 设备信息 + * @param params 点位新增请求 + * @return 点位新增响应 + */ + AddPointResult addPoint(UvSystemInfo uvSystemInfo, PointParams params); + + /** + * 删除设备中的点位信息 + * + * @param uvSystemInfo 设备信息 + * @param channelIds 点位ID列表 + * @return 删除结果 + */ + Boolean deletePoint(UvSystemInfo uvSystemInfo, List channelIds); + + /** + * 更新设备中的点位信息 + * + * @param uvSystemInfo 设备信息 + * @param params 点位更新请求 + * @return 更新结果 + */ + Boolean updatePoint(UvSystemInfo uvSystemInfo, UpdatePointParams params); + + /** + * 根据设备信息和点位查找请求来查找点位信息 + * + * @param uvSystemInfo 设备信息 + * @param req 点位查找请求 + * @return 点位查找响应 + */ + QueryPointResult queryPoint(UvSystemInfo uvSystemInfo, QueryPointParams req); + + /** + * 批量添加点位信息到设备中 + * + * @param uvSystemInfo 设备信息 + * @param params 批量添加点位请求 + * @return 批量添加点位响应 + */ + BatchAddPersonResult batchAddPoint(UvSystemInfo uvSystemInfo, BatchAddPointParams params); + + /** + * 添加/修改 设备布防时间 + */ + Boolean pointControlTimeUpdate(UvSystemInfo uvSystemInfo, ModifyControlTime params); + + /** + * 获取布防时间 + * + * @param uvSystemInfo 设备信息 + * @param channel_id 通道 id + * @param algo_model 算法类型 + * @return 返回查询结果 + */ + ControlTime queryControlTime(UvSystemInfo uvSystemInfo, Integer channel_id, Integer algo_model); + + /** + * 新增工服库 + * + * @param systemInfo 设备信息 + * @param libName 工服库名称 + * @return 是否添加成功 + */ + Integer addWorkClothesLib(UvSystemInfo systemInfo, String libName); + + /** + * 修改工服库信息 + * + * @param systemInfo 设备信息 + * @param libId 库id + * @param libName 库名称 + * @return 是否修改成功 + */ + Boolean updateWorkClothesLib(UvSystemInfo systemInfo, Integer libId, String libName); + + /** + * 删除工服库 + * + * @param systemInfo 设备信息 + * @param libId 工服库id + * @return 是否删除成功 + */ + Boolean deleteWorkClothesLib(UvSystemInfo systemInfo, Integer libId); + + /** + * @param systemInfo 设备信息 + * @param libName 库名称 + * @param page 页码 + * @param pageSize 查询数量 + * @return 返回分页数据 + */ + QueryLibResult findPageWorkClothesLib(UvSystemInfo systemInfo, String libName, Integer page, Integer pageSize); + + /** + * 新增工服-单个 + * + * @param systemInfo 增加工服的设备 + * @param libId 新增工服的库id + * @param imageBase64 工服图片base64 + * @return 返回工服的人员id + */ + Integer addWorkClothes(UvSystemInfo systemInfo, Integer libId, String imageBase64); + + + /** + * 批量新增工服,一次最多添加50条 + * + * @param systemInfo 增加工服的设备 + * @param libId 新增工服的库id + * @param imageBase64s 工服图片base64列表 + * @return 返回成功以及失败的数据 + */ + BatchAddWorkClothesResult batchAddWorkClothes(UvSystemInfo systemInfo, Integer libId, List imageBase64s); + + /** + * 删除工服库 + * + * @param systemInfo 设备信息 + * @param libId 库id + * @param workClothesIds 工服id列表 + * @return + */ + Boolean deleteWorkClothes(UvSystemInfo systemInfo, Integer libId, List workClothesIds); + + /** + * 分页查询工服 + * + * @param systemInfo 设备 + * @param libId 设备id + * @param page 分页查询页码 + * @param size 分页查询size + * @param status 建模状态 999:全部;1:未建模 2:建模中;3:建模成功;4:建模失败 + */ + FindWorkClothesResult findPageWorkClothes(UvSystemInfo systemInfo, Integer libId, Integer page, Integer size, Integer status); + +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/unview/model/UvModel.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/unview/model/UvModel.java new file mode 100644 index 00000000..ee146362 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/unview/model/UvModel.java @@ -0,0 +1,728 @@ +package org.dromara.sis.sdk.unview.model; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +public class UvModel { + + @Data + public static class UniViewResult { + private Integer code; + private String msg; + private Integer status_code; + + private T data; + + public boolean success() { + return code.equals(0); + } + + public boolean unAuth() { + return code.equals(401); + } + + public static UniViewResult success(T data) { + UniViewResult result = new UniViewResult<>(); + result.setCode(0); + result.setStatus_code(0); + result.setMsg("Succeed"); + return result; + } + + public T result() { + if (success()) { + return data; + } else { + return null; + } + } + + } + + @Data + public static class Page { + private Integer pageNum; + + private Integer pageSize; + } + + @Data + public static class UvSystemInfo { + private String account; // 账号 + private String password; // 密码 + private String ip; // 设备ip + private Integer port; // 设备端口 + } + + @Data + public static class UvAuthInfo { + /** + * 摘要加密算法,首次请求时由设备返回 + */ + String algorithm; + /** + * 保护质量,首次请求时由设备返回 + */ + String qop; + /** + * 摘要加密字段,首次请求时由设备返回 + */ + String realm; + /** + * 随机字符串,每当返回 401 时就会生成一个新的值, + * 原值失效,客户端需使用此值生成新的摘要信息 + */ + String nonce; + + /** + * 指示上个请求中的 nonce 是否过期,由设备返回 + */ + String stale; + } + + @EqualsAndHashCode(callSuper = true) + @Data + public static class UvRequestAuthInfo extends UvAuthInfo { + /** + * 鉴权用户名,由设备分配 + */ + private String username; + + /** + * 当前请求的 URI + */ + private String uri; + + /** + * nonce 计数器,防止重放攻击,由请求方生成 + */ + private String nc; + + /** + * 唯一字符串,用于提供额外防护,由请求方生成 + */ + private String cnonce; + + /** + * 摘要信息,用于验证身份,由请求方生成 + */ + private String response; + } + + @Data + public static class AlarmReportInfo { + /** + * 上报内容 + * 1:行为分析告警数据 + * 2:告警恢复数据 + * 3:人脸抓拍数据 + * 4:人脸比对数据 + * 5:行为比对数据 + * 6:保活数据 + * 7:点位变更数据 + */ + private Integer type; + private String event_id; + /** + * 有无比对结果 1 有 0 无 + */ + private Integer has_result; + private DeviceInfo device_info; + private ChannelInfo channel_info; + private Behaviour behaviour; + /** + * 人脸抓拍数据 + */ + private Face face; + /** + * 人脸比对结果(为空代 + * 表比对失败) + */ + private List compare_results; + } + + @Data + public static class CompareResult { + private Integer target_id; + private Integer lib_id; + private String lib_name; + private Integer person_id; + private String person_name; + private Integer sex; + private String email; + private String tel; + private Integer certificate_type; + private String certificate_no; + private String image_path; + private String image_base64; + private String similarity; + } + + @Data + public static class Face { + private Integer capture_time; + private String point_x; + private String point_y; + private String orig_image_path; + private String crop_image_path; + private String orig_image_base64; // 人脸抓拍大图base64 + private String crop_image_base64; // 人脸抓拍小图base64 + } + + @Data + public static class CaptureInfo { + private Integer target_id; + private String point_x; + private String point_y; + private Integer object_type; + private String plate_no; + } + + @Setter + @Getter + public static class Behaviour { + private String algo_model; + private String image_base64; + private String image_path; + private Integer capture_time; + private Integer in_num; + private Integer out_num; + private Integer area_num; // 区域统计人数 + private String video_uuid; + private String video_url; + private List capture_info; // 目标信息 + + @Override + public String toString() { + return "Behaviour{" + + "algo_model='" + algo_model + '\'' + +// ", image_base64='" + image_base64 + '\'' + + ", image_path='" + image_path + '\'' + + ", capture_time=" + capture_time + + ", in_num=" + in_num + + ", out_num=" + out_num + + ", area_num=" + area_num + + ", video_uuid='" + video_uuid + '\'' + + ", video_url='" + video_url + '\'' + + ", capture_info=" + capture_info + + '}'; + } + } + + @Data + public static class ChannelInfo { + /** + * 上报模式: + * 0:点位信息 + * 1:添加点位 + * 2:修改点位 + * 3:删除点位 + * 4:点位状态变化 + */ + private Integer mode; + private String ipc_sn; + private String ipc_addr; + private Integer channel_id; + private String channel_name; + private Integer status; + private String custom_code; + } + + @Data + public static class DeviceInfo { + private Integer device_code; + private String device_name; + private String device_sn; + private String custom_code; + } + + + @Data + public static class AddPersonParams { + /** + * 人像名称 + * 必填 + */ + private String person_name; + /** + * 人像的base64图片 + * 必填 + */ + private String image_base64; + /** + * 人像库id + * 必填 + */ + private Integer lib_id; + /** + * 性别 + */ + private String sex; + /** + * 邮件 + */ + private String email; + /** + * 联系方式 + */ + private String tel; + + /** + * 证件类型 + * 1:身份证 2:护照 3:行驶证 99:其它 + */ + private String certificate_type; + /** + * 证件号码 + */ + private String certificate_no; + /** + * 出生日期 + */ + private String birth_date; + } + + @Data + public static class AddPersonResult { + private Integer person_id; + } + + + @Data + public static class BatchAddPersonParams { + /** + * 批量添加人像信息 + */ + private List person_list; + } + + @Data + public static class BatchAddPersonResult { + private List fail_list; + } + + @EqualsAndHashCode(callSuper = true) + @Data + public static class queryPersonPageParams extends Page { + /** + * 人员库 id + * 必填 + */ + private Integer lib_id; + + /** + * 姓名(支持模糊查询) + */ + private String person_name; + /** + * 性别 + * 999:全部 + * 1:男 + * 2:女 + * 99:未说明 + */ + private Integer sex = 999; + + /** + * 证件号 + */ + private String certificate_no; + + /** + * 建模状态 999:全部; + * 1:未建模 2:建模中;3:建模成功;4:建模失败 + */ + private Integer model_status = 999; + } + + @Data + public static class queryPersonPageResult { + /** + * 查询数据 + */ + private List data; + + /** + * 数据总数 + */ + private Integer total; + } + + @Data + public static class PersonInfo { + /** + * 人员 id + */ + private Integer person_id; + /** + * 姓名 + */ + private String person_name; + /** + * 性别 1:男 2:女 99:未说明 + */ + private Integer sex; + /** + * 邮箱 + */ + private String email; + /** + * 联系方式 + */ + private String tel; + /** + * 建模状态 1:未建模 2:建模中;3:建模成功;4:建模失败 + */ + private Integer modeling_type; + /** + * 证件类型 1:身份证 2:护照 3:行驶证 99:其它 + */ + private Integer certificate_type; + /** + * 证件号码 + */ + private String certificate_no; + /** + * 图片路径 + */ + private String image_path; + /** + * 人员库 id + */ + private Integer lib_id; + /** + * 出生日期 + */ + private String birth_date; + /** + * 创建时间 + */ + private Integer create_time; + } + + + /** + * 添加人像库请求参数封装 + */ + @Data + public static class UpdatePersonParams { + /** + * 人员 id + * 必填 + */ + private String person_id; + /** + * 名称 + */ + private String person_name; + /** + * 性别 + */ + private Integer sex; + /** + * 邮箱 + */ + private String email; + /** + * 联系方式 + */ + private String tel; + /** + * 证件类型 1:身份证 2:护照 3:行驶证 99:其它 + */ + private Integer certificate_type; + /** + * 证件号码 + */ + private Integer certificate_no; + /** + * 人脸照片 base64 + */ + private String image_base64; + /** + * 出生日期 + */ + private String birth_date; + } + + @Data + public static class QueryLibResult { + private Integer total; + private List list; + } + + @Data + public static class LibInfo { + private Integer lib_id; + private String lib_name; + private Integer create_time; + } + + @Data + public static class AddLibResult { + private Integer lib_id; + } + + @Data + public static class BatchAddWorkClothesResult { + private List workclothes_id; + private List fail_list; + } + + @Data + public static class BatchAddWorkClothesFailInfo { + private Integer index; + private String reason; + } + + @Data + public static class FindWorkClothesResult { + private Integer total; + private List workclothes_list; + } + + @Data + public static class WorkClothesInfo { + private Integer lib_id; + private Integer workclothes_id; + private String image_path; + private Integer create_time; + private Integer model_status; + } + + + @Data + public static class SearchBehaviorParams { + /** + * 页码数 + */ + private Integer page; + /** + * 每页数据量 + */ + private Integer pagesize; + /** + * 通道 id + */ + private List channel_id; + /** + * 算法类型,送空查全部 + */ + private List algo_model; + /** + * 开始时间,10 位时间戳(秒级) + */ + private Integer start_time; + /** + * 结束时间,10 位时间戳(秒级) + */ + private Integer end_time; + /** + * 是否有比对:1 全部,2 有比对 不传查全部 + */ + private Integer compare_flag; + /** + * 目标类型 区域入侵告警查询条件 1 行人 2 + * 机动车 3 非机动车 + */ + private Integer object_type; + /** + * 车牌号 + */ + private String plate_no; + } + + + @Data + public static class SearchBehaviorResult { + private Integer total; + private List list; + } + + @Data + public static class BehaviorInfo { + private Integer alarm_id; + private String big_picture_url; + private String BigImageData; + private String algo_model; + private Integer capture_time; + private Integer channel_id; + private String channel_name; + private String video_url; + private List object_list; + private List compare_list; + } + + @Data + public static class ObjectInfo { + private Integer plate_no; + } + + @Data + public static class CompareInfo { + private Integer base_image_id; + private String base_image_url; + private String name; + private String certificate_no; + private Integer similarity; + private Integer match_type; + } + + @Data + public static class TimeSlot { + /** + * 开始时间,例如 00:00 + */ + private String start; + /** + * 结束时间,例如:04:00 + */ + private String end; + + } + + @Data + public static class ControlTime { + private List monday; + private List tuesday; + private List wednesday; + private List thursday; + private List friday; + private List saturday; + private List sunday; + } + + @Data + public static class ModifyControlTime { + private Integer channel_id; // 点位 id + private String algo_model; // 算法类型 + private ControlTime control_time; // 布防时间 + } + + + @Data + public static class QueryOnvifResult { + /** + * 厂商 + */ + private String manufacturer; + /** + * 型号 + */ + private String model; + /** + * 固件版本 + */ + private String firmware_version; + /** + * 序列号 + */ + private String serial_number; + /** + * 硬件 id + */ + private String hardware_id; + + /** + * 码流列表 + */ + private List video; + } + + @Data + private static class OnvifVideoInfo { + /** + * 码流 id + */ + private Integer id; + /** + * rtsp 地址 + */ + private String rtsp; + /** + * 码率 + */ + private String bitrate; + /** + * 编码格式 + */ + private String encoding; + /** + * 帧率 + */ + private String fps; + /** + * 画面组 + */ + private String gop; + /** + * 质量 + */ + private String quality; + /** + * 分辨率 + */ + private String ratio; + } + + @Data + public static class GetPublickeyResult { + private String public_key; + } + + @Data + public static class PointParams { + private Integer type; // 视频协议 1:onvif 2:rtsp + private Integer transport_type; // 传输协议(AIBOX 需要,一体机不需要) 1: tcp 2: udp + private String channel_name; // 点位名称 + private String rtsp; // rtsp 地址(当视频协议为rtsp 时,该字段必填) + private String ip; // 相机 ip(onvif 添加流时必填) + private Integer port; // 相机端口(onvif 添加流时必填) + private String username; // 相机用户名 + private String pwd; // 相机密码(RSA 加密) + private Integer video_type; // onvif 设备码流添加方式:1:主码流 2:自定义码流 + private Integer video_id; // 码流 id:当选择自定义码流时,该字段必填,值为获取设备码流信息接口返回的码流 id + private String custom_code; // 自定义编码 + } + + @Data + public static class AddPointResult { + private Integer channel_id; // 点位id + } + + @Data + public static class BatchAddPointParams { + private List channel_list; + } + + @Data + public static class BatchAddPointResult { + /** + * 失败的点位名称列表 + */ + private List fail_list; + } + + @EqualsAndHashCode(callSuper = true) + @Data + public static class UpdatePointParams extends PointParams { + private Integer channel_id; // 点位 id + } + + @EqualsAndHashCode(callSuper = true) + @Data + public static class QueryPointParams extends Page { + private String channel_name; + } + + @Data + public static class QueryPointResult { + private String channel_name; + } + + +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/unview/model/enums/AlarmModelEnum.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/unview/model/enums/AlarmModelEnum.java new file mode 100644 index 00000000..33ddb12f --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/unview/model/enums/AlarmModelEnum.java @@ -0,0 +1,79 @@ +package org.dromara.sis.sdk.unview.model.enums; + +/** + * [ + * "FieldDetectorObjectsInside", // 区域入侵报警 + * "SafetyHelmetAlarm", // 未戴安全帽报警 + * "WorkClothesAlarm", // 未穿工服报警 + * "TelephoningAlarm", // 打电话报警 + * "NoMaskAlarm", // 未戴口罩报警 + * "FallOverAlarm", // 跌倒报警 + * "OffDutyDetectionAlarm", // 离岗报警 + * "SmokingAlarm", // 吸烟报警 + * "ReflectiveClothesDetectionAlarm", // 未穿反光服报警 + * "FireDetection", // 明火报警 + * "FumesAlarmBegin", // 烟雾报警 + * "CrowdDensityCriticalAlarm", //人员数量超限报警 + * "AbnormalParkingDetection", //车辆违停占用报警 + * "DisorderStackingDetection", // 物料乱堆放报警 + * "BareSoilCoverDetection", // 裸土未覆盖 + * "SafetyHarnessDetection", // 未穿安全背带报警 + * "UnwashedVehicleDetection" // 车辆未清洗报警 + * ] + */ +public enum AlarmModelEnum { + FieldDetectorObjectsInside(10, 1014, "区域入侵报警"), + SafetyHelmetAlarm(10, 1015, "未戴安全帽报警"), + WorkClothesAlarm(10, 1016, "未穿工服报警"), + TelephoningAlarm(10, 1017, "打电话报警"), + NoMaskAlarm(10, 1013, "未戴口罩报警"), + FallOverAlarm(10, 1018, "跌倒报警"), + OffDutyDetectionAlarm(10, 1019, "离岗报警"), + SmokingAlarm(10, 1020, "吸烟报警"), + ReflectiveClothesDetectionAlarm(10, 1021, "未穿反光服报警"), + FireDetection(10, 1022, "明火报警"), + FumesAlarmBegin(10, 1023, "烟雾报警"), + CrowdDensityCriticalAlarm(10, 1024, "人员数量超限报警"), + AbnormalParkingDetection(10, 1025, "车辆违停占用报警"), + DisorderStackingDetection(10, 1026, "物料乱堆放报警"), + BareSoilCoverDetection(10, 1027, "裸土未覆盖"), + SafetyHarnessDetection(10, 1028, "未穿安全背带报警"), + UnwashedVehicleDetection(10, 1029, "车辆未清洗报警"), + + UnKnow(-1, -1, "未知类型"); + + + private final Integer bigType; + + private final Integer smallType; + + private final String desc; + + AlarmModelEnum(Integer bigType, Integer smallType, String desc) { + this.bigType = bigType; + this.smallType = smallType; + this.desc = desc; + } + + public static AlarmModelEnum getAlarmModel(String alarmModel) { + for (AlarmModelEnum value : AlarmModelEnum.values()) { + if (value.name().equals(alarmModel)) { + return value; + } + } + return UnKnow; + } + + + public Integer getBigType() { + return bigType; + } + + public Integer getSmallType() { + return smallType; + } + + public String getDesc() { + return desc; + } +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/unview/model/enums/AlarmTypeEnum.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/unview/model/enums/AlarmTypeEnum.java new file mode 100644 index 00000000..d356e79e --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/unview/model/enums/AlarmTypeEnum.java @@ -0,0 +1,42 @@ +package org.dromara.sis.sdk.unview.model.enums; + +import java.util.Objects; + +public enum AlarmTypeEnum { + + BehaviorAnalysis(1, "行为分析告警数据"), + AlarmRecovery(2, "告警恢复数据"), + FacialCapture(3, "人脸抓拍数据"), + FacialComparison(4, "人脸比对数据"), + BehavioralComparison(5, "行为比对数据"), + HeartBerth(6, "保活数据"), + PointChange(7, "点位变更数据"), + ; + + private final Integer type; + + private final String desc; + + AlarmTypeEnum(Integer type, String desc) { + this.type = type; + this.desc = desc; + } + + public static AlarmTypeEnum getAlarmType(Integer type) { + AlarmTypeEnum[] values = AlarmTypeEnum.values(); + for (AlarmTypeEnum value : values) { + if (Objects.equals(type, value.getType())) { + return value; + } + } + return null; + } + + public Integer getType() { + return type; + } + + public String getDesc() { + return desc; + } +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/unview/model/enums/UniViewApiEnum.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/unview/model/enums/UniViewApiEnum.java new file mode 100644 index 00000000..78fa857c --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/unview/model/enums/UniViewApiEnum.java @@ -0,0 +1,126 @@ +package org.dromara.sis.sdk.unview.model.enums; + +import lombok.Getter; +import org.springframework.http.HttpMethod; + +/** + * 宇视请求枚举 + */ +@Getter +public enum UniViewApiEnum { + /** + * 新增人像库 + */ + PERSONLIB_ADD("/api/v2/personlib/add", HttpMethod.POST), + + PERSONLIB_DEL("/api/v2/personlib/delete", HttpMethod.POST), + + PERSONLIB_UPDATE("/api/v2/personlib/update", HttpMethod.POST), + + PERSONLIB_FIND("/api/v2/personlib/list", HttpMethod.POST), + + /** + * 新增人像 + */ + PERSON_ADD("/api/v2/person/add", HttpMethod.POST), + /** + * 批量新增人像 + */ + PERSON_BATCH_ADD("/api/v2/person/import", HttpMethod.POST), + /** + * 批量删除 + */ + PERSON_BATCH_DEL("/api/v2/person/delete", HttpMethod.POST), + /** + * 修改人像信息 + */ + PERSON_UPDATE("/api/v2/person/update", HttpMethod.POST), + + /** + * 查询人像信息 + */ + PERSON_FIND("/api/v2/person/list", HttpMethod.POST), + + + /** + * 获取 rsa 公钥 + */ + POINT_RAS("/api/v2/rsa/publickey", HttpMethod.POST), + + /** + * 通过 onvif 获取设备码流信息 + */ + POINT_DEVICE_INFO("/api/v2/channel/device/info", HttpMethod.POST), + /** + * 新增点位 + */ + POINT_ADD("/api/v2/channel/add", HttpMethod.POST), + /** + * 删除点位 + */ + POINT_DEL("/api/v2/channel/delete", HttpMethod.POST), + /** + * 修改点位信息 + */ + POINT_UPDATE("/api/v2/channel/update", HttpMethod.POST), + /** + * 获取点位列表 + */ + POINT_FIND("/api/v2/channel/list", HttpMethod.POST), + /** + * 批量新增点位 + */ + POINT_BATCH_ADD("/api/v2/channel/import", HttpMethod.POST), + + /** + * 跟新布防时间 + */ + POINT_CONTROL_TIME_UPDATE("/api/v2/control/time/update", HttpMethod.POST), + + /** + * 查询布防时间 + */ + POINT_CONTROL_TIME_FIND("/api/v2/control/time/get", HttpMethod.POST), + + /** + * 工服库相关 + */ + WORK_CLOTHES_LIB_ADD("/api/v2/workclotheslib/add", HttpMethod.POST), + WORK_CLOTHES_LIB_UPDATE("/api/v2/workclotheslib/update", HttpMethod.POST), + WORK_CLOTHES_LIB_DELETE("/api/v2/workclotheslib/delete", HttpMethod.POST), + WORK_CLOTHES_LIB_FIND("/api/v2/workclotheslib/list", HttpMethod.POST), + + /** + * 工服管理相关 + */ + WORK_CLOTHES_ADD("/api/v2/workclothes/add", HttpMethod.POST), + WORK_CLOTHES_BATCH_ADD("/api/v2/workclothes/batchadd", HttpMethod.POST), + WORK_CLOTHES_DELETE("/api/v2/workclothes/delete", HttpMethod.POST), + WORK_CLOTHES_FIND("/api/v2/workclothes/list", HttpMethod.POST), + /*---------------------------------------------------- 数据检索 -------------------------------------------------------------*/ + SEARCH_BEHAVIOR("/api/v2/search/behavior", HttpMethod.POST), // 行为分析检索 + SEARCH_FACECAP("/api/v2/search/facecap", HttpMethod.POST), // 人脸检索 + SEARCH_BEHAVIORMATCH("/api/v2/search/behaviormatch", HttpMethod.POST), // 行为比对检索 + SEARCH_FACEMATCH("/api/v2/search/facematch", HttpMethod.POST), // 人脸检索 + ; + + /** + * 请求uri + */ + private final String uri; + + /** + * 请求方法类型 + */ + private final HttpMethod method; + + /** + * 资源路径描述 + */ + + UniViewApiEnum(String uri, HttpMethod method) { + this.uri = uri; + this.method = method; + } + +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/unview/service/UnViewAiBoxApiService.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/unview/service/UnViewAiBoxApiService.java new file mode 100644 index 00000000..d44f41d3 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/unview/service/UnViewAiBoxApiService.java @@ -0,0 +1,235 @@ +package org.dromara.sis.sdk.unview.service; + +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import lombok.extern.slf4j.Slf4j; +import org.dromara.sis.sdk.unview.UnViewAiBoxApi; +import org.dromara.sis.sdk.unview.model.enums.UniViewApiEnum; +import org.dromara.sis.sdk.unview.utils.UniViewHttp; +import org.springframework.stereotype.Component; +import javax.annotation.Resource; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static org.dromara.sis.sdk.unview.model.UvModel.*; + + +/** + * 宇试AI盒子接口 + * + * @author lxj + * @since 2025-06-24 + */ +@Slf4j +@Component +public class UnViewAiBoxApiService implements UnViewAiBoxApi { + + @Resource + private UniViewHttp uniViewHttp; + + public SearchBehaviorResult searchBehavior(UvSystemInfo uvSystemInfo, SearchBehaviorParams params) { + UniViewResult request = uniViewHttp.request(uvSystemInfo, UniViewApiEnum.SEARCH_BEHAVIOR, params, SearchBehaviorResult.class); + return request.getData(); + } + + public AddLibResult addPersonLib(UvSystemInfo systemInfo, String libName) { + Map params = new HashMap<>(1); + params.put("lib_name", libName); + UniViewResult request = uniViewHttp.request(systemInfo, UniViewApiEnum.PERSONLIB_ADD, params, AddLibResult.class); + return request.getData(); + } + + public boolean deletePersonLib(UvSystemInfo systemInfo, Integer... libIds) { + if (libIds.length == 0) { + log.info("libIds 不能为空"); + return false; + } + JSONObject params = new JSONObject(); + params.put("lib_id", Arrays.asList(libIds)); + UniViewResult request = uniViewHttp.request(systemInfo, UniViewApiEnum.PERSONLIB_DEL, params, Integer.class); + return request.success(); + } + + public boolean updatePersonLib(UvSystemInfo systemInfo, Integer libId, String LibName) { + JSONObject params = new JSONObject(); + params.put("lib_id", libId); + params.put("lib_name", LibName); + UniViewResult request = uniViewHttp.request(systemInfo, UniViewApiEnum.PERSONLIB_UPDATE, params, Integer.class); + return request.success(); + } + + public QueryLibResult findPagePersonLib(UvSystemInfo systemInfo, String libName, Integer current, Integer size) { + JSONObject params = new JSONObject(); + if (StrUtil.isNotBlank(libName)) { + params.put("lib_name", libName); + } + if (current == null) { + current = 1; + } + if (size == null) { + size = 10; + } + params.put("page", current); + params.put("pagesize", size); + UniViewResult request = uniViewHttp.request(systemInfo, UniViewApiEnum.PERSONLIB_FIND, params, QueryLibResult.class); + return request.getData(); + } + + + public AddPersonResult addPerson(UvSystemInfo uvSystemInfo, AddPersonParams addPersonParams) { + UniViewResult request = uniViewHttp.request(uvSystemInfo, UniViewApiEnum.PERSON_ADD, addPersonParams, AddPersonResult.class); + return request.result(); + } + + public BatchAddPersonResult batchAddPerson(UvSystemInfo uvSystemInfo, BatchAddPersonParams personParams) { + UniViewResult request = uniViewHttp.request(uvSystemInfo, UniViewApiEnum.PERSON_BATCH_ADD, personParams, BatchAddPersonResult.class); + return request.result(); + } + + public Boolean batchDeletePerson(UvSystemInfo uvSystemInfo, Integer[] personIds) { + JSONObject params = new JSONObject(); + params.put("person_id_list", personIds); + UniViewResult request = uniViewHttp.request(uvSystemInfo, UniViewApiEnum.PERSON_BATCH_DEL, params, String.class); + return request.success(); + } + + public Boolean updatePerson(UvSystemInfo uvSystemInfo, UpdatePersonParams params) { + UniViewResult request = uniViewHttp.request(uvSystemInfo, UniViewApiEnum.PERSON_UPDATE, params, String.class); + return request.success(); + } + + + public queryPersonPageResult findPersonPage(UvSystemInfo uvSystemInfo, queryPersonPageParams params) { + UniViewResult request = uniViewHttp.request(uvSystemInfo, UniViewApiEnum.PERSON_FIND, params, queryPersonPageResult.class); + return request.result(); + } + + /*--------------------------------------------------------------------- 点位管理 -------------------------------------------------------------------------*/ + + public GetPublickeyResult getPublickey(UvSystemInfo uvSystemInfo) { + UniViewResult request = uniViewHttp.request(uvSystemInfo, UniViewApiEnum.POINT_RAS, null, GetPublickeyResult.class); + return request.result(); + } + + public QueryOnvifResult getOnvif(UvSystemInfo uvSystemInfo) { + JSONObject params = new JSONObject(); + params.put("ip", uvSystemInfo.getIp()); + params.put("port", uvSystemInfo.getPort()); + params.put("username", uvSystemInfo.getAccount()); + params.put("pwd", uvSystemInfo.getPassword()); + UniViewResult request = uniViewHttp.request(uvSystemInfo, UniViewApiEnum.POINT_RAS, params, QueryOnvifResult.class); + return request.result(); + } + + public AddPointResult addPoint(UvSystemInfo uvSystemInfo, PointParams req) { + UniViewResult request = uniViewHttp.request(uvSystemInfo, UniViewApiEnum.POINT_ADD, req, AddPointResult.class); + return request.result(); + } + + public Boolean deletePoint(UvSystemInfo uvSystemInfo, List channelIds) { + JSONObject params = new JSONObject(); + params.put("channel_id_list", channelIds); + UniViewResult request = uniViewHttp.request(uvSystemInfo, UniViewApiEnum.POINT_DEL, params, String.class); + return request.success(); + } + + public Boolean updatePoint(UvSystemInfo uvSystemInfo, UpdatePointParams params) { + UniViewResult request = uniViewHttp.request(uvSystemInfo, UniViewApiEnum.POINT_UPDATE, params, String.class); + return request.success(); + } + + public QueryPointResult queryPoint(UvSystemInfo uvSystemInfo, QueryPointParams req) { + UniViewResult request = uniViewHttp.request(uvSystemInfo, UniViewApiEnum.POINT_FIND, req, QueryPointResult.class); + return request.result(); + } + + public BatchAddPersonResult batchAddPoint(UvSystemInfo uvSystemInfo, BatchAddPointParams params) { + UniViewResult request = uniViewHttp.request(uvSystemInfo, UniViewApiEnum.POINT_BATCH_ADD, params, BatchAddPersonResult.class); + return request.result(); + } + + public Boolean pointControlTimeUpdate(UvSystemInfo uvSystemInfo, ModifyControlTime params) { + UniViewResult request = uniViewHttp.request(uvSystemInfo, UniViewApiEnum.POINT_CONTROL_TIME_UPDATE, params, String.class); + return request.success(); + } + + public ControlTime queryControlTime(UvSystemInfo uvSystemInfo, Integer channel_id, Integer algo_model) { + JSONObject params = new JSONObject(); + params.put("channel_id", channel_id); + params.put("algo_model", algo_model); + UniViewResult request = uniViewHttp.request(uvSystemInfo, UniViewApiEnum.POINT_CONTROL_TIME_FIND, params, ControlTime.class); + return request.result(); + } + + /*---------------------------------------------------------------- 工服库 ---------------------------------------------------------------------------*/ + public Integer addWorkClothesLib(UvSystemInfo uvSystemInfo, String libName) { + JSONObject params = new JSONObject(); + params.put("lib_name", libName); + UniViewResult request = uniViewHttp.request(uvSystemInfo, UniViewApiEnum.WORK_CLOTHES_LIB_ADD, params, Integer.class); + return request.result(); + } + + public Boolean updateWorkClothesLib(UvSystemInfo uvSystemInfo, Integer libId, String libName) { + JSONObject params = new JSONObject(); + params.put("lib_id", libId); + params.put("lib_name", libName); + UniViewResult request = uniViewHttp.request(uvSystemInfo, UniViewApiEnum.WORK_CLOTHES_LIB_UPDATE, params, String.class); + return request.success(); + } + + public Boolean deleteWorkClothesLib(UvSystemInfo uvSystemInfo, Integer libId) { + JSONObject params = new JSONObject(); + params.put("lib_id", libId); + UniViewResult request = uniViewHttp.request(uvSystemInfo, UniViewApiEnum.WORK_CLOTHES_LIB_DELETE, params, String.class); + return request.success(); + } + + public QueryLibResult findPageWorkClothesLib(UvSystemInfo uvSystemInfo, String libName, Integer page, Integer pageSize) { + JSONObject params = new JSONObject(); + params.put("lib_name", libName); + params.put("page", page); + params.put("pagesize", pageSize); + UniViewResult request = uniViewHttp.request(uvSystemInfo, UniViewApiEnum.WORK_CLOTHES_LIB_FIND, params, QueryLibResult.class); + return request.result(); + } + + /*--------------------------------------------------------------------工服 ---------------------------------------------------------------------------*/ + + public Integer addWorkClothes(UvSystemInfo uvSystemInfo, Integer libId, String imageBase64) { + JSONObject params = new JSONObject(); + params.put("lib_id", libId); + params.put("image_base64", imageBase64); + UniViewResult request = uniViewHttp.request(uvSystemInfo, UniViewApiEnum.WORK_CLOTHES_ADD, params, Integer.class); + return request.result(); + } + + public BatchAddWorkClothesResult batchAddWorkClothes(UvSystemInfo uvSystemInfo, Integer libId, List imageBase64s) { + JSONObject params = new JSONObject(); + params.put("lib_id", libId); + params.put("image_base64", imageBase64s); + UniViewResult request = uniViewHttp.request(uvSystemInfo, UniViewApiEnum.WORK_CLOTHES_BATCH_ADD, params, BatchAddWorkClothesResult.class); + return request.result(); + } + + public Boolean deleteWorkClothes(UvSystemInfo uvSystemInfo, Integer libId, List workClothesIds) { + JSONObject params = new JSONObject(); + params.put("lib_id", libId); + params.put("workclothes_id_list", workClothesIds); + UniViewResult request = uniViewHttp.request(uvSystemInfo, UniViewApiEnum.WORK_CLOTHES_DELETE, params, String.class); + return request.success(); + } + + public FindWorkClothesResult findPageWorkClothes(UvSystemInfo uvSystemInfo, Integer libId, Integer page, Integer size, Integer status) { + JSONObject params = new JSONObject(); + params.put("lib_id", libId); + params.put("page", page); + params.put("pagesize", size); + params.put("model_status", status); + UniViewResult request = uniViewHttp.request(uvSystemInfo, UniViewApiEnum.WORK_CLOTHES_FIND, params, FindWorkClothesResult.class); + return request.result(); + } + + +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/unview/service/VideoAlarmService.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/unview/service/VideoAlarmService.java new file mode 100644 index 00000000..5e0dd56c --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/unview/service/VideoAlarmService.java @@ -0,0 +1,123 @@ +package org.dromara.sis.sdk.unview.service; + +import com.alibaba.fastjson.JSONObject; +import lombok.extern.slf4j.Slf4j; +import org.dromara.sis.sdk.unview.model.UvModel; +import org.dromara.sis.sdk.unview.model.enums.AlarmTypeEnum; +import org.springframework.stereotype.Service; + +/** + * 宇视人体设备告警数据处理 + * + * @author lxj + */ +@Slf4j +@Service +public class VideoAlarmService { + + + public void handleAlarmData(UvModel.AlarmReportInfo alarmReportData) { + Integer type = alarmReportData.getType(); + AlarmTypeEnum alarmType = AlarmTypeEnum.getAlarmType(type); + if (alarmType == null) { + log.error("未知的数据上报类型。"); + log.error("上报数据: {}", JSONObject.toJSONString(alarmReportData)); + return; + } + switch (alarmType) { + case BehaviorAnalysis: { + handleBehaviorAnalysis(alarmReportData); + break; + } + case AlarmRecovery: { + handleAlarmRecovery(alarmReportData); + break; + } + case FacialCapture: { + handleFacialCapture(alarmReportData); + break; + } + case FacialComparison: { + handleFacialComparison(alarmReportData); + break; + } + case BehavioralComparison: { + handleBehavioralComparison(alarmReportData); + break; + } + case HeartBerth: { + handleHeartBerth(alarmReportData); + break; + } + case PointChange: { + handlePointChange(alarmReportData); + break; + } + } + } + + /** + * 设备心跳上报 + * + * @param alarmReportData 上报数据 + */ + private void handleHeartBerth(UvModel.AlarmReportInfo alarmReportData) { + // 处理心跳数据 + log.info("设备心跳数据上报,data={}", alarmReportData); + } + + /** + * 行为分析告警数据上报 + * + * @param alarmReportData 告警数据 + */ + private void handleBehaviorAnalysis(UvModel.AlarmReportInfo alarmReportData) { + + } + + /** + * 告警恢复数据上报 + * + * @param alarmReportData 告警数据 + */ + private void handleAlarmRecovery(UvModel.AlarmReportInfo alarmReportData) { + + } + + /** + * 人脸抓拍上报 + * + * @param alarmReportData 告警数据 + */ + private void handleFacialCapture(UvModel.AlarmReportInfo alarmReportData) { + //TODO + } + + /** + * 人脸比对数据上报 + * + * @param alarmReportData 告警数据 + */ + private void handleFacialComparison(UvModel.AlarmReportInfo alarmReportData) { + + } + + /** + * 行为比对数据上报 + * + * @param alarmReportData 告警数据 + */ + private void handleBehavioralComparison(UvModel.AlarmReportInfo alarmReportData) { + + } + + /** + * 点位变更数据上报 + * + * @param alarmReportData 告警数据 + */ + private void handlePointChange(UvModel.AlarmReportInfo alarmReportData) { + + } + +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/unview/utils/UniViewHttp.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/unview/utils/UniViewHttp.java new file mode 100644 index 00000000..81b4ea8c --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/unview/utils/UniViewHttp.java @@ -0,0 +1,213 @@ +package org.dromara.sis.sdk.unview.utils; + + +import cn.hutool.core.util.IdUtil; +import cn.hutool.crypto.SecureUtil; +import cn.hutool.http.HttpStatus; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.TypeReference; +import lombok.extern.slf4j.Slf4j; +import org.dromara.sis.sdk.unview.model.UvModel; +import org.dromara.sis.sdk.unview.model.enums.UniViewApiEnum; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Component; +import org.springframework.web.client.HttpClientErrorException; +import org.springframework.web.client.RestTemplate; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static org.dromara.sis.sdk.unview.model.UvModel.*; + + +/** + * 宇视HTTP处理 + */ +@Slf4j +@Component +public class UniViewHttp { + + /** + * 请求头Authorization 字段前缀 + */ + public static final String UNIVIEW_HTTP_PROTOCOL = "http://"; + /** + * 请求头Authorization 字段前缀 + */ + public static final String UNIVIEW_AUTH_PREFIX = "Digest "; + /** + * 宇视请求返回401,鉴权信息字段 + */ + public static final String UNIVIEW_AUTH_FAIL_PRFIX = "WWW-Authenticate"; + /** + * Authorization 放入设备鉴权信息字段 + */ + public static final String UNIVIEW_REQUEST_AUTH_KEY = "Authorization"; + + @Resource + private RestTemplate restTemplate; + + /** + * 用于缓存宇视设备鉴权信息的map + * key:设备ip + * value:设备的鉴权信息 + */ + private static final Map CACHE_AUTH_MAP = new HashMap<>(16); + + public UniViewResult request(UvSystemInfo systemInfo, UniViewApiEnum api, Object data, Class cls) { + UniViewResult result = r(systemInfo, api, data, cls); + if (result.success()) { + log.info("宇视设备请求成功,result: {}", result); + return result; + } else if (result.unAuth()) { + // 鉴权失败则再次请求 + return r(systemInfo, api, data, cls); + } else { + // 如果请求失败,尝试再次请求,如果依然失败则放弃 + return r(systemInfo, api, data, cls); + } + } + + /** + * 发起宇视平台请求 + *

由于宇视所有请求均为POST,所以请求的时候不做区分

+ * + * @param systemInfo 请求到达的设备信息 + * @param api 请求资源信息 + * @param data 请求数据 + * @param cls 返回数据类型 + * @param 返回数据裂隙 + * @return 返回响应数据 + */ + private UniViewResult r(UvSystemInfo systemInfo, UniViewApiEnum api, Object data, Class cls) { + // 生成请求完整路径 + String requestUrl = UNIVIEW_HTTP_PROTOCOL + systemInfo.getIp() + ":" + systemInfo.getPort() + api.getUri(); + // 获取鉴权信息 + UvAuthInfo authData = CACHE_AUTH_MAP.get(systemInfo.getIp()); + // 如果存在鉴权信息,依据文档生成鉴权信息 + String authorization = null; + if (authData != null) { + authorization = createAuthData(systemInfo, api, authData); + } + + try { + // 设置请求头 + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + if (authorization != null) { + headers.add(UNIVIEW_REQUEST_AUTH_KEY, authorization); + } + HttpEntity requestEntity = null; + if (data == null) { + requestEntity = new HttpEntity<>(null, headers); + } + if (data instanceof JSONObject) { + JSONObject obj = (JSONObject) data; + requestEntity = new HttpEntity<>(obj.toJSONString(), headers); + } else { + requestEntity = new HttpEntity<>(JSONObject.toJSONString(data), headers); + } + ResponseEntity exchange = restTemplate.exchange(requestUrl, api.getMethod(), requestEntity, String.class); + int statusCode = exchange.getStatusCodeValue(); + String body = exchange.getBody(); + + if (HttpStatus.HTTP_UNAUTHORIZED == statusCode) { + // 处理401请求参数,并且返回鉴权信息 + handleAuthData(exchange.getHeaders(), systemInfo); + UvAuthInfo authData1 = CACHE_AUTH_MAP.get(systemInfo.getIp()); + log.info("宇视设备请求返回401, 开始处理鉴权数据,authData1 = {}", authData1); + return JSONObject.parseObject(body, new TypeReference>(cls) { + }); + } + UniViewResult result = JSONObject.parseObject(body, new TypeReference>(cls) { + }); + log.info("宇视设备请求返回完成,result={}", result); + return result; + } catch (Exception e) { + log.info("发起宇视设备请求失败,msg:{}", e.getMessage()); + if (e instanceof HttpClientErrorException exception) { + if (exception.getStatusCode().value() == 401) { + HttpHeaders responseHeaders = exception.getResponseHeaders(); + handleAuthData(responseHeaders, systemInfo); + UvAuthInfo authData1 = CACHE_AUTH_MAP.get(systemInfo.getIp()); + log.info("宇视设备请求返回401, 开始处理鉴权数据,authData1 = {}", authData1); + } + } + + UniViewResult uniViewResult = new UniViewResult<>(); + uniViewResult.setCode(-1); + uniViewResult.setMsg("发起请求异常,msg=" + e.getMessage()); + uniViewResult.setStatus_code(-1); + return uniViewResult; + } + } + + + private static String createAuthData(UvSystemInfo systemInfo, UniViewApiEnum api, UvAuthInfo authData) { + // r1 原始字符串 + String OriginalR1 = systemInfo.getAccount() + ":" + authData.getRealm() + ":" + systemInfo.getPassword(); + // 进行md5加密 + String md5R1 = SecureUtil.md5(OriginalR1); + // 生成r1 +// String r1 = HexUtil.encodeHexStr(md5R1); + // r2原始字符串 + String OriginalR2 = api.getMethod().name() + ":" + api.getUri(); + // 进行md5加密 + String md5R2 = SecureUtil.md5(OriginalR2); + // 生成r1 +// String r2 = HexUtil.encodeHexStr(md5R2); + + // response 原始字符串 + String cnonce = IdUtil.fastSimpleUUID(); + String nc = "00000002"; + String OriginalResponse = md5R1 + ":" + authData.getNonce() + ":" + nc + ":" + cnonce + ":" + authData.getQop() + ":" + md5R2; + // 进行md5加密 + String md5Response = SecureUtil.md5(OriginalResponse); + // 生成r1 +// String response = HexUtil.encodeHexStr(md5Response); + return UNIVIEW_AUTH_PREFIX + "username=\"" + systemInfo.getAccount() + "\"," + + "realm=\"" + authData.getRealm() + "\"," + + "nonce=\"" + authData.getNonce() + "\"," + + "uri=\"" + api.getUri() + "\"," + + "algorithm=\"" + authData.getAlgorithm() + "\"," + + "qop=\"" + authData.getQop() + "\"," + + "nc=\"" + nc + "\"," + + "cnonce=\"" + cnonce + "\"," + + "response=\"" + md5Response + "\""; + } + + /** + * 解析响应体参数,并缓存到鉴权map里 + */ + private void handleAuthData(HttpHeaders responseHeaders, UvSystemInfo systemInfo) { + List headers = responseHeaders.get(UNIVIEW_AUTH_FAIL_PRFIX); + headers.forEach(header -> { + log.info("获取到宇视设备返回的响应体参数: data: {}", header); + if (header.startsWith(UNIVIEW_AUTH_PREFIX)) { + header = header.replace(UNIVIEW_AUTH_PREFIX, ""); + } + String[] s = header.split(","); + if (s.length > 0) { + Map m = new HashMap<>(); + for (String str : s) { + String[] split = str.split("="); + String s1 = split[1].replaceAll("\"", ""); + m.put(split[0], s1); + } + UvRequestAuthInfo authData = new UvRequestAuthInfo(); + authData.setAlgorithm(m.get("algorithm")); + authData.setQop(m.get("qop")); + authData.setRealm(m.get("realm")); + authData.setNonce(m.get("nonce")); + authData.setStale(m.get("stale")); + CACHE_AUTH_MAP.put(systemInfo.getIp(), authData); + log.info("生成鉴权信息成功, authData={}", authData); + } + }); + } +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisAccessControlDeviceService.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisAccessControlDeviceService.java new file mode 100644 index 00000000..306ebf4b --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisAccessControlDeviceService.java @@ -0,0 +1,69 @@ +package org.dromara.sis.service; + +import org.dromara.sis.domain.SisAccessControlDevice; +import org.dromara.sis.domain.vo.SisAccessControlDeviceVo; +import org.dromara.sis.domain.bo.SisAccessControlDeviceBo; +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 mocheng + * @date 2025-06-25 + */ +public interface ISisAccessControlDeviceService { + + /** + * 查询门禁设备 + * + * @param id 主键 + * @return 门禁设备 + */ + SisAccessControlDeviceVo queryById(Long id); + + /** + * 分页查询门禁设备列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 门禁设备分页列表 + */ + TableDataInfo queryPageList(SisAccessControlDeviceBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的门禁设备列表 + * + * @param bo 查询条件 + * @return 门禁设备列表 + */ + List queryList(SisAccessControlDeviceBo bo); + + /** + * 新增门禁设备 + * + * @param bo 门禁设备 + * @return 是否新增成功 + */ + Boolean insertByBo(SisAccessControlDeviceBo bo); + + /** + * 修改门禁设备 + * + * @param bo 门禁设备 + * @return 是否修改成功 + */ + Boolean updateByBo(SisAccessControlDeviceBo bo); + + /** + * 校验并批量删除门禁设备信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/service/ITbAccessControlService.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisAccessControlService.java similarity index 70% rename from ruoyi-modules/Iot/src/main/java/org/dromara/iot/service/ITbAccessControlService.java rename to ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisAccessControlService.java index a2c7ee9a..12b6b263 100644 --- a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/service/ITbAccessControlService.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisAccessControlService.java @@ -1,9 +1,9 @@ -package org.dromara.iot.service; +package org.dromara.sis.service; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; -import org.dromara.iot.domain.bo.TbAccessControlBo; -import org.dromara.iot.domain.vo.TbAccessControlVo; +import org.dromara.sis.domain.bo.SisAccessControlBo; +import org.dromara.sis.domain.vo.SisAccessControlVo; import java.util.Collection; import java.util.List; @@ -14,7 +14,7 @@ import java.util.List; * @author mocheng * @date 2025-06-17 */ -public interface ITbAccessControlService { +public interface ISisAccessControlService { /** * 查询门禁管理 @@ -22,7 +22,7 @@ public interface ITbAccessControlService { * @param id 主键 * @return 门禁管理 */ - TbAccessControlVo queryById(Long id); + SisAccessControlVo queryById(Long id); /** * 分页查询门禁管理列表 @@ -31,7 +31,7 @@ public interface ITbAccessControlService { * @param pageQuery 分页参数 * @return 门禁管理分页列表 */ - TableDataInfo queryPageList(TbAccessControlBo bo, PageQuery pageQuery); + TableDataInfo queryPageList(SisAccessControlBo bo, PageQuery pageQuery); /** * 查询符合条件的门禁管理列表 @@ -39,7 +39,7 @@ public interface ITbAccessControlService { * @param bo 查询条件 * @return 门禁管理列表 */ - List queryList(TbAccessControlBo bo); + List queryList(SisAccessControlBo bo); /** * 新增门禁管理 @@ -47,7 +47,7 @@ public interface ITbAccessControlService { * @param bo 门禁管理 * @return 是否新增成功 */ - Boolean insertByBo(TbAccessControlBo bo); + Boolean insertByBo(SisAccessControlBo bo); /** * 修改门禁管理 @@ -55,7 +55,7 @@ public interface ITbAccessControlService { * @param bo 门禁管理 * @return 是否修改成功 */ - Boolean updateByBo(TbAccessControlBo bo); + Boolean updateByBo(SisAccessControlBo bo); /** * 校验并批量删除门禁管理信息 diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisDevicePointService.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisDevicePointService.java new file mode 100644 index 00000000..b9afc805 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisDevicePointService.java @@ -0,0 +1,69 @@ +package org.dromara.sis.service; + +import org.dromara.sis.domain.SisDevicePoint; +import org.dromara.sis.domain.vo.SisDevicePointVo; +import org.dromara.sis.domain.bo.SisDevicePointBo; +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 mocheng + * @date 2025-06-25 + */ +public interface ISisDevicePointService { + + /** + * 查询宇视设备点位(通道) + * + * @param id 主键 + * @return 宇视设备点位(通道) + */ + SisDevicePointVo queryById(Long id); + + /** + * 分页查询宇视设备点位(通道)列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 宇视设备点位(通道)分页列表 + */ + TableDataInfo queryPageList(SisDevicePointBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的宇视设备点位(通道)列表 + * + * @param bo 查询条件 + * @return 宇视设备点位(通道)列表 + */ + List queryList(SisDevicePointBo bo); + + /** + * 新增宇视设备点位(通道) + * + * @param bo 宇视设备点位(通道) + * @return 是否新增成功 + */ + Boolean insertByBo(SisDevicePointBo bo); + + /** + * 修改宇视设备点位(通道) + * + * @param bo 宇视设备点位(通道) + * @return 是否修改成功 + */ + Boolean updateByBo(SisDevicePointBo bo); + + /** + * 校验并批量删除宇视设备点位(通道)信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisLibDeviceImgRefService.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisLibDeviceImgRefService.java new file mode 100644 index 00000000..281935ae --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisLibDeviceImgRefService.java @@ -0,0 +1,68 @@ +package org.dromara.sis.service; + +import org.dromara.sis.domain.vo.SisLibDeviceImgRefVo; +import org.dromara.sis.domain.bo.SisLibDeviceImgRefBo; +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 mocheng + * @date 2025-06-24 + */ +public interface ISisLibDeviceImgRefService { + + /** + * 查询系统图片和设备图片的关联 + * + * @param id 主键 + * @return 系统图片和设备图片的关联 + */ + SisLibDeviceImgRefVo queryById(Long id); + + /** + * 分页查询系统图片和设备图片的关联列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 系统图片和设备图片的关联分页列表 + */ + TableDataInfo queryPageList(SisLibDeviceImgRefBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的系统图片和设备图片的关联列表 + * + * @param bo 查询条件 + * @return 系统图片和设备图片的关联列表 + */ + List queryList(SisLibDeviceImgRefBo bo); + + /** + * 新增系统图片和设备图片的关联 + * + * @param bo 系统图片和设备图片的关联 + * @return 是否新增成功 + */ + Boolean insertByBo(SisLibDeviceImgRefBo bo); + + /** + * 修改系统图片和设备图片的关联 + * + * @param bo 系统图片和设备图片的关联 + * @return 是否修改成功 + */ + Boolean updateByBo(SisLibDeviceImgRefBo bo); + + /** + * 校验并批量删除系统图片和设备图片的关联信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisLibDeviceRefService.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisLibDeviceRefService.java new file mode 100644 index 00000000..f9c95cf4 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisLibDeviceRefService.java @@ -0,0 +1,68 @@ +package org.dromara.sis.service; + +import org.dromara.sis.domain.vo.SisLibDeviceRefVo; +import org.dromara.sis.domain.bo.SisLibDeviceRefBo; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; + +import java.util.Collection; +import java.util.List; + +/** + * 系统库与设备库的关联Service接口 + * + * @author mocheng + * @date 2025-06-24 + */ +public interface ISisLibDeviceRefService { + + /** + * 查询系统库与设备库的关联 + * + * @param id 主键 + * @return 系统库与设备库的关联 + */ + SisLibDeviceRefVo queryById(Long id); + + /** + * 分页查询系统库与设备库的关联列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 系统库与设备库的关联分页列表 + */ + TableDataInfo queryPageList(SisLibDeviceRefBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的系统库与设备库的关联列表 + * + * @param bo 查询条件 + * @return 系统库与设备库的关联列表 + */ + List queryList(SisLibDeviceRefBo bo); + + /** + * 新增系统库与设备库的关联 + * + * @param bo 系统库与设备库的关联 + * @return 是否新增成功 + */ + Boolean insertByBo(SisLibDeviceRefBo bo); + + /** + * 修改系统库与设备库的关联 + * + * @param bo 系统库与设备库的关联 + * @return 是否修改成功 + */ + Boolean updateByBo(SisLibDeviceRefBo bo); + + /** + * 校验并批量删除系统库与设备库的关联信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisPersonLibImgService.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisPersonLibImgService.java new file mode 100644 index 00000000..429f9e4c --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisPersonLibImgService.java @@ -0,0 +1,68 @@ +package org.dromara.sis.service; + +import org.dromara.sis.domain.vo.SisPersonLibImgVo; +import org.dromara.sis.domain.bo.SisPersonLibImgBo; +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 mocheng + * @date 2025-06-24 + */ +public interface ISisPersonLibImgService { + + /** + * 查询人像信息 + * + * @param id 主键 + * @return 人像信息 + */ + SisPersonLibImgVo queryById(Long id); + + /** + * 分页查询人像信息列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 人像信息分页列表 + */ + TableDataInfo queryPageList(SisPersonLibImgBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的人像信息列表 + * + * @param bo 查询条件 + * @return 人像信息列表 + */ + List queryList(SisPersonLibImgBo bo); + + /** + * 新增人像信息 + * + * @param bo 人像信息 + * @return 是否新增成功 + */ + Boolean insertByBo(SisPersonLibImgBo bo); + + /** + * 修改人像信息 + * + * @param bo 人像信息 + * @return 是否修改成功 + */ + Boolean updateByBo(SisPersonLibImgBo bo); + + /** + * 校验并批量删除人像信息信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisPersonLibService.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisPersonLibService.java new file mode 100644 index 00000000..1738b457 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisPersonLibService.java @@ -0,0 +1,68 @@ +package org.dromara.sis.service; + +import org.dromara.sis.domain.vo.SisPersonLibVo; +import org.dromara.sis.domain.bo.SisPersonLibBo; +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 mocheng + * @date 2025-06-24 + */ +public interface ISisPersonLibService { + + /** + * 查询人像库 + * + * @param id 主键 + * @return 人像库 + */ + SisPersonLibVo queryById(Long id); + + /** + * 分页查询人像库列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 人像库分页列表 + */ + TableDataInfo queryPageList(SisPersonLibBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的人像库列表 + * + * @param bo 查询条件 + * @return 人像库列表 + */ + List queryList(SisPersonLibBo bo); + + /** + * 新增人像库 + * + * @param bo 人像库 + * @return 是否新增成功 + */ + Boolean insertByBo(SisPersonLibBo bo); + + /** + * 修改人像库 + * + * @param bo 人像库 + * @return 是否修改成功 + */ + Boolean updateByBo(SisPersonLibBo bo); + + /** + * 校验并批量删除人像库信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/service/ITdFactoryService.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ITdFactoryService.java similarity index 92% rename from ruoyi-modules/Iot/src/main/java/org/dromara/iot/service/ITdFactoryService.java rename to ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ITdFactoryService.java index ecfafd40..e29940b3 100644 --- a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/service/ITdFactoryService.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ITdFactoryService.java @@ -1,9 +1,9 @@ -package org.dromara.iot.service; +package org.dromara.sis.service; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; -import org.dromara.iot.domain.bo.TdFactoryBo; -import org.dromara.iot.domain.vo.TdFactoryVo; +import org.dromara.sis.domain.bo.TdFactoryBo; +import org.dromara.sis.domain.vo.TdFactoryVo; import java.util.Collection; import java.util.List; diff --git a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/service/ITdMeterConfigService.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ITdMeterConfigService.java similarity index 91% rename from ruoyi-modules/Iot/src/main/java/org/dromara/iot/service/ITdMeterConfigService.java rename to ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ITdMeterConfigService.java index 5eac7782..f2766b0f 100644 --- a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/service/ITdMeterConfigService.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ITdMeterConfigService.java @@ -1,9 +1,9 @@ -package org.dromara.iot.service; +package org.dromara.sis.service; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; -import org.dromara.iot.domain.bo.TdMeterConfigBo; -import org.dromara.iot.domain.vo.TdMeterConfigVo; +import org.dromara.sis.domain.bo.TdMeterConfigBo; +import org.dromara.sis.domain.vo.TdMeterConfigVo; import java.util.Collection; import java.util.List; diff --git a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/service/ITdMeterRoomService.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ITdMeterRoomService.java similarity index 91% rename from ruoyi-modules/Iot/src/main/java/org/dromara/iot/service/ITdMeterRoomService.java rename to ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ITdMeterRoomService.java index 97d2d1f1..ab3e9374 100644 --- a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/service/ITdMeterRoomService.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ITdMeterRoomService.java @@ -1,10 +1,10 @@ -package org.dromara.iot.service; +package org.dromara.sis.service; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; -import org.dromara.iot.domain.TdMeterRoom; -import org.dromara.iot.domain.bo.TdMeterRoomBo; -import org.dromara.iot.domain.vo.TdMeterRoomVo; +import org.dromara.sis.domain.TdMeterRoom; +import org.dromara.sis.domain.bo.TdMeterRoomBo; +import org.dromara.sis.domain.vo.TdMeterRoomVo; import java.util.Collection; import java.util.List; diff --git a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/service/ITdMeterService.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ITdMeterService.java similarity index 93% rename from ruoyi-modules/Iot/src/main/java/org/dromara/iot/service/ITdMeterService.java rename to ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ITdMeterService.java index b0189e21..ba2f4da0 100644 --- a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/service/ITdMeterService.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ITdMeterService.java @@ -1,9 +1,9 @@ -package org.dromara.iot.service; +package org.dromara.sis.service; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; -import org.dromara.iot.domain.bo.TdMeterBo; -import org.dromara.iot.domain.vo.TdMeterVo; +import org.dromara.sis.domain.bo.TdMeterBo; +import org.dromara.sis.domain.vo.TdMeterVo; import java.util.Collection; import java.util.List; diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAccessControlDeviceServiceImpl.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAccessControlDeviceServiceImpl.java new file mode 100644 index 00000000..864d55a1 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAccessControlDeviceServiceImpl.java @@ -0,0 +1,143 @@ +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.SisAccessControlDeviceBo; +import org.dromara.sis.domain.vo.SisAccessControlDeviceVo; +import org.dromara.sis.domain.SisAccessControlDevice; +import org.dromara.sis.mapper.SisAccessControlDeviceMapper; +import org.dromara.sis.service.ISisAccessControlDeviceService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 门禁设备Service业务层处理 + * + * @author mocheng + * @date 2025-06-25 + */ +@Slf4j +@RequiredArgsConstructor +@Service +public class SisAccessControlDeviceServiceImpl implements ISisAccessControlDeviceService { + + private final SisAccessControlDeviceMapper baseMapper; + + /** + * 查询门禁设备 + * + * @param id 主键 + * @return 门禁设备 + */ + @Override + public SisAccessControlDeviceVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 分页查询门禁设备列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 门禁设备分页列表 + */ + @Override + public TableDataInfo queryPageList(SisAccessControlDeviceBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的门禁设备列表 + * + * @param bo 查询条件 + * @return 门禁设备列表 + */ + @Override + public List queryList(SisAccessControlDeviceBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(SisAccessControlDeviceBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByAsc(SisAccessControlDevice::getId); + lqw.eq(StringUtils.isNotBlank(bo.getEqpNo()), SisAccessControlDevice::getEqpNo, bo.getEqpNo()); + lqw.like(StringUtils.isNotBlank(bo.getEqpName()), SisAccessControlDevice::getEqpName, bo.getEqpName()); + lqw.eq(StringUtils.isNotBlank(bo.getFactoryNo()), SisAccessControlDevice::getFactoryNo, bo.getFactoryNo()); + lqw.eq(bo.getEqpType() != null, SisAccessControlDevice::getEqpType, bo.getEqpType()); + lqw.eq(bo.getAccessType() != null, SisAccessControlDevice::getAccessType, bo.getAccessType()); + lqw.eq(StringUtils.isNotBlank(bo.getEqpIp()), SisAccessControlDevice::getEqpIp, bo.getEqpIp()); + lqw.eq(bo.getEqpPort() != null, SisAccessControlDevice::getEqpPort, bo.getEqpPort()); + lqw.eq(StringUtils.isNotBlank(bo.getEqpAccount()), SisAccessControlDevice::getEqpAccount, bo.getEqpAccount()); + lqw.eq(StringUtils.isNotBlank(bo.getEqpPwd()), SisAccessControlDevice::getEqpPwd, bo.getEqpPwd()); + lqw.eq(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()); + return lqw; + } + + /** + * 新增门禁设备 + * + * @param bo 门禁设备 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(SisAccessControlDeviceBo bo) { + SisAccessControlDevice add = MapstructUtils.convert(bo, SisAccessControlDevice.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改门禁设备 + * + * @param bo 门禁设备 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(SisAccessControlDeviceBo bo) { + SisAccessControlDevice update = MapstructUtils.convert(bo, SisAccessControlDevice.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(SisAccessControlDevice entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除门禁设备信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } +} diff --git a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/service/impl/TbAccessControlServiceImpl.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAccessControlServiceImpl.java similarity index 51% rename from ruoyi-modules/Iot/src/main/java/org/dromara/iot/service/impl/TbAccessControlServiceImpl.java rename to ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAccessControlServiceImpl.java index 8576bf5e..eca0763c 100644 --- a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/service/impl/TbAccessControlServiceImpl.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAccessControlServiceImpl.java @@ -1,4 +1,4 @@ -package org.dromara.iot.service.impl; +package org.dromara.sis.service.impl; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; @@ -9,16 +9,15 @@ 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.dromara.iot.service.e8.api.base.DoorDeviceService; -import org.dromara.iot.service.e8.model.DoorDevice.req.DoorDeviceAddReq; -import org.dromara.iot.service.e8.model.DoorDevice.res.DoorDeviceAddRes; +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.dromara.iot.domain.bo.TbAccessControlBo; -import org.dromara.iot.domain.vo.TbAccessControlVo; -import org.dromara.iot.domain.TbAccessControl; -import org.dromara.iot.mapper.TbAccessControlMapper; -import org.dromara.iot.service.ITbAccessControlService; - +import org.dromara.sis.domain.bo.SisAccessControlBo; +import org.dromara.sis.domain.vo.SisAccessControlVo; +import org.dromara.sis.domain.SisAccessControl; +import org.dromara.sis.mapper.SisAccessControlMapper; +import org.dromara.sis.service.ISisAccessControlService; import java.util.List; import java.util.Map; import java.util.Collection; @@ -32,9 +31,9 @@ import java.util.Collection; @Slf4j @RequiredArgsConstructor @Service -public class TbAccessControlServiceImpl implements ITbAccessControlService { +public class SisAccessControlServiceImpl implements ISisAccessControlService { - private final TbAccessControlMapper baseMapper; + private final SisAccessControlMapper baseMapper; private final DoorDeviceService doorDeviceService; /** @@ -44,7 +43,7 @@ public class TbAccessControlServiceImpl implements ITbAccessControlService { * @return 门禁管理 */ @Override - public TbAccessControlVo queryById(Long id) { + public SisAccessControlVo queryById(Long id) { return baseMapper.selectVoById(id); } @@ -56,9 +55,9 @@ public class TbAccessControlServiceImpl implements ITbAccessControlService { * @return 门禁管理分页列表 */ @Override - public TableDataInfo queryPageList(TbAccessControlBo bo, PageQuery pageQuery) { - LambdaQueryWrapper lqw = buildQueryWrapper(bo); - Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + public TableDataInfo queryPageList(SisAccessControlBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); return TableDataInfo.build(result); } @@ -69,28 +68,28 @@ public class TbAccessControlServiceImpl implements ITbAccessControlService { * @return 门禁管理列表 */ @Override - public List queryList(TbAccessControlBo bo) { - LambdaQueryWrapper lqw = buildQueryWrapper(bo); + public List queryList(SisAccessControlBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); return baseMapper.selectVoList(lqw); } - private LambdaQueryWrapper buildQueryWrapper(TbAccessControlBo bo) { + private LambdaQueryWrapper buildQueryWrapper(SisAccessControlBo bo) { Map params = bo.getParams(); - LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); - lqw.orderByAsc(TbAccessControl::getId); - lqw.eq(StringUtils.isNotBlank(bo.getAccessCode()), TbAccessControl::getAccessCode, bo.getAccessCode()); - lqw.like(StringUtils.isNotBlank(bo.getAccessName()), TbAccessControl::getAccessName, bo.getAccessName()); - lqw.eq(StringUtils.isNotBlank(bo.getCommunityCode()), TbAccessControl::getCommunityCode, bo.getCommunityCode()); - lqw.eq(StringUtils.isNotBlank(bo.getBuildingCode()), TbAccessControl::getBuildingCode, bo.getBuildingCode()); - lqw.eq(StringUtils.isNotBlank(bo.getAccessIp()), TbAccessControl::getAccessIp, bo.getAccessIp()); - lqw.eq(bo.getAccessPort() != null, TbAccessControl::getAccessPort, bo.getAccessPort()); - lqw.eq(bo.getAccssType() != null, TbAccessControl::getAccessType, bo.getAccssType()); - lqw.eq(StringUtils.isNotBlank(bo.getFactoryCode()), TbAccessControl::getFactoryCode, bo.getFactoryCode()); - lqw.eq(bo.getControlType() != null, TbAccessControl::getControlType, bo.getControlType()); - lqw.eq(StringUtils.isNotBlank(bo.getControlCode()), TbAccessControl::getControlCode, bo.getControlCode()); - lqw.eq(StringUtils.isNotBlank(bo.getOutCode()), TbAccessControl::getOutCode, bo.getOutCode()); - lqw.eq(StringUtils.isNotBlank(bo.getOrgCode()), TbAccessControl::getOrgCode, bo.getOrgCode()); - lqw.eq(bo.getDataState() != null, TbAccessControl::getDataState, bo.getDataState()); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByAsc(SisAccessControl::getId); + lqw.eq(StringUtils.isNotBlank(bo.getAccessCode()), SisAccessControl::getAccessCode, bo.getAccessCode()); + lqw.like(StringUtils.isNotBlank(bo.getAccessName()), SisAccessControl::getAccessName, bo.getAccessName()); + lqw.eq(StringUtils.isNotBlank(bo.getCommunityCode()), SisAccessControl::getCommunityCode, bo.getCommunityCode()); + lqw.eq(StringUtils.isNotBlank(bo.getBuildingCode()), SisAccessControl::getBuildingCode, bo.getBuildingCode()); + lqw.eq(StringUtils.isNotBlank(bo.getAccessIp()), SisAccessControl::getAccessIp, bo.getAccessIp()); + lqw.eq(bo.getAccessPort() != null, SisAccessControl::getAccessPort, bo.getAccessPort()); + lqw.eq(bo.getAccssType() != null, SisAccessControl::getAccessType, bo.getAccssType()); + lqw.eq(StringUtils.isNotBlank(bo.getFactoryCode()), SisAccessControl::getFactoryCode, bo.getFactoryCode()); + lqw.eq(bo.getControlType() != null, SisAccessControl::getControlType, bo.getControlType()); + 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.getOrgCode()), SisAccessControl::getOrgCode, bo.getOrgCode()); + lqw.eq(bo.getDataState() != null, SisAccessControl::getDataState, bo.getDataState()); return lqw; } @@ -101,8 +100,8 @@ public class TbAccessControlServiceImpl implements ITbAccessControlService { * @return 是否新增成功 */ @Override - public Boolean insertByBo(TbAccessControlBo bo) { - TbAccessControl add = MapstructUtils.convert(bo, TbAccessControl.class); + public Boolean insertByBo(SisAccessControlBo bo) { + SisAccessControl add = MapstructUtils.convert(bo, SisAccessControl.class); // 添加E8门禁设备 if (add.getControlType() == 2L){ @@ -134,8 +133,8 @@ public class TbAccessControlServiceImpl implements ITbAccessControlService { * @return 是否修改成功 */ @Override - public Boolean updateByBo(TbAccessControlBo bo) { - TbAccessControl update = MapstructUtils.convert(bo, TbAccessControl.class); + public Boolean updateByBo(SisAccessControlBo bo) { + SisAccessControl update = MapstructUtils.convert(bo, SisAccessControl.class); validEntityBeforeSave(update); return baseMapper.updateById(update) > 0; } @@ -143,7 +142,7 @@ public class TbAccessControlServiceImpl implements ITbAccessControlService { /** * 保存前的数据校验 */ - private void validEntityBeforeSave(TbAccessControl entity) { + private void validEntityBeforeSave(SisAccessControl entity) { //TODO 做一些数据校验,如唯一约束 } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisDevicePointServiceImpl.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisDevicePointServiceImpl.java new file mode 100644 index 00000000..7cdf2777 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisDevicePointServiceImpl.java @@ -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.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 queryPageList(SisDevicePointBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的宇视设备点位(通道)列表 + * + * @param bo 查询条件 + * @return 宇视设备点位(通道)列表 + */ + @Override + public List queryList(SisDevicePointBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(SisDevicePointBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper 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 ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisLibDeviceImgRefServiceImpl.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisLibDeviceImgRefServiceImpl.java new file mode 100644 index 00000000..ce457571 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisLibDeviceImgRefServiceImpl.java @@ -0,0 +1,139 @@ +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.SisLibDeviceImgRefBo; +import org.dromara.sis.domain.vo.SisLibDeviceImgRefVo; +import org.dromara.sis.domain.SisLibDeviceImgRef; +import org.dromara.sis.mapper.SisLibDeviceImgRefMapper; +import org.dromara.sis.service.ISisLibDeviceImgRefService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 系统图片和设备图片的关联Service业务层处理 + * + * @author mocheng + * @date 2025-06-24 + */ +@Slf4j +@RequiredArgsConstructor +@Service +public class SisLibDeviceImgRefServiceImpl implements ISisLibDeviceImgRefService { + + private final SisLibDeviceImgRefMapper baseMapper; + + /** + * 查询系统图片和设备图片的关联 + * + * @param id 主键 + * @return 系统图片和设备图片的关联 + */ + @Override + public SisLibDeviceImgRefVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 分页查询系统图片和设备图片的关联列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 系统图片和设备图片的关联分页列表 + */ + @Override + public TableDataInfo queryPageList(SisLibDeviceImgRefBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的系统图片和设备图片的关联列表 + * + * @param bo 查询条件 + * @return 系统图片和设备图片的关联列表 + */ + @Override + public List queryList(SisLibDeviceImgRefBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(SisLibDeviceImgRefBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByAsc(SisLibDeviceImgRef::getId); + lqw.eq(StringUtils.isNotBlank(bo.getLibCode()), SisLibDeviceImgRef::getLibCode, bo.getLibCode()); + lqw.eq(StringUtils.isNotBlank(bo.getImgCode()), SisLibDeviceImgRef::getImgCode, bo.getImgCode()); + lqw.eq(StringUtils.isNotBlank(bo.getEqpCode()), SisLibDeviceImgRef::getEqpCode, bo.getEqpCode()); + lqw.eq(bo.getEqpLibId() != null, SisLibDeviceImgRef::getEqpLibId, bo.getEqpLibId()); + 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()); + return lqw; + } + + /** + * 新增系统图片和设备图片的关联 + * + * @param bo 系统图片和设备图片的关联 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(SisLibDeviceImgRefBo bo) { + SisLibDeviceImgRef add = MapstructUtils.convert(bo, SisLibDeviceImgRef.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改系统图片和设备图片的关联 + * + * @param bo 系统图片和设备图片的关联 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(SisLibDeviceImgRefBo bo) { + SisLibDeviceImgRef update = MapstructUtils.convert(bo, SisLibDeviceImgRef.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(SisLibDeviceImgRef entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除系统图片和设备图片的关联信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisLibDeviceRefServiceImpl.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisLibDeviceRefServiceImpl.java new file mode 100644 index 00000000..adf8ddc8 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisLibDeviceRefServiceImpl.java @@ -0,0 +1,138 @@ +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.SisLibDeviceRefBo; +import org.dromara.sis.domain.vo.SisLibDeviceRefVo; +import org.dromara.sis.domain.SisLibDeviceRef; +import org.dromara.sis.mapper.SisLibDeviceRefMapper; +import org.dromara.sis.service.ISisLibDeviceRefService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 系统库与设备库的关联Service业务层处理 + * + * @author mocheng + * @date 2025-06-24 + */ +@Slf4j +@RequiredArgsConstructor +@Service +public class SisLibDeviceRefServiceImpl implements ISisLibDeviceRefService { + + private final SisLibDeviceRefMapper baseMapper; + + /** + * 查询系统库与设备库的关联 + * + * @param id 主键 + * @return 系统库与设备库的关联 + */ + @Override + public SisLibDeviceRefVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 分页查询系统库与设备库的关联列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 系统库与设备库的关联分页列表 + */ + @Override + public TableDataInfo queryPageList(SisLibDeviceRefBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的系统库与设备库的关联列表 + * + * @param bo 查询条件 + * @return 系统库与设备库的关联列表 + */ + @Override + public List queryList(SisLibDeviceRefBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(SisLibDeviceRefBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByAsc(SisLibDeviceRef::getId); + lqw.eq(StringUtils.isNotBlank(bo.getLibCode()), SisLibDeviceRef::getLibCode, bo.getLibCode()); + lqw.eq(StringUtils.isNotBlank(bo.getEqpCode()), SisLibDeviceRef::getEqpCode, bo.getEqpCode()); + lqw.eq(bo.getEqpLibCode() != null, SisLibDeviceRef::getEqpLibCode, bo.getEqpLibCode()); + 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()); + return lqw; + } + + /** + * 新增系统库与设备库的关联 + * + * @param bo 系统库与设备库的关联 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(SisLibDeviceRefBo bo) { + SisLibDeviceRef add = MapstructUtils.convert(bo, SisLibDeviceRef.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改系统库与设备库的关联 + * + * @param bo 系统库与设备库的关联 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(SisLibDeviceRefBo bo) { + SisLibDeviceRef update = MapstructUtils.convert(bo, SisLibDeviceRef.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(SisLibDeviceRef entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除系统库与设备库的关联信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisPersonLibImgServiceImpl.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisPersonLibImgServiceImpl.java new file mode 100644 index 00000000..ea3d79b0 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisPersonLibImgServiceImpl.java @@ -0,0 +1,144 @@ +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.SisPersonLibImgBo; +import org.dromara.sis.domain.vo.SisPersonLibImgVo; +import org.dromara.sis.domain.SisPersonLibImg; +import org.dromara.sis.mapper.SisPersonLibImgMapper; +import org.dromara.sis.service.ISisPersonLibImgService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 人像信息Service业务层处理 + * + * @author mocheng + * @date 2025-06-24 + */ +@Slf4j +@RequiredArgsConstructor +@Service +public class SisPersonLibImgServiceImpl implements ISisPersonLibImgService { + + private final SisPersonLibImgMapper baseMapper; + + /** + * 查询人像信息 + * + * @param id 主键 + * @return 人像信息 + */ + @Override + public SisPersonLibImgVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 分页查询人像信息列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 人像信息分页列表 + */ + @Override + public TableDataInfo queryPageList(SisPersonLibImgBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的人像信息列表 + * + * @param bo 查询条件 + * @return 人像信息列表 + */ + @Override + public List queryList(SisPersonLibImgBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(SisPersonLibImgBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByAsc(SisPersonLibImg::getId); + lqw.eq(StringUtils.isNotBlank(bo.getLibCode()), SisPersonLibImg::getLibCode, bo.getLibCode()); + lqw.like(StringUtils.isNotBlank(bo.getImgName()), SisPersonLibImg::getImgName, bo.getImgName()); + lqw.eq(StringUtils.isNotBlank(bo.getImgCode()), SisPersonLibImg::getImgCode, bo.getImgCode()); + lqw.eq(StringUtils.isNotBlank(bo.getImgUrl()), SisPersonLibImg::getImgUrl, bo.getImgUrl()); + lqw.eq(bo.getSex() != null, SisPersonLibImg::getSex, bo.getSex()); + lqw.eq(StringUtils.isNotBlank(bo.getEmail()), SisPersonLibImg::getEmail, bo.getEmail()); + lqw.eq(StringUtils.isNotBlank(bo.getTel()), SisPersonLibImg::getTel, bo.getTel()); + lqw.eq(bo.getCertificateType() != null, SisPersonLibImg::getCertificateType, bo.getCertificateType()); + lqw.eq(StringUtils.isNotBlank(bo.getCertificateNo()), SisPersonLibImg::getCertificateNo, bo.getCertificateNo()); + 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()); + return lqw; + } + + /** + * 新增人像信息 + * + * @param bo 人像信息 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(SisPersonLibImgBo bo) { + SisPersonLibImg add = MapstructUtils.convert(bo, SisPersonLibImg.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改人像信息 + * + * @param bo 人像信息 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(SisPersonLibImgBo bo) { + SisPersonLibImg update = MapstructUtils.convert(bo, SisPersonLibImg.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(SisPersonLibImg entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除人像信息信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisPersonLibServiceImpl.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisPersonLibServiceImpl.java new file mode 100644 index 00000000..9bfedc3c --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisPersonLibServiceImpl.java @@ -0,0 +1,139 @@ +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.dromara.sis.mapper.SisPersonLibMapper; +import org.springframework.stereotype.Service; +import org.dromara.sis.domain.bo.SisPersonLibBo; +import org.dromara.sis.domain.vo.SisPersonLibVo; +import org.dromara.sis.domain.SisPersonLib; +import org.dromara.sis.service.ISisPersonLibService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 人像库Service业务层处理 + * + * @author mocheng + * @date 2025-06-24 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class SisPersonLibServiceImpl implements ISisPersonLibService { + + private final SisPersonLibMapper baseMapper; + + /** + * 查询人像库 + * + * @param id 主键 + * @return 人像库 + */ + @Override + public SisPersonLibVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 分页查询人像库列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 人像库分页列表 + */ + @Override + public TableDataInfo queryPageList(SisPersonLibBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的人像库列表 + * + * @param bo 查询条件 + * @return 人像库列表 + */ + @Override + public List queryList(SisPersonLibBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(SisPersonLibBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByAsc(SisPersonLib::getId); + lqw.eq(StringUtils.isNotBlank(bo.getLibCode()), SisPersonLib::getLibCode, bo.getLibCode()); + lqw.like(StringUtils.isNotBlank(bo.getLibName()), SisPersonLib::getLibName, bo.getLibName()); + lqw.eq(StringUtils.isNotBlank(bo.getLibDesc()), SisPersonLib::getLibDesc, bo.getLibDesc()); + lqw.eq(bo.getLibType() != null, SisPersonLib::getLibType, bo.getLibType()); + 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()); + return lqw; + } + + /** + * 新增人像库 + * + * @param bo 人像库 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(SisPersonLibBo bo) { + SisPersonLib add = MapstructUtils.convert(bo, SisPersonLib.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改人像库 + * + * @param bo 人像库 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(SisPersonLibBo bo) { + SisPersonLib update = MapstructUtils.convert(bo, SisPersonLib.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(SisPersonLib entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除人像库信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } +} diff --git a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/service/impl/TdFactoryServiceImpl.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/TdFactoryServiceImpl.java similarity index 93% rename from ruoyi-modules/Iot/src/main/java/org/dromara/iot/service/impl/TdFactoryServiceImpl.java rename to ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/TdFactoryServiceImpl.java index 978dd8d8..5920ca6f 100644 --- a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/service/impl/TdFactoryServiceImpl.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/TdFactoryServiceImpl.java @@ -1,4 +1,4 @@ -package org.dromara.iot.service.impl; +package org.dromara.sis.service.impl; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; @@ -10,11 +10,11 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; -import org.dromara.iot.domain.bo.TdFactoryBo; -import org.dromara.iot.domain.vo.TdFactoryVo; -import org.dromara.iot.domain.TdFactory; -import org.dromara.iot.mapper.TdFactoryMapper; -import org.dromara.iot.service.ITdFactoryService; +import org.dromara.sis.domain.bo.TdFactoryBo; +import org.dromara.sis.domain.vo.TdFactoryVo; +import org.dromara.sis.domain.TdFactory; +import org.dromara.sis.mapper.TdFactoryMapper; +import org.dromara.sis.service.ITdFactoryService; import java.util.List; import java.util.Map; diff --git a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/service/impl/TdMeterConfigServiceImpl.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/TdMeterConfigServiceImpl.java similarity index 92% rename from ruoyi-modules/Iot/src/main/java/org/dromara/iot/service/impl/TdMeterConfigServiceImpl.java rename to ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/TdMeterConfigServiceImpl.java index b9b13613..ea2621a9 100644 --- a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/service/impl/TdMeterConfigServiceImpl.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/TdMeterConfigServiceImpl.java @@ -1,7 +1,6 @@ -package org.dromara.iot.service.impl; +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; @@ -10,11 +9,11 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; -import org.dromara.iot.domain.bo.TdMeterConfigBo; -import org.dromara.iot.domain.vo.TdMeterConfigVo; -import org.dromara.iot.domain.TdMeterConfig; -import org.dromara.iot.mapper.TdMeterConfigMapper; -import org.dromara.iot.service.ITdMeterConfigService; +import org.dromara.sis.domain.bo.TdMeterConfigBo; +import org.dromara.sis.domain.vo.TdMeterConfigVo; +import org.dromara.sis.domain.TdMeterConfig; +import org.dromara.sis.mapper.TdMeterConfigMapper; +import org.dromara.sis.service.ITdMeterConfigService; import java.util.List; import java.util.Map; diff --git a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/service/impl/TdMeterRoomServiceImpl.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/TdMeterRoomServiceImpl.java similarity index 93% rename from ruoyi-modules/Iot/src/main/java/org/dromara/iot/service/impl/TdMeterRoomServiceImpl.java rename to ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/TdMeterRoomServiceImpl.java index 5f7561ec..ef2323a1 100644 --- a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/service/impl/TdMeterRoomServiceImpl.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/TdMeterRoomServiceImpl.java @@ -1,4 +1,4 @@ -package org.dromara.iot.service.impl; +package org.dromara.sis.service.impl; import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -10,11 +10,11 @@ import lombok.extern.slf4j.Slf4j; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; -import org.dromara.iot.domain.TdMeterRoom; -import org.dromara.iot.domain.bo.TdMeterRoomBo; -import org.dromara.iot.domain.vo.TdMeterRoomVo; -import org.dromara.iot.mapper.TdMeterRoomMapper; -import org.dromara.iot.service.ITdMeterRoomService; +import org.dromara.sis.domain.TdMeterRoom; +import org.dromara.sis.domain.bo.TdMeterRoomBo; +import org.dromara.sis.domain.vo.TdMeterRoomVo; +import org.dromara.sis.mapper.TdMeterRoomMapper; +import org.dromara.sis.service.ITdMeterRoomService; import org.springframework.stereotype.Service; import java.util.Collection; diff --git a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/service/impl/TdMeterServiceImpl.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/TdMeterServiceImpl.java similarity index 94% rename from ruoyi-modules/Iot/src/main/java/org/dromara/iot/service/impl/TdMeterServiceImpl.java rename to ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/TdMeterServiceImpl.java index d1b95c78..6e6cd403 100644 --- a/ruoyi-modules/Iot/src/main/java/org/dromara/iot/service/impl/TdMeterServiceImpl.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/TdMeterServiceImpl.java @@ -1,4 +1,4 @@ -package org.dromara.iot.service.impl; +package org.dromara.sis.service.impl; import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -11,13 +11,13 @@ 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.iot.domain.TdMeter; -import org.dromara.iot.domain.TdMeterRoom; -import org.dromara.iot.domain.bo.TdMeterBo; -import org.dromara.iot.domain.vo.TdMeterVo; -import org.dromara.iot.mapper.TdMeterMapper; -import org.dromara.iot.service.ITdMeterRoomService; -import org.dromara.iot.service.ITdMeterService; +import org.dromara.sis.domain.TdMeter; +import org.dromara.sis.domain.TdMeterRoom; +import org.dromara.sis.domain.bo.TdMeterBo; +import org.dromara.sis.domain.vo.TdMeterVo; +import org.dromara.sis.mapper.TdMeterMapper; +import org.dromara.sis.service.ITdMeterRoomService; +import org.dromara.sis.service.ITdMeterService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; diff --git a/ruoyi-modules/Iot/src/main/resources/application.yml b/ruoyi-modules/Sis/src/main/resources/application.yml similarity index 98% rename from ruoyi-modules/Iot/src/main/resources/application.yml rename to ruoyi-modules/Sis/src/main/resources/application.yml index 63b34ac9..71f0aaf0 100644 --- a/ruoyi-modules/Iot/src/main/resources/application.yml +++ b/ruoyi-modules/Sis/src/main/resources/application.yml @@ -6,7 +6,7 @@ server: spring: application: # 应用名称 - name: iot + name: Sis profiles: # 环境配置 active: @profiles.active@ diff --git a/ruoyi-modules/Iot/src/main/resources/banner.txt b/ruoyi-modules/Sis/src/main/resources/banner.txt similarity index 100% rename from ruoyi-modules/Iot/src/main/resources/banner.txt rename to ruoyi-modules/Sis/src/main/resources/banner.txt diff --git a/ruoyi-modules/Iot/src/main/resources/logback-plus.xml b/ruoyi-modules/Sis/src/main/resources/logback-plus.xml similarity index 100% rename from ruoyi-modules/Iot/src/main/resources/logback-plus.xml rename to ruoyi-modules/Sis/src/main/resources/logback-plus.xml diff --git a/ruoyi-modules/Sis/src/main/resources/mapper/sis/SisAccessControlDeviceMapper.xml b/ruoyi-modules/Sis/src/main/resources/mapper/sis/SisAccessControlDeviceMapper.xml new file mode 100644 index 00000000..81a4d8ab --- /dev/null +++ b/ruoyi-modules/Sis/src/main/resources/mapper/sis/SisAccessControlDeviceMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/ruoyi-modules/Sis/src/main/resources/mapper/sis/SisAccessControlMapper.xml b/ruoyi-modules/Sis/src/main/resources/mapper/sis/SisAccessControlMapper.xml new file mode 100644 index 00000000..006583e8 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/resources/mapper/sis/SisAccessControlMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/ruoyi-modules/Sis/src/main/resources/mapper/sis/SisDevicePointMapper.xml b/ruoyi-modules/Sis/src/main/resources/mapper/sis/SisDevicePointMapper.xml new file mode 100644 index 00000000..4d26d93b --- /dev/null +++ b/ruoyi-modules/Sis/src/main/resources/mapper/sis/SisDevicePointMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/ruoyi-modules/Sis/src/main/resources/mapper/sis/SisLibDeviceImgRefMapper.xml b/ruoyi-modules/Sis/src/main/resources/mapper/sis/SisLibDeviceImgRefMapper.xml new file mode 100644 index 00000000..4960c9c5 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/resources/mapper/sis/SisLibDeviceImgRefMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/ruoyi-modules/Iot/src/main/resources/mapper/TbAccessControlMapper.xml b/ruoyi-modules/Sis/src/main/resources/mapper/sis/SisLibDeviceRefMapper.xml similarity index 71% rename from ruoyi-modules/Iot/src/main/resources/mapper/TbAccessControlMapper.xml rename to ruoyi-modules/Sis/src/main/resources/mapper/sis/SisLibDeviceRefMapper.xml index 53db1490..4e939ba4 100644 --- a/ruoyi-modules/Iot/src/main/resources/mapper/TbAccessControlMapper.xml +++ b/ruoyi-modules/Sis/src/main/resources/mapper/sis/SisLibDeviceRefMapper.xml @@ -2,6 +2,6 @@ - + diff --git a/ruoyi-modules/Sis/src/main/resources/mapper/sis/SisPersonLibImgMapper.xml b/ruoyi-modules/Sis/src/main/resources/mapper/sis/SisPersonLibImgMapper.xml new file mode 100644 index 00000000..9c9147f2 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/resources/mapper/sis/SisPersonLibImgMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/ruoyi-modules/Sis/src/main/resources/mapper/sis/SisPersonLibMapper.xml b/ruoyi-modules/Sis/src/main/resources/mapper/sis/SisPersonLibMapper.xml new file mode 100644 index 00000000..b5adf79c --- /dev/null +++ b/ruoyi-modules/Sis/src/main/resources/mapper/sis/SisPersonLibMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/ruoyi-modules/Iot/src/main/resources/mapper/TdFactoryMapper.xml b/ruoyi-modules/Sis/src/main/resources/mapper/sis/TdFactoryMapper.xml similarity index 72% rename from ruoyi-modules/Iot/src/main/resources/mapper/TdFactoryMapper.xml rename to ruoyi-modules/Sis/src/main/resources/mapper/sis/TdFactoryMapper.xml index a0b86302..d663d29f 100644 --- a/ruoyi-modules/Iot/src/main/resources/mapper/TdFactoryMapper.xml +++ b/ruoyi-modules/Sis/src/main/resources/mapper/sis/TdFactoryMapper.xml @@ -2,6 +2,6 @@ - + diff --git a/ruoyi-modules/Iot/src/main/resources/mapper/TdMeterConfigMapper.xml b/ruoyi-modules/Sis/src/main/resources/mapper/sis/TdMeterConfigMapper.xml similarity index 71% rename from ruoyi-modules/Iot/src/main/resources/mapper/TdMeterConfigMapper.xml rename to ruoyi-modules/Sis/src/main/resources/mapper/sis/TdMeterConfigMapper.xml index fc09999e..ba0b4780 100644 --- a/ruoyi-modules/Iot/src/main/resources/mapper/TdMeterConfigMapper.xml +++ b/ruoyi-modules/Sis/src/main/resources/mapper/sis/TdMeterConfigMapper.xml @@ -2,6 +2,6 @@ - + diff --git a/ruoyi-modules/Iot/src/main/resources/mapper/TdMeterMapper.xml b/ruoyi-modules/Sis/src/main/resources/mapper/sis/TdMeterMapper.xml similarity index 73% rename from ruoyi-modules/Iot/src/main/resources/mapper/TdMeterMapper.xml rename to ruoyi-modules/Sis/src/main/resources/mapper/sis/TdMeterMapper.xml index 69fddacb..8ae60676 100644 --- a/ruoyi-modules/Iot/src/main/resources/mapper/TdMeterMapper.xml +++ b/ruoyi-modules/Sis/src/main/resources/mapper/sis/TdMeterMapper.xml @@ -2,6 +2,6 @@ - + diff --git a/ruoyi-modules/Iot/src/main/resources/mapper/TdMeterRoomMapper.xml b/ruoyi-modules/Sis/src/main/resources/mapper/sis/TdMeterRoomMapper.xml similarity index 71% rename from ruoyi-modules/Iot/src/main/resources/mapper/TdMeterRoomMapper.xml rename to ruoyi-modules/Sis/src/main/resources/mapper/sis/TdMeterRoomMapper.xml index 373e9f45..daccd1d8 100644 --- a/ruoyi-modules/Iot/src/main/resources/mapper/TdMeterRoomMapper.xml +++ b/ruoyi-modules/Sis/src/main/resources/mapper/sis/TdMeterRoomMapper.xml @@ -2,6 +2,6 @@ - + diff --git a/ruoyi-modules/pom.xml b/ruoyi-modules/pom.xml index 25f0253b..8f73c2b6 100644 --- a/ruoyi-modules/pom.xml +++ b/ruoyi-modules/pom.xml @@ -15,7 +15,7 @@ ruoyi-resource ruoyi-workflow Property - Iot + Sis ruoyi-modules diff --git a/ruoyi-visual/ruoyi-nacos/src/main/resources/application.properties b/ruoyi-visual/ruoyi-nacos/src/main/resources/application.properties index 470d4aaa..f1576cac 100644 --- a/ruoyi-visual/ruoyi-nacos/src/main/resources/application.properties +++ b/ruoyi-visual/ruoyi-nacos/src/main/resources/application.properties @@ -40,9 +40,9 @@ spring.sql.init.platform=mysql db.num=1 ### Connect URL of DB: -db.url.0=jdbc:mysql://127.0.0.1:3306/dimp?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.password.0=1234 +db.password.0=123456 ### the maximum retry times for push nacos.config.push.maxRetryTime=50