diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/CodePrefixConstants.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/CodePrefixConstants.java index 7d1e158f..8b42cfdb 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/CodePrefixConstants.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/CodePrefixConstants.java @@ -12,9 +12,9 @@ public interface CodePrefixConstants { String SIS_DEVICE_CODE_PREFIX = "101"; /** - * 人像编码前缀 + * 华为人像编码前缀 */ - String PERSON_LIB_IMAGE_CODE_PREFIX = "102"; + String PERSON_LIB_IMAGE_CODE_PREFIX = "HW"; String ELEVATOR_CONTROL_CODE_PREFIX = "E01"; diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/InspectionItemController.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/InspectionItemController.java new file mode 100644 index 00000000..5bf5a833 --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/InspectionItemController.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.dromara.property.domain.bo.InspectionItemBo; +import org.dromara.property.domain.vo.InspectionItemVo; +import org.dromara.property.service.IInspectionItemService; +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.common.mybatis.core.page.TableDataInfo; + +/** + * 巡检项目 + * 前端访问路由地址为:/property/item + * + * @author mocheng + * @date 2025-07-11 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/item") +public class InspectionItemController extends BaseController { + + private final IInspectionItemService inspectionItemService; + + /** + * 查询巡检项目列表 + */ + @SaCheckPermission("system:item:list") + @GetMapping("/list") + public TableDataInfo list(InspectionItemBo bo, PageQuery pageQuery) { + return inspectionItemService.queryPageList(bo, pageQuery); + } + + /** + * 导出巡检项目列表 + */ + @SaCheckPermission("system:item:export") + @Log(title = "巡检项目", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(InspectionItemBo bo, HttpServletResponse response) { + List list = inspectionItemService.queryList(bo); + ExcelUtil.exportExcel(list, "巡检项目", InspectionItemVo.class, response); + } + + /** + * 获取巡检项目详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("system:item:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable("id") Long id) { + return R.ok(inspectionItemService.queryById(id)); + } + + /** + * 新增巡检项目 + */ + @SaCheckPermission("system:item:add") + @Log(title = "巡检项目", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody InspectionItemBo bo) { + return toAjax(inspectionItemService.insertByBo(bo)); + } + + /** + * 修改巡检项目 + */ + @SaCheckPermission("system:item:edit") + @Log(title = "巡检项目", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody InspectionItemBo bo) { + return toAjax(inspectionItemService.updateByBo(bo)); + } + + /** + * 删除巡检项目 + * + * @param ids 主键串 + */ + @SaCheckPermission("system:item:remove") + @Log(title = "巡检项目", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable("ids") Long[] ids) { + return toAjax(inspectionItemService.deleteWithValidByIds(List.of(ids), true)); + } +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/InspectionPlanController.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/InspectionPlanController.java new file mode 100644 index 00000000..deedca38 --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/InspectionPlanController.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.InspectionPlanVo; +import org.dromara.property.domain.bo.InspectionPlanBo; +import org.dromara.property.service.IInspectionPlanService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * 巡检计划 + * 前端访问路由地址为:/property/inspectionPlan + * + * @author mocheng + * @date 2025-07-11 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/inspectionPlan") +public class InspectionPlanController extends BaseController { + + private final IInspectionPlanService inspectionPlanService; + + /** + * 查询巡检计划列表 + */ + @SaCheckPermission("property:inspectionPlan:list") + @GetMapping("/list") + public TableDataInfo list(InspectionPlanBo bo, PageQuery pageQuery) { + return inspectionPlanService.queryPageList(bo, pageQuery); + } + + /** + * 导出巡检计划列表 + */ + @SaCheckPermission("property:inspectionPlan:export") + @Log(title = "巡检计划", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(InspectionPlanBo bo, HttpServletResponse response) { + List list = inspectionPlanService.queryList(bo); + ExcelUtil.exportExcel(list, "巡检计划", InspectionPlanVo.class, response); + } + + /** + * 获取巡检计划详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("property:inspectionPlan:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable("id") Long id) { + return R.ok(inspectionPlanService.queryById(id)); + } + + /** + * 新增巡检计划 + */ + @SaCheckPermission("property:inspectionPlan:add") + @Log(title = "巡检计划", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody InspectionPlanBo bo) { + return toAjax(inspectionPlanService.insertByBo(bo)); + } + + /** + * 修改巡检计划 + */ + @SaCheckPermission("property:inspectionPlan:edit") + @Log(title = "巡检计划", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody InspectionPlanBo bo) { + return toAjax(inspectionPlanService.updateByBo(bo)); + } + + /** + * 删除巡检计划 + * + * @param ids 主键串 + */ + @SaCheckPermission("property:inspectionPlan:remove") + @Log(title = "巡检计划", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable("ids") Long[] ids) { + return toAjax(inspectionPlanService.deleteWithValidByIds(List.of(ids), true)); + } +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/InspectionPointController.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/InspectionPointController.java new file mode 100644 index 00000000..586b4eb1 --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/InspectionPointController.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.dromara.property.domain.bo.InspectionPointBo; +import org.dromara.property.domain.vo.InspectionPointVo; +import org.dromara.property.service.IInspectionPointService; +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.common.mybatis.core.page.TableDataInfo; + +/** + * 巡检点 + * 前端访问路由地址为:/property/point + * + * @author mocheng + * @date 2025-07-11 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/point") +public class InspectionPointController extends BaseController { + + private final IInspectionPointService inspectionPointService; + + /** + * 查询巡检点列表 + */ + @SaCheckPermission("system:point:list") + @GetMapping("/list") + public TableDataInfo list(InspectionPointBo bo, PageQuery pageQuery) { + return inspectionPointService.queryPageList(bo, pageQuery); + } + + /** + * 导出巡检点列表 + */ + @SaCheckPermission("system:point:export") + @Log(title = "巡检点", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(InspectionPointBo bo, HttpServletResponse response) { + List list = inspectionPointService.queryList(bo); + ExcelUtil.exportExcel(list, "巡检点", InspectionPointVo.class, response); + } + + /** + * 获取巡检点详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("system:point:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable("id") Long id) { + return R.ok(inspectionPointService.queryById(id)); + } + + /** + * 新增巡检点 + */ + @SaCheckPermission("system:point:add") + @Log(title = "巡检点", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody InspectionPointBo bo) { + return toAjax(inspectionPointService.insertByBo(bo)); + } + + /** + * 修改巡检点 + */ + @SaCheckPermission("system:point:edit") + @Log(title = "巡检点", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody InspectionPointBo bo) { + return toAjax(inspectionPointService.updateByBo(bo)); + } + + /** + * 删除巡检点 + * + * @param ids 主键串 + */ + @SaCheckPermission("system:point:remove") + @Log(title = "巡检点", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable("ids") Long[] ids) { + return toAjax(inspectionPointService.deleteWithValidByIds(List.of(ids), true)); + } +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/InspectionRouteController.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/InspectionRouteController.java new file mode 100644 index 00000000..49a64be6 --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/InspectionRouteController.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.dromara.property.domain.bo.InspectionRouteBo; +import org.dromara.property.domain.vo.InspectionRouteVo; +import org.dromara.property.service.IInspectionRouteService; +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.common.mybatis.core.page.TableDataInfo; + +/** + * 巡检路线 + * 前端访问路由地址为:/property/route + * + * @author mocheng + * @date 2025-07-11 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/route") +public class InspectionRouteController extends BaseController { + + private final IInspectionRouteService inspectionRouteService; + + /** + * 查询巡检路线列表 + */ + //@SaCheckPermission("system:route:list") + @GetMapping("/list") + public TableDataInfo list(InspectionRouteBo bo, PageQuery pageQuery) { + return inspectionRouteService.queryPageList(bo, pageQuery); + } + + /** + * 导出巡检路线列表 + */ + @SaCheckPermission("system:route:export") + @Log(title = "巡检路线", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(InspectionRouteBo bo, HttpServletResponse response) { + List list = inspectionRouteService.queryList(bo); + ExcelUtil.exportExcel(list, "巡检路线", InspectionRouteVo.class, response); + } + + /** + * 获取巡检路线详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("system:route:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable("id") Long id) { + return R.ok(inspectionRouteService.queryById(id)); + } + + /** + * 新增巡检路线 + */ + @SaCheckPermission("system:route:add") + @Log(title = "巡检路线", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody InspectionRouteBo bo) { + return toAjax(inspectionRouteService.insertByBo(bo)); + } + + /** + * 修改巡检路线 + */ + @SaCheckPermission("system:route:edit") + @Log(title = "巡检路线", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody InspectionRouteBo bo) { + return toAjax(inspectionRouteService.updateByBo(bo)); + } + + /** + * 删除巡检路线 + * + * @param ids 主键串 + */ + @SaCheckPermission("system:route:remove") + @Log(title = "巡检路线", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable("ids") Long[] ids) { + return toAjax(inspectionRouteService.deleteWithValidByIds(List.of(ids), true)); + } +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/InspectionTaskController.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/InspectionTaskController.java new file mode 100644 index 00000000..008745dd --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/InspectionTaskController.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.InspectionTaskVo; +import org.dromara.property.domain.bo.InspectionTaskBo; +import org.dromara.property.service.IInspectionTaskService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * 巡检任务 + * 前端访问路由地址为:/property/inspectionTask + * + * @author mocheng + * @date 2025-07-11 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/inspectionTask") +public class InspectionTaskController extends BaseController { + + private final IInspectionTaskService inspectionTaskService; + + /** + * 查询巡检任务列表 + */ + @SaCheckPermission("property:inspectionTask:list") + @GetMapping("/list") + public TableDataInfo list(InspectionTaskBo bo, PageQuery pageQuery) { + return inspectionTaskService.queryPageList(bo, pageQuery); + } + + /** + * 导出巡检任务列表 + */ + @SaCheckPermission("property:inspectionTask:export") + @Log(title = "巡检任务", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(InspectionTaskBo bo, HttpServletResponse response) { + List list = inspectionTaskService.queryList(bo); + ExcelUtil.exportExcel(list, "巡检任务", InspectionTaskVo.class, response); + } + + /** + * 获取巡检任务详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("property:inspectionTask:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable("id") Long id) { + return R.ok(inspectionTaskService.queryById(id)); + } + + /** + * 新增巡检任务 + */ + @SaCheckPermission("property:inspectionTask:add") + @Log(title = "巡检任务", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody InspectionTaskBo bo) { + return toAjax(inspectionTaskService.insertByBo(bo)); + } + + /** + * 修改巡检任务 + */ + @SaCheckPermission("property:inspectionTask:edit") + @Log(title = "巡检任务", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody InspectionTaskBo bo) { + return toAjax(inspectionTaskService.updateByBo(bo)); + } + + /** + * 删除巡检任务 + * + * @param ids 主键串 + */ + @SaCheckPermission("property:inspectionTask:remove") + @Log(title = "巡检任务", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable("ids") Long[] ids) { + return toAjax(inspectionTaskService.deleteWithValidByIds(List.of(ids), true)); + } +} 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 f0801ca5..88a2afae 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 @@ -98,7 +98,7 @@ public class CleanOrder extends TenantEntity { /** * 状态 */ - private int state; + private Integer state; /** * 联系电话 @@ -113,7 +113,7 @@ public class CleanOrder extends TenantEntity { /** * 是否退订(0:否,1:是) */ - private int isUnbooking; + private Integer isUnbooking; /** * 更新人id diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/InspectionItem.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/InspectionItem.java new file mode 100644 index 00000000..58daf036 --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/InspectionItem.java @@ -0,0 +1,40 @@ +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; + +/** + * 巡检项目对象 inspection_item + * + * @author mocheng + * @date 2025-07-11 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("inspection_item") +public class InspectionItem extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + @TableId(value = "id") + private Long id; + + /** + * 项目名称 + */ + private String itemName; + + /** + * 备注 + */ + private String remark; + +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/InspectionPlan.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/InspectionPlan.java new file mode 100644 index 00000000..374aac77 --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/InspectionPlan.java @@ -0,0 +1,98 @@ +package org.dromara.property.domain; + +import cn.idev.excel.annotation.ExcelProperty; +import org.dromara.common.tenant.core.TenantEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; +import java.util.Date; + +import java.io.Serial; + +/** + * 巡检计划对象 inspection_plan + * + * @author mocheng + * @date 2025-07-11 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("inspection_plan") +public class InspectionPlan extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + @TableId(value = "id") + private Long id; + + /** + * 巡检计划名称 + */ + private String planName; + + /** + * 巡检路线id + */ + private Long inspectionRouteId; + + /** + * 巡检周期 + */ + private String inspectionPlanPeriod; + /** + * 任务提前分组 + */ + private Integer beforeTime; + + /** + * 巡检月 + */ + private String inspectionMonth; + /** + * 巡检日 + */ + private String inspectionDay; + /** + * 巡检周 + */ + private String inspectionWorkday; + + /** + * 开始日期 + */ + private Date startDate; + + /** + * 结束日期 + */ + private Date endDate; + + /** + * 签到方式(0现场拍照(默认定位),1现场定位) + */ + private String signType; + + /** + * 允许补检(0允许1不允许) + */ + private String canReexamine; + + /** + * 选择员工 + */ + private String userId; + + /** + * 备注 + */ + private String remark; + /** + * 状态(0启用1停用) + */ + private String state; + +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/InspectionPoint.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/InspectionPoint.java new file mode 100644 index 00000000..f7df1d5a --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/InspectionPoint.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; + +/** + * 巡检点对象 inspection_point + * + * @author mocheng + * @date 2025-07-11 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("inspection_point") +public class InspectionPoint extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + @TableId(value = "id") + private Long id; + + /** + * 巡检项目id + */ + private Long itemId; + + /** + * 巡检点名称 + */ + private String pointName; + + /** + * 巡检点类型 + */ + private String pointType; + + /** + * nfc编码 + */ + private String nfcCode; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/InspectionRoute.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/InspectionRoute.java new file mode 100644 index 00000000..59df9a31 --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/InspectionRoute.java @@ -0,0 +1,44 @@ +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; + +/** + * 巡检路线对象 inspection_route + * + * @author mocheng + * @date 2025-07-11 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("inspection_route") +public class InspectionRoute extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + @TableId(value = "id") + private Long id; + + /** + * 路线名称 + */ + private String routeName; + + /** + * 备注 + */ + private String remark; + /** + * 排序 + */ + private Integer sort; + +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/InspectionTask.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/InspectionTask.java new file mode 100644 index 00000000..c6d8198a --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/InspectionTask.java @@ -0,0 +1,73 @@ +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.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; + +import java.io.Serial; + +/** + * 巡检任务对象 inspection_task + * + * @author mocheng + * @date 2025-07-11 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("inspection_task") +public class InspectionTask extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + @TableId(value = "id") + private Long id; + + /** + * 巡检计划id + */ + private Long inspectionPlanId; + + /** + * 实际巡检时间 + */ + private Date actInsTime; + + /** + * 当前巡检人 + */ + private Long actUserId; + + /** + * 巡检方式 + */ + private String taskType; + + /** + * 转移描述 + */ + private String transferDesc; + + /** + * 巡检状态 + */ + private String status; + + /** + * 备注 + */ + private String remark; + + /** + * 搜索值 + */ + private String searchValue; + + +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/MeetAttach.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/MeetAttach.java index cfa00ba3..64e8c5dd 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/MeetAttach.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/MeetAttach.java @@ -62,20 +62,5 @@ public class MeetAttach extends TenantEntity { */ private String picture; - /** - * 创建人id - */ - private Long createById; - - /** - * 更新人id - */ - private Long updateById; - - /** - * 搜索值 - */ - private String searchValue; - } diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/MeetAttachOrder.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/MeetAttachOrder.java index 33a54514..2a9984bb 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/MeetAttachOrder.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/MeetAttachOrder.java @@ -42,20 +42,5 @@ public class MeetAttachOrder extends TenantEntity { */ private Long quantity; - /** - * 创建人id - */ - private Long createById; - - /** - * 更新人id - */ - private Long updateById; - - /** - * 搜索值 - */ - private String searchValue; - } diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/MeetBooking.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/MeetBooking.java index af834b5c..aebbef33 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/MeetBooking.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/MeetBooking.java @@ -105,20 +105,4 @@ public class MeetBooking extends TenantEntity { */ private String descs; - /** - * 创建人id - */ - private Long createById; - - /** - * 更新人id - */ - private Long updateById; - - /** - * 搜索值 - */ - private String searchValue; - - } 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 5c063c3b..3ae4180b 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 @@ -86,7 +86,7 @@ public class CleanBo extends BaseEntity { /** * 备注 */ - @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class }) +// @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class }) private String remark; /** 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 8601487b..a7f43f2e 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 @@ -114,12 +114,12 @@ public class CleanOrderBo extends BaseEntity { /** * 是否退订(0:否,1:是) */ - private int isUnbooking; + private Integer isUnbooking; /** * 状态 */ - private int state; + private Integer state; @NotEmpty(message = "订单详情不能为空", groups = {AddGroup.class}) private List cleanList; diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/InspectionItemBo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/InspectionItemBo.java new file mode 100644 index 00000000..47a0819a --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/InspectionItemBo.java @@ -0,0 +1,40 @@ +package org.dromara.property.domain.bo; + +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.*; +import org.dromara.property.domain.InspectionItem; + +/** + * 巡检项目业务对象 inspection_item + * + * @author mocheng + * @date 2025-07-11 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = InspectionItem.class, reverseConvertGenerate = false) +public class InspectionItemBo extends BaseEntity { + + /** + * 主键id + */ + @NotNull(message = "主键id不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 项目名称 + */ + @NotBlank(message = "项目名称不能为空", groups = { AddGroup.class, EditGroup.class }) + private String itemName; + + /** + * 备注 + */ + private String remark; + +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/InspectionPlanBo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/InspectionPlanBo.java new file mode 100644 index 00000000..12abb3e4 --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/InspectionPlanBo.java @@ -0,0 +1,109 @@ +package org.dromara.property.domain.bo; + +import org.dromara.property.domain.InspectionPlan; +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.*; +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; + +/** + * 巡检计划业务对象 inspection_plan + * + * @author mocheng + * @date 2025-07-11 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = InspectionPlan.class, reverseConvertGenerate = false) +public class InspectionPlanBo extends BaseEntity { + + /** + * 主键id + */ + @NotNull(message = "主键id不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 巡检计划名称 + */ + @NotBlank(message = "巡检计划名称不能为空", groups = { AddGroup.class, EditGroup.class }) + private String planName; + + /** + * 巡检路线id + */ + @NotNull(message = "巡检路线id不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long inspectionRouteId; + + /** + * 巡检周期 + */ + @NotBlank(message = "巡检周期不能为空", groups = { AddGroup.class, EditGroup.class }) + private String inspectionPlanPeriod; + + /** + * 任务提前分组 + */ + @NotNull(message = "任务提前分组不能为空", groups = { AddGroup.class, EditGroup.class }) + private Integer beforeTime; + + /** + * 开始日期 + */ + @NotNull(message = "开始日期不能为空", groups = { AddGroup.class, EditGroup.class }) + private Date startDate; + + /** + * 结束日期 + */ + @NotNull(message = "结束日期不能为空", groups = { AddGroup.class, EditGroup.class }) + private Date endDate; + + /** + * 签到方式(0现场拍照(默认定位),1现场定位) + */ + @NotBlank(message = "签到方式(0现场拍照(默认定位),1现场定位)不能为空", groups = { AddGroup.class, EditGroup.class }) + private String signType; + + /** + * 允许补检(0允许1不允许) + */ + @NotBlank(message = "允许补检(0允许1不允许)不能为空", groups = { AddGroup.class, EditGroup.class }) + private String canReexamine; + + /** + * 巡检月 + */ + private String inspectionMonth; + /** + * 巡检日 + */ + private String inspectionDay; + /** + * 巡检周 + */ + private String inspectionWorkday; + + /** + * 选择员工 + */ + @NotNull(message = "选择员工不能为空", groups = { AddGroup.class, EditGroup.class }) + private String userId; + + /** + * 备注 + */ + private String remark; + + /** + * 状态(0启用1停用) + */ + private String state; + + +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/InspectionPointBo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/InspectionPointBo.java new file mode 100644 index 00000000..174c74a8 --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/InspectionPointBo.java @@ -0,0 +1,58 @@ +package org.dromara.property.domain.bo; + +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.*; +import org.dromara.property.domain.InspectionPoint; + +/** + * 巡检点业务对象 inspection_point + * + * @author mocheng + * @date 2025-07-11 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = InspectionPoint.class, reverseConvertGenerate = false) +public class InspectionPointBo extends BaseEntity { + + /** + * 主键id + */ + @NotNull(message = "主键id不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 巡检项目id + */ + @NotNull(message = "巡检项目id不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long itemId; + + /** + * 巡检点名称 + */ + @NotBlank(message = "巡检点名称不能为空", groups = { AddGroup.class, EditGroup.class }) + private String pointName; + + /** + * 巡检点类型 + */ + @NotBlank(message = "巡检点类型不能为空", groups = { AddGroup.class, EditGroup.class }) + private String pointType; + + /** + * nfc编码 + */ + private String nfcCode; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/InspectionRouteBo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/InspectionRouteBo.java new file mode 100644 index 00000000..14aefc3f --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/InspectionRouteBo.java @@ -0,0 +1,44 @@ +package org.dromara.property.domain.bo; + +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.*; +import org.dromara.property.domain.InspectionRoute; + +/** + * 巡检路线业务对象 inspection_route + * + * @author mocheng + * @date 2025-07-11 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = InspectionRoute.class, reverseConvertGenerate = false) +public class InspectionRouteBo extends BaseEntity { + + /** + * 主键id + */ + @NotNull(message = "主键id不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 路线名称 + */ + @NotBlank(message = "路线名称不能为空", groups = { AddGroup.class, EditGroup.class }) + private String routeName; + + /** + * 备注 + */ + private String remark; + /** + * 排序 + */ + @NotNull(message = "排序不能为空", groups = { EditGroup.class }) + private Integer sort; +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/InspectionTaskBo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/InspectionTaskBo.java new file mode 100644 index 00000000..fa319b09 --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/InspectionTaskBo.java @@ -0,0 +1,65 @@ +package org.dromara.property.domain.bo; + +import org.dromara.property.domain.InspectionTask; +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.*; +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; + +/** + * 巡检任务业务对象 inspection_task + * + * @author mocheng + * @date 2025-07-11 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = InspectionTask.class, reverseConvertGenerate = false) +public class InspectionTaskBo extends BaseEntity { + + /** + * 主键id + */ + @NotNull(message = "主键id不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 巡检计划id + */ + private Long inspectionPlanId; + + /** + * 实际巡检时间 + */ + private Date actInsTime; + + /** + * 当前巡检人 + */ + private Long actUserId; + + /** + * 巡检方式 + */ + private String taskType; + + /** + * 转移描述 + */ + private String transferDesc; + + /** + * 巡检状态 + */ + private String status; + + /** + * 备注 + */ + private String remark; +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/MeetAttachOrderBo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/MeetAttachOrderBo.java index a7d95dc4..b7c58475 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/MeetAttachOrderBo.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/MeetAttachOrderBo.java @@ -34,20 +34,5 @@ public class MeetAttachOrderBo extends BaseEntity { */ private Integer quantity; - /** - * 创建人id - */ - private Long createById; - - /** - * 更新人id - */ - private Long updateById; - - /** - * 搜索值 - */ - private String searchValue; - } 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 6c75b0cf..2017848a 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 @@ -116,7 +116,7 @@ public class CleanOrderVo implements Serializable { /** * 是否退订(0:否,1:是) */ - private int isUnbooking; + private Integer isUnbooking; /** * 联系电话 diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/InspectionItemVo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/InspectionItemVo.java new file mode 100644 index 00000000..f9e88517 --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/InspectionItemVo.java @@ -0,0 +1,60 @@ +package org.dromara.property.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.property.domain.InspectionItem; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + +/** + * 巡检项目视图对象 inspection_item + * + * @author mocheng + * @date 2025-07-11 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = InspectionItem.class) +public class InspectionItemVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + @ExcelProperty(value = "主键id") + private Long id; + + /** + * 项目名称 + */ + @ExcelProperty(value = "项目名称") + private String itemName; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + /** + * 创建时间 + */ + @ExcelProperty(value = "创建时间") + private Date createTime; + + + /** + * 搜索值 + */ + @ExcelProperty(value = "搜索值") + private String searchValue; + + +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/InspectionPlanDetailVo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/InspectionPlanDetailVo.java new file mode 100644 index 00000000..f12edb0a --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/InspectionPlanDetailVo.java @@ -0,0 +1,114 @@ +package org.dromara.property.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.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import org.dromara.property.domain.InspectionPlan; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + +/** + * @Author:yuyongle + * @Date:2025/7/11 17:10 + * @Description: + **/ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = InspectionPlan.class) +public class InspectionPlanDetailVo implements Serializable { + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + @ExcelProperty(value = "主键id") + private Long id; + + /** + * 巡检计划名称 + */ + @ExcelProperty(value = "巡检计划名称") + private String planName; + + /** + * 巡检路线id + */ + @ExcelProperty(value = "巡检路线id") + private Long inspectionRouteId; + + /** + * 巡检周期 + */ + @ExcelProperty(value = "巡检周期") + private String inspectionPlanPeriod; + + /** + * 任务提前分组 + */ + @ExcelProperty(value = "任务提前分组") + private Integer beforeTime; + + /** + * 开始日期 + */ + @ExcelProperty(value = "开始日期") + private Date startDate; + + /** + * 结束日期 + */ + @ExcelProperty(value = "结束日期") + private Date endDate; + + /** + * 签到方式(0现场拍照(默认定位),1现场定位) + */ + @ExcelProperty(value = "签到方式(0现场拍照", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "默=认定位") + private String signType; + + /** + * 允许补检(0允许1不允许) + */ + @ExcelProperty(value = "允许补检(0允许1不允许)") + private String canReexamine; + + /** + * 选择员工 + */ + @ExcelProperty(value = "选择员工") + private String userId; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + /** + * 巡检月 + */ + private String inspectionMonth; + /** + * 巡检日 + */ + private String inspectionDay; + /** + * 巡检周 + */ + private String inspectionWorkday; + /** + * 状态(0启用1停用) + */ + private String state; + /** + * 搜索值 + */ + @ExcelProperty(value = "搜索值") + private String searchValue; +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/InspectionPlanVo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/InspectionPlanVo.java new file mode 100644 index 00000000..af0c7614 --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/InspectionPlanVo.java @@ -0,0 +1,121 @@ +package org.dromara.property.domain.vo; + +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.dromara.property.domain.InspectionPlan; +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; + + + +/** + * 巡检计划视图对象 inspection_plan + * + * @author mocheng + * @date 2025-07-11 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = InspectionPlan.class) +public class InspectionPlanVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + @ExcelProperty(value = "主键id") + private Long id; + + /** + * 巡检计划名称 + */ + @ExcelProperty(value = "巡检计划名称") + private String planName; + + /** + * 巡检路线id + */ + @ExcelProperty(value = "巡检路线id") + private Long inspectionRouteId; + + /** + * 巡检周期 + */ + @ExcelProperty(value = "巡检周期") + private String inspectionPlanPeriod; + + /** + * 任务提前分组 + */ + @ExcelProperty(value = "任务提前分组") + private Integer beforeTime; + + /** + * 开始日期 + */ + @ExcelProperty(value = "开始日期") + private Date startDate; + + /** + * 结束日期 + */ + @ExcelProperty(value = "结束日期") + private Date endDate; + + /** + * 签到方式(0现场拍照(默认定位),1现场定位) + */ + @ExcelProperty(value = "签到方式(0现场拍照", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "默=认定位") + private String signType; + + /** + * 允许补检(0允许1不允许) + */ + @ExcelProperty(value = "允许补检(0允许1不允许)") + private String canReexamine; + + /** + * 选择员工 + */ + @ExcelProperty(value = "选择员工") + private String userId; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + /** + * 巡检月 + */ + private String inspectionMonth; + /** + * 巡检日 + */ + private String inspectionDay; + /** + * 巡检周 + */ + private String inspectionWorkday; + /** + * 状态(0启用1停用) + */ + private String state; + /** + * 搜索值 + */ + @ExcelProperty(value = "搜索值") + private String searchValue; + +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/InspectionPointVo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/InspectionPointVo.java new file mode 100644 index 00000000..1ed2899e --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/InspectionPointVo.java @@ -0,0 +1,83 @@ +package org.dromara.property.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.property.domain.InspectionPoint; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + +/** + * 巡检点视图对象 inspection_point + * + * @author mocheng + * @date 2025-07-11 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = InspectionPoint.class) +public class InspectionPointVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + @ExcelProperty(value = "主键id") + private Long id; + + /** + * 巡检项目id + */ + @ExcelProperty(value = "巡检项目id") + private Long itemId; + + /** + * 巡检项目id + */ + @ExcelProperty(value = "巡检项目id") + private Long itemName; + + /** + * 巡检点名称 + */ + @ExcelProperty(value = "巡检点名称") + private String pointName; + + /** + * 巡检点类型 + */ + @ExcelProperty(value = "巡检点类型") + private String pointType; + + /** + * nfc编码 + */ + @ExcelProperty(value = "nfc编码") + private String nfcCode; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + /** + * 创建时间 + */ + @ExcelProperty(value = "创建时间") + private Date createTime; + + /** + * 搜索值 + */ + @ExcelProperty(value = "搜索值") + private String searchValue; + + +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/InspectionRouteVo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/InspectionRouteVo.java new file mode 100644 index 00000000..d533d1a1 --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/InspectionRouteVo.java @@ -0,0 +1,62 @@ +package org.dromara.property.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.property.domain.InspectionRoute; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + +/** + * 巡检路线视图对象 inspection_route + * + * @author mocheng + * @date 2025-07-11 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = InspectionRoute.class) +public class InspectionRouteVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + @ExcelProperty(value = "主键id") + private Long id; + + /** + * 路线名称 + */ + @ExcelProperty(value = "路线名称") + private String routeName; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + /** + * 创建时间 + */ + @ExcelProperty(value = "创建时间") + private Date createTime; + /** + * 排序 + */ + @ExcelProperty(value = "排序") + private Integer sort; + /** + * 搜索值 + */ + @ExcelProperty(value = "搜索值") + private String searchValue; + + +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/InspectionTaskVo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/InspectionTaskVo.java new file mode 100644 index 00000000..22ef184d --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/InspectionTaskVo.java @@ -0,0 +1,88 @@ +package org.dromara.property.domain.vo; + +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.dromara.property.domain.InspectionTask; +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; + + + +/** + * 巡检任务视图对象 inspection_task + * + * @author mocheng + * @date 2025-07-11 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = InspectionTask.class) +public class InspectionTaskVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + @ExcelProperty(value = "主键id") + private Long id; + + /** + * 巡检计划id + */ + @ExcelProperty(value = "巡检计划id") + private Long inspectionPlanId; + + /** + * 实际巡检时间 + */ + @ExcelProperty(value = "实际巡检时间") + private Date actInsTime; + + /** + * 当前巡检人 + */ + @ExcelProperty(value = "当前巡检人") + private Long actUserId; + + /** + * 巡检方式 + */ + @ExcelProperty(value = "巡检方式") + private String taskType; + + /** + * 转移描述 + */ + @ExcelProperty(value = "转移描述") + private String transferDesc; + + /** + * 巡检状态 + */ + @ExcelProperty(value = "巡检状态") + private String status; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + /** + * 搜索值 + */ + @ExcelProperty(value = "搜索值") + private String searchValue; + + +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/InspectionItemMapper.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/InspectionItemMapper.java new file mode 100644 index 00000000..e6e55d48 --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/InspectionItemMapper.java @@ -0,0 +1,17 @@ +package org.dromara.property.mapper; + +import org.apache.ibatis.annotations.Mapper; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.property.domain.InspectionItem; +import org.dromara.property.domain.vo.InspectionItemVo; + +/** + * 巡检项目Mapper接口 + * + * @author mocheng + * @date 2025-07-11 + */ +@Mapper +public interface InspectionItemMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/InspectionPlanMapper.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/InspectionPlanMapper.java new file mode 100644 index 00000000..cb381507 --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/InspectionPlanMapper.java @@ -0,0 +1,17 @@ +package org.dromara.property.mapper; + +import org.apache.ibatis.annotations.Mapper; +import org.dromara.property.domain.InspectionPlan; +import org.dromara.property.domain.vo.InspectionPlanVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 巡检计划Mapper接口 + * + * @author mocheng + * @date 2025-07-11 + */ +@Mapper +public interface InspectionPlanMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/InspectionPointMapper.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/InspectionPointMapper.java new file mode 100644 index 00000000..4d10b44e --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/InspectionPointMapper.java @@ -0,0 +1,17 @@ +package org.dromara.property.mapper; + +import org.apache.ibatis.annotations.Mapper; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.property.domain.InspectionPoint; +import org.dromara.property.domain.vo.InspectionPointVo; + +/** + * 巡检点Mapper接口 + * + * @author mocheng + * @date 2025-07-11 + */ +@Mapper +public interface InspectionPointMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/InspectionRouteMapper.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/InspectionRouteMapper.java new file mode 100644 index 00000000..88ea1d8b --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/InspectionRouteMapper.java @@ -0,0 +1,17 @@ +package org.dromara.property.mapper; + +import org.apache.ibatis.annotations.Mapper; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.property.domain.InspectionRoute; +import org.dromara.property.domain.vo.InspectionRouteVo; + +/** + * 巡检路线Mapper接口 + * + * @author mocheng + * @date 2025-07-11 + */ +@Mapper +public interface InspectionRouteMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/InspectionTaskMapper.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/InspectionTaskMapper.java new file mode 100644 index 00000000..9191c6ab --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/InspectionTaskMapper.java @@ -0,0 +1,15 @@ +package org.dromara.property.mapper; + +import org.dromara.property.domain.InspectionTask; +import org.dromara.property.domain.vo.InspectionTaskVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 巡检任务Mapper接口 + * + * @author mocheng + * @date 2025-07-11 + */ +public interface InspectionTaskMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/IInspectionItemService.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/IInspectionItemService.java new file mode 100644 index 00000000..a734abe8 --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/IInspectionItemService.java @@ -0,0 +1,68 @@ +package org.dromara.property.service; + +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.property.domain.bo.InspectionItemBo; +import org.dromara.property.domain.vo.InspectionItemVo; + +import java.util.Collection; +import java.util.List; + +/** + * 巡检项目Service接口 + * + * @author mocheng + * @date 2025-07-11 + */ +public interface IInspectionItemService { + + /** + * 查询巡检项目 + * + * @param id 主键 + * @return 巡检项目 + */ + InspectionItemVo queryById(Long id); + + /** + * 分页查询巡检项目列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 巡检项目分页列表 + */ + TableDataInfo queryPageList(InspectionItemBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的巡检项目列表 + * + * @param bo 查询条件 + * @return 巡检项目列表 + */ + List queryList(InspectionItemBo bo); + + /** + * 新增巡检项目 + * + * @param bo 巡检项目 + * @return 是否新增成功 + */ + Boolean insertByBo(InspectionItemBo bo); + + /** + * 修改巡检项目 + * + * @param bo 巡检项目 + * @return 是否修改成功 + */ + Boolean updateByBo(InspectionItemBo 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/IInspectionPlanService.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/IInspectionPlanService.java new file mode 100644 index 00000000..e563aaa0 --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/IInspectionPlanService.java @@ -0,0 +1,69 @@ +package org.dromara.property.service; + +import org.dromara.property.domain.InspectionPlan; +import org.dromara.property.domain.vo.InspectionPlanVo; +import org.dromara.property.domain.bo.InspectionPlanBo; +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-07-11 + */ +public interface IInspectionPlanService { + + /** + * 查询巡检计划 + * + * @param id 主键 + * @return 巡检计划 + */ + InspectionPlanVo queryById(Long id); + + /** + * 分页查询巡检计划列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 巡检计划分页列表 + */ + TableDataInfo queryPageList(InspectionPlanBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的巡检计划列表 + * + * @param bo 查询条件 + * @return 巡检计划列表 + */ + List queryList(InspectionPlanBo bo); + + /** + * 新增巡检计划 + * + * @param bo 巡检计划 + * @return 是否新增成功 + */ + Boolean insertByBo(InspectionPlanBo bo); + + /** + * 修改巡检计划 + * + * @param bo 巡检计划 + * @return 是否修改成功 + */ + Boolean updateByBo(InspectionPlanBo 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/IInspectionPointService.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/IInspectionPointService.java new file mode 100644 index 00000000..95beaa24 --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/IInspectionPointService.java @@ -0,0 +1,67 @@ +package org.dromara.property.service; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.property.domain.bo.InspectionPointBo; +import org.dromara.property.domain.vo.InspectionPointVo; + +import java.util.Collection; +import java.util.List; + +/** + * 巡检点Service接口 + * + * @author mocheng + * @date 2025-07-11 + */ +public interface IInspectionPointService { + + /** + * 查询巡检点 + * + * @param id 主键 + * @return 巡检点 + */ + InspectionPointVo queryById(Long id); + + /** + * 分页查询巡检点列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 巡检点分页列表 + */ + TableDataInfo queryPageList(InspectionPointBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的巡检点列表 + * + * @param bo 查询条件 + * @return 巡检点列表 + */ + List queryList(InspectionPointBo bo); + + /** + * 新增巡检点 + * + * @param bo 巡检点 + * @return 是否新增成功 + */ + Boolean insertByBo(InspectionPointBo bo); + + /** + * 修改巡检点 + * + * @param bo 巡检点 + * @return 是否修改成功 + */ + Boolean updateByBo(InspectionPointBo 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/IInspectionRouteService.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/IInspectionRouteService.java new file mode 100644 index 00000000..10a5fea6 --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/IInspectionRouteService.java @@ -0,0 +1,69 @@ +package org.dromara.property.service; + + +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.property.domain.bo.InspectionRouteBo; +import org.dromara.property.domain.vo.InspectionRouteVo; + +import java.util.Collection; +import java.util.List; + +/** + * 巡检路线Service接口 + * + * @author mocheng + * @date 2025-07-11 + */ +public interface IInspectionRouteService { + + /** + * 查询巡检路线 + * + * @param id 主键 + * @return 巡检路线 + */ + InspectionRouteVo queryById(Long id); + + /** + * 分页查询巡检路线列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 巡检路线分页列表 + */ + TableDataInfo queryPageList(InspectionRouteBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的巡检路线列表 + * + * @param bo 查询条件 + * @return 巡检路线列表 + */ + List queryList(InspectionRouteBo bo); + + /** + * 新增巡检路线 + * + * @param bo 巡检路线 + * @return 是否新增成功 + */ + Boolean insertByBo(InspectionRouteBo bo); + + /** + * 修改巡检路线 + * + * @param bo 巡检路线 + * @return 是否修改成功 + */ + Boolean updateByBo(InspectionRouteBo 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/IInspectionTaskService.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/IInspectionTaskService.java new file mode 100644 index 00000000..a0906f27 --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/IInspectionTaskService.java @@ -0,0 +1,68 @@ +package org.dromara.property.service; + +import org.dromara.property.domain.vo.InspectionTaskVo; +import org.dromara.property.domain.bo.InspectionTaskBo; +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-07-11 + */ +public interface IInspectionTaskService { + + /** + * 查询巡检任务 + * + * @param id 主键 + * @return 巡检任务 + */ + InspectionTaskVo queryById(Long id); + + /** + * 分页查询巡检任务列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 巡检任务分页列表 + */ + TableDataInfo queryPageList(InspectionTaskBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的巡检任务列表 + * + * @param bo 查询条件 + * @return 巡检任务列表 + */ + List queryList(InspectionTaskBo bo); + + /** + * 新增巡检任务 + * + * @param bo 巡检任务 + * @return 是否新增成功 + */ + Boolean insertByBo(InspectionTaskBo bo); + + /** + * 修改巡检任务 + * + * @param bo 巡检任务 + * @return 是否修改成功 + */ + Boolean updateByBo(InspectionTaskBo 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/CleanOrderServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/CleanOrderServiceImpl.java index 4c530be4..37cad524 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 @@ -102,7 +102,8 @@ public class CleanOrderServiceImpl implements ICleanOrderService { public TableDataInfo queryPageList(CleanOrderBo bo, PageQuery pageQuery) { // 构造条件查询器,返回的是一个集合 LambdaQueryWrapper lqw = buildQueryWrapper(bo); - Page result = baseMapper.selectForPage(pageQuery.build(), lqw); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw,CleanOrderVo.class); +// Page result = baseMapper.selectForPage(pageQuery.build(), lqw); return TableDataInfo.build(result); } @@ -133,10 +134,12 @@ 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(bo.getState() != null, 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()); + //将lqw中的所有条件都封装到一个params对象中集合中 + return lqw; } diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/InspectionItemServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/InspectionItemServiceImpl.java new file mode 100644 index 00000000..f897b352 --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/InspectionItemServiceImpl.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.dromara.property.domain.InspectionItem; +import org.dromara.property.domain.bo.InspectionItemBo; +import org.dromara.property.domain.vo.InspectionItemVo; +import org.dromara.property.mapper.InspectionItemMapper; +import org.dromara.property.service.IInspectionItemService; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 巡检项目Service业务层处理 + * + * @author mocheng + * @date 2025-07-11 + */ +@Slf4j +@RequiredArgsConstructor +@Service +public class InspectionItemServiceImpl implements IInspectionItemService { + + private final InspectionItemMapper baseMapper; + + /** + * 查询巡检项目 + * + * @param id 主键 + * @return 巡检项目 + */ + @Override + public InspectionItemVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 分页查询巡检项目列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 巡检项目分页列表 + */ + @Override + public TableDataInfo queryPageList(InspectionItemBo 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(InspectionItemBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(InspectionItemBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByAsc(InspectionItem::getId); + lqw.like(StringUtils.isNotBlank(bo.getItemName()), InspectionItem::getItemName, bo.getItemName()); + lqw.eq(StringUtils.isNotBlank(bo.getSearchValue()), InspectionItem::getSearchValue, bo.getSearchValue()); + return lqw; + } + + /** + * 新增巡检项目 + * + * @param bo 巡检项目 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(InspectionItemBo bo) { + InspectionItem add = MapstructUtils.convert(bo, InspectionItem.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改巡检项目 + * + * @param bo 巡检项目 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(InspectionItemBo bo) { + InspectionItem update = MapstructUtils.convert(bo, InspectionItem.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(InspectionItem 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/InspectionPlanServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/InspectionPlanServiceImpl.java new file mode 100644 index 00000000..0d7b7256 --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/InspectionPlanServiceImpl.java @@ -0,0 +1,142 @@ +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.dromara.property.mapper.InspectionPlanMapper; +import org.springframework.stereotype.Service; +import org.dromara.property.domain.bo.InspectionPlanBo; +import org.dromara.property.domain.vo.InspectionPlanVo; +import org.dromara.property.domain.InspectionPlan; +import org.dromara.property.service.IInspectionPlanService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 巡检计划Service业务层处理 + * + * @author mocheng + * @date 2025-07-11 + */ +@Slf4j +@RequiredArgsConstructor +@Service +public class InspectionPlanServiceImpl implements IInspectionPlanService { + + private final InspectionPlanMapper baseMapper; + + /** + * 查询巡检计划 + * + * @param id 主键 + * @return 巡检计划 + */ + @Override + public InspectionPlanVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 分页查询巡检计划列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 巡检计划分页列表 + */ + @Override + public TableDataInfo queryPageList(InspectionPlanBo 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(InspectionPlanBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(InspectionPlanBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByAsc(InspectionPlan::getId); + lqw.like(StringUtils.isNotBlank(bo.getPlanName()), InspectionPlan::getPlanName, bo.getPlanName()); + lqw.eq(bo.getInspectionRouteId() != null, InspectionPlan::getInspectionRouteId, bo.getInspectionRouteId()); + lqw.eq(StringUtils.isNotBlank(bo.getInspectionPlanPeriod()), InspectionPlan::getInspectionPlanPeriod, bo.getInspectionPlanPeriod()); + lqw.eq(bo.getStartDate() != null, InspectionPlan::getStartDate, bo.getStartDate()); + lqw.eq(bo.getEndDate() != null, InspectionPlan::getEndDate, bo.getEndDate()); + lqw.eq(StringUtils.isNotBlank(bo.getSignType()), InspectionPlan::getSignType, bo.getSignType()); + lqw.eq(StringUtils.isNotBlank(bo.getCanReexamine()), InspectionPlan::getCanReexamine, bo.getCanReexamine()); + lqw.eq(bo.getUserId() != null, InspectionPlan::getUserId, bo.getUserId()); + lqw.eq(bo.getUserId() != null, InspectionPlan::getUserId, bo.getUserId()); + lqw.like(StringUtils.isNotBlank(bo.getState()), InspectionPlan::getState, bo.getState()); + lqw.eq(StringUtils.isNotBlank(bo.getSearchValue()), InspectionPlan::getSearchValue, bo.getSearchValue()); + return lqw; + } + + /** + * 新增巡检计划 + * + * @param bo 巡检计划 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(InspectionPlanBo bo) { + InspectionPlan add = MapstructUtils.convert(bo, InspectionPlan.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改巡检计划 + * + * @param bo 巡检计划 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(InspectionPlanBo bo) { + InspectionPlan update = MapstructUtils.convert(bo, InspectionPlan.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(InspectionPlan 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/InspectionPointServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/InspectionPointServiceImpl.java new file mode 100644 index 00000000..1bed47e4 --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/InspectionPointServiceImpl.java @@ -0,0 +1,151 @@ +package org.dromara.property.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +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.property.domain.InspectionPoint; +import org.dromara.property.domain.bo.InspectionPointBo; +import org.dromara.property.domain.vo.InspectionPlanVo; +import org.dromara.property.domain.vo.InspectionPointVo; +import org.dromara.property.mapper.InspectionPlanMapper; +import org.dromara.property.mapper.InspectionPointMapper; +import org.dromara.property.service.IInspectionPointService; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Collection; +import java.util.stream.Collectors; + +/** + * 巡检点Service业务层处理 + * + * @author mocheng + * @date 2025-07-11 + */ +@Slf4j +@RequiredArgsConstructor +@Service +public class InspectionPointServiceImpl implements IInspectionPointService { + + private final InspectionPointMapper baseMapper; + private final InspectionPlanMapper inspectionPlanMapper; + + /** + * 查询巡检点 + * + * @param id 主键 + * @return 巡检点 + */ + @Override + public InspectionPointVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 分页查询巡检点列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 巡检点分页列表 + */ + @Override + public TableDataInfo queryPageList(InspectionPointBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + if (CollectionUtil.isEmpty(result.getRecords())) { + return TableDataInfo.build(result); + } + List itemIdList = result.getRecords().stream() + .map(vo -> vo.getItemId()) + .distinct() + .collect(Collectors.toList()); + List inspectionPlanVos = inspectionPlanMapper.selectVoByIds(itemIdList); + + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的巡检点列表 + * + * @param bo 查询条件 + * @return 巡检点列表 + */ + @Override + public List queryList(InspectionPointBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(InspectionPointBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByAsc(InspectionPoint::getId); + lqw.eq(bo.getItemId() != null, InspectionPoint::getItemId, bo.getItemId()); + lqw.like(StringUtils.isNotBlank(bo.getPointName()), InspectionPoint::getPointName, bo.getPointName()); + lqw.eq(StringUtils.isNotBlank(bo.getPointType()), InspectionPoint::getPointType, bo.getPointType()); + lqw.eq(StringUtils.isNotBlank(bo.getNfcCode()), InspectionPoint::getNfcCode, bo.getNfcCode()); + lqw.eq(StringUtils.isNotBlank(bo.getSearchValue()), InspectionPoint::getSearchValue, bo.getSearchValue()); + return lqw; + } + + /** + * 新增巡检点 + * + * @param bo 巡检点 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(InspectionPointBo bo) { + InspectionPoint add = MapstructUtils.convert(bo, InspectionPoint.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改巡检点 + * + * @param bo 巡检点 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(InspectionPointBo bo) { + InspectionPoint update = MapstructUtils.convert(bo, InspectionPoint.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(InspectionPoint 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/InspectionRouteServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/InspectionRouteServiceImpl.java new file mode 100644 index 00000000..e3fae498 --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/InspectionRouteServiceImpl.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.dromara.property.domain.InspectionRoute; +import org.dromara.property.domain.bo.InspectionRouteBo; +import org.dromara.property.domain.vo.InspectionRouteVo; +import org.dromara.property.mapper.InspectionRouteMapper; +import org.dromara.property.service.IInspectionRouteService; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 巡检路线Service业务层处理 + * + * @author mocheng + * @date 2025-07-11 + */ +@Slf4j +@RequiredArgsConstructor +@Service +public class InspectionRouteServiceImpl implements IInspectionRouteService { + + private final InspectionRouteMapper baseMapper; + + /** + * 查询巡检路线 + * + * @param id 主键 + * @return 巡检路线 + */ + @Override + public InspectionRouteVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 分页查询巡检路线列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 巡检路线分页列表 + */ + @Override + public TableDataInfo queryPageList(InspectionRouteBo 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(InspectionRouteBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(InspectionRouteBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByAsc(InspectionRoute::getId); + lqw.like(StringUtils.isNotBlank(bo.getRouteName()), InspectionRoute::getRouteName, bo.getRouteName()); + lqw.eq(StringUtils.isNotBlank(bo.getSearchValue()), InspectionRoute::getSearchValue, bo.getSearchValue()); + return lqw; + } + + /** + * 新增巡检路线 + * + * @param bo 巡检路线 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(InspectionRouteBo bo) { + InspectionRoute add = MapstructUtils.convert(bo, InspectionRoute.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改巡检路线 + * + * @param bo 巡检路线 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(InspectionRouteBo bo) { + InspectionRoute update = MapstructUtils.convert(bo, InspectionRoute.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(InspectionRoute 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/InspectionTaskServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/InspectionTaskServiceImpl.java new file mode 100644 index 00000000..ee1c7f52 --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/InspectionTaskServiceImpl.java @@ -0,0 +1,138 @@ +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.InspectionTaskBo; +import org.dromara.property.domain.vo.InspectionTaskVo; +import org.dromara.property.domain.InspectionTask; +import org.dromara.property.mapper.InspectionTaskMapper; +import org.dromara.property.service.IInspectionTaskService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 巡检任务Service业务层处理 + * + * @author mocheng + * @date 2025-07-11 + */ +@Slf4j +@RequiredArgsConstructor +@Service +public class InspectionTaskServiceImpl implements IInspectionTaskService { + + private final InspectionTaskMapper baseMapper; + + /** + * 查询巡检任务 + * + * @param id 主键 + * @return 巡检任务 + */ + @Override + public InspectionTaskVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 分页查询巡检任务列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 巡检任务分页列表 + */ + @Override + public TableDataInfo queryPageList(InspectionTaskBo 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(InspectionTaskBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(InspectionTaskBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByAsc(InspectionTask::getId); + lqw.eq(bo.getInspectionPlanId() != null, InspectionTask::getInspectionPlanId, bo.getInspectionPlanId()); + lqw.eq(bo.getActInsTime() != null, InspectionTask::getActInsTime, bo.getActInsTime()); + lqw.eq(bo.getActUserId() != null, InspectionTask::getActUserId, bo.getActUserId()); + lqw.eq(StringUtils.isNotBlank(bo.getTaskType()), InspectionTask::getTaskType, bo.getTaskType()); + lqw.eq(StringUtils.isNotBlank(bo.getTransferDesc()), InspectionTask::getTransferDesc, bo.getTransferDesc()); + lqw.eq(StringUtils.isNotBlank(bo.getStatus()), InspectionTask::getStatus, bo.getStatus()); + lqw.eq(StringUtils.isNotBlank(bo.getSearchValue()), InspectionTask::getSearchValue, bo.getSearchValue()); + return lqw; + } + + /** + * 新增巡检任务 + * + * @param bo 巡检任务 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(InspectionTaskBo bo) { + InspectionTask add = MapstructUtils.convert(bo, InspectionTask.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改巡检任务 + * + * @param bo 巡检任务 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(InspectionTaskBo bo) { + InspectionTask update = MapstructUtils.convert(bo, InspectionTask.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(InspectionTask 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/MeetServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/MeetServiceImpl.java index ddc9fc83..5cafdb2f 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/MeetServiceImpl.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/MeetServiceImpl.java @@ -141,11 +141,12 @@ public class MeetServiceImpl implements IMeetService { LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); lqw.orderByAsc(Meet::getId); lqw.like(StringUtils.isNotBlank(bo.getName()), Meet::getName, bo.getName()); - lqw.eq(StringUtils.isNotBlank(bo.getLocation()), Meet::getLocation, bo.getLocation()); - lqw.eq(bo.getPersonNumber() != null, Meet::getPersonNumber, bo.getPersonNumber()); - lqw.eq(bo.getBaseService() != null, Meet::getBaseService, bo.getBaseService()); - lqw.eq(bo.getBasePrice() != null, Meet::getBasePrice, bo.getBasePrice()); - lqw.eq(bo.getAttach() != null, Meet::getAttach, bo.getAttach()); +// lqw.eq(StringUtils.isNotBlank(bo.getLocation()), Meet::getLocation, bo.getLocation()); +// lqw.eq(bo.getPersonNumber() != null, Meet::getPersonNumber, bo.getPersonNumber()); +// lqw.eq(bo.getBaseService() != null, Meet::getBaseService, bo.getBaseService()); +// lqw.eq(bo.getBasePrice() != null, Meet::getBasePrice, bo.getBasePrice()); + lqw.eq(bo.getPrincipals() != null, Meet::getPrincipals, bo.getPrincipals()); + lqw.eq(bo.getStatus() != null, Meet::getStatus, bo.getStatus()); return lqw; } diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/tasks/InspectionTasks.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/tasks/InspectionTasks.java new file mode 100644 index 00000000..9f5d7c08 --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/tasks/InspectionTasks.java @@ -0,0 +1,47 @@ +package org.dromara.property.tasks; + +import cn.hutool.core.util.ObjectUtil; +import lombok.RequiredArgsConstructor; +import org.dromara.property.domain.InspectionPlan; +import org.dromara.property.domain.bo.InspectionPlanBo; +import org.dromara.property.domain.vo.InspectionPlanVo; +import org.dromara.property.service.IInspectionPlanService; +import org.dromara.property.service.IInspectionTaskService; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; + +/** + * @Author:yuyongle + * @Date:2025/7/11 15:28 + * @Description: + **/ + +@Component +@RequiredArgsConstructor +public class InspectionTasks { + + private final IInspectionPlanService inspectionPlanService; + private final IInspectionTaskService initiatingTaskService; + + // 通过巡检计划定时生成巡检任务 + @Scheduled(cron = "0 0 2 * * ?") + public void doInspectionPianTask() { + //查询所有计划 + InspectionPlanBo inspectionPlanBo = new InspectionPlanBo(); + inspectionPlanBo.setState(String.valueOf(0)); + List inspectionPlanVoList = inspectionPlanService.queryList(inspectionPlanBo); + if (ObjectUtil.isEmpty(inspectionPlanVoList)) { + return; + } + List inspectionTasksList = new ArrayList<>(); + inspectionPlanVoList.stream().forEach(s -> { + + }); + + } + + +} diff --git a/ruoyi-modules/Property/src/main/resources/mapper/Property/CleanOrderMapper.xml b/ruoyi-modules/Property/src/main/resources/mapper/Property/CleanOrderMapper.xml index 248b7fac..e4951ffe 100644 --- a/ruoyi-modules/Property/src/main/resources/mapper/Property/CleanOrderMapper.xml +++ b/ruoyi-modules/Property/src/main/resources/mapper/Property/CleanOrderMapper.xml @@ -6,14 +6,25 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" diff --git a/ruoyi-modules/Sis/src/main/resources/mapper/sis/SisAccessControlDeviceMapper.xml b/ruoyi-modules/Property/src/main/resources/mapper/Property/InspectionTaskMapper.xml similarity index 68% rename from ruoyi-modules/Sis/src/main/resources/mapper/sis/SisAccessControlDeviceMapper.xml rename to ruoyi-modules/Property/src/main/resources/mapper/Property/InspectionTaskMapper.xml index 81a4d8ab..d4975921 100644 --- a/ruoyi-modules/Sis/src/main/resources/mapper/sis/SisAccessControlDeviceMapper.xml +++ b/ruoyi-modules/Property/src/main/resources/mapper/Property/InspectionTaskMapper.xml @@ -2,6 +2,6 @@ - + diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/SisAccessControlController.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/SisAccessControlController.java index 41950254..c0c34452 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/SisAccessControlController.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/SisAccessControlController.java @@ -116,5 +116,14 @@ public class SisAccessControlController extends BaseController { return R.ok(sisAccessControlService.queryAcTree()); } + /** + * 同步门禁设备 + * + * @return boolean + */ + @GetMapping("/sync") + public R sync() { + return R.ok(sisAccessControlService.syncE8()); + } } 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 deleted file mode 100644 index 6c0bc6c6..00000000 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/SisAccessControlDeviceController.java +++ /dev/null @@ -1,112 +0,0 @@ -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); - } - - @GetMapping("/list/{factoryNo}") - public R> queryListByFactoryNo(@PathVariable("factoryNo") String factoryNo) { - return R.ok(sisAccessControlDeviceService.queryListByFactoryNo(factoryNo)); - } - - - /** - * 导出门禁设备列表 - */ - @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/SisAuthRecordController.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/SisAuthRecordController.java index d7fca73f..11884c91 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/SisAuthRecordController.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/SisAuthRecordController.java @@ -15,6 +15,8 @@ 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.SisAuthRecord; +import org.dromara.sis.domain.bo.AuthLibBo; import org.dromara.sis.domain.bo.SingleAuthRecordBo; import org.dromara.sis.domain.bo.SisAuthRecordBo; import org.dromara.sis.domain.vo.SisAuthRecordVo; @@ -117,4 +119,21 @@ public class SisAuthRecordController extends BaseController { @PathVariable("ids") Long[] ids) { return toAjax(sisAuthRecordService.deleteWithValidByIds(List.of(ids), true)); } + + /** + * 删除授权记录 + * + * @param bo 授权信息 + */ + @SaCheckPermission("sis:authRecord:authLib") + @Log(title = "人员库授权", businessType = BusinessType.INSERT) + @PostMapping("/authLib") + public R authLib(@Validated @RequestBody AuthLibBo bo) { + return toAjax(sisAuthRecordService.authLib(bo)); + } + + @GetMapping("/authDevice/{libId}") + public R> queryAuthDevice(@PathVariable("libId") String libId) { + return R.ok(sisAuthRecordService.queryAuthDevice(libId)); + } } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/SisDeviceManageController.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/SisDeviceManageController.java index 2320f961..5f996790 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/SisDeviceManageController.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/SisDeviceManageController.java @@ -1,33 +1,35 @@ 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.domain.TreeNode; 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.SisDeviceManageVo; -import org.dromara.sis.domain.bo.SisDeviceManageBo; -import org.dromara.sis.service.ISisDeviceManageService; +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.SisDeviceManageBo; +import org.dromara.sis.domain.vo.SisDeviceManageVo; +import org.dromara.sis.service.ISisDeviceManageService; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; /** * 设备管理 * 前端访问路由地址为:/system/deviceManage * * @author mocheng - * @since 2025-06-26 + * @since 2025-06-26 */ @Validated @RequiredArgsConstructor @@ -65,7 +67,7 @@ public class SisDeviceManageController extends BaseController { @SaCheckPermission("sis:deviceManage:query") @GetMapping("/{id}") public R getInfo(@NotNull(message = "主键不能为空") - @PathVariable("id") Long id) { + @PathVariable("id") Long id) { return R.ok(sisDeviceManageService.queryById(id)); } @@ -103,4 +105,11 @@ public class SisDeviceManageController extends BaseController { @PathVariable("ids") Long[] ids) { return toAjax(sisDeviceManageService.deleteWithValidByIds(List.of(ids), true)); } + + @GetMapping("/tree") + public R>> tree() { + return R.ok(sisDeviceManageService.tree()); + } + + } 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 deleted file mode 100644 index de96e188..00000000 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/e8/AccessControlController.java +++ /dev/null @@ -1,108 +0,0 @@ -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.QueryDto; -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.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 deleted file mode 100644 index 6e351d50..00000000 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/e8/DoorDeviceController.java +++ /dev/null @@ -1,115 +0,0 @@ -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 Long 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 deleted file mode 100644 index dc12c600..00000000 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/e8/VoucherControlController.java +++ /dev/null @@ -1,113 +0,0 @@ -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.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; - -/** - * @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); - - Long flag = voucherControlService.issueVoucher(req); - - if (flag != null) { - 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 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/Sis/src/main/java/org/dromara/sis/domain/SisAccessControl.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisAccessControl.java index f36747a6..3445a59f 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisAccessControl.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisAccessControl.java @@ -93,4 +93,9 @@ public class SisAccessControl extends TenantEntity { */ private String outCode; + /** + * 外部门编码 + */ + private String outDoorCode; + } 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 deleted file mode 100644 index 44b5a1a7..00000000 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisAccessControlDevice.java +++ /dev/null @@ -1,75 +0,0 @@ -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 Integer eqpPort; - - /** - * 设备账号 - */ - private String eqpAccount; - - /** - * 设备密码 - */ - private String eqpPwd; - -} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisAuthRecord.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisAuthRecord.java index 04794110..729b027d 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisAuthRecord.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisAuthRecord.java @@ -47,11 +47,6 @@ public class SisAuthRecord extends TenantEntity { */ private Long eqbId; - /** - * E8权限ID - */ - private Long remoteAuthId; - /* 门id */ diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisPersonLib.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisPersonLib.java index 566e8a81..c8ec2d61 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisPersonLib.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisPersonLib.java @@ -12,7 +12,7 @@ import java.io.Serial; * 人像库对象 tb_person_lib * * @author mocheng - * @date 2025-06-24 + * @since 2025-06-24 */ @Data @EqualsAndHashCode(callSuper = true) @@ -37,14 +37,4 @@ public class SisPersonLib extends TenantEntity { * 人员库描述 */ private String libDesc; - - /** - * 库类型,1:人员库,2:工服库 - */ - private Integer libType; - - /** - * 库的业务类型 1: 门禁库,2: 黑名单库 - */ - private Integer busiType; } 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 index 0dc26c94..64bc16db 100644 --- 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 @@ -73,5 +73,9 @@ public class SisPersonLibImg extends TenantEntity { */ private String birthDate; + /** + * 远程库图像ID + */ + private Long remoteImgId; } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/AccessControlLibDeviceBo.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/AccessControlLibDeviceBo.java index a39a7208..62f8ead4 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/AccessControlLibDeviceBo.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/AccessControlLibDeviceBo.java @@ -8,9 +8,8 @@ import lombok.EqualsAndHashCode; * * @author lxj */ -@EqualsAndHashCode(callSuper = true) @Data -public class AccessControlLibDeviceBo extends SisAccessControlDeviceBo { +public class AccessControlLibDeviceBo { private Integer eqpLibId; diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/AuthLibBo.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/AuthLibBo.java new file mode 100644 index 00000000..a8373f3b --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/AuthLibBo.java @@ -0,0 +1,22 @@ +package org.dromara.sis.domain.bo; + +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.util.List; + +/** + * 人像库授权 + * + * @author lxj + */ +@Data +public class AuthLibBo { + + @NotNull(message = "人像库id不能为空") + private Long libId; + + @NotNull(message = "设备列表不能为空") + private List deviceIds; + +} 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 deleted file mode 100644 index a2b729d0..00000000 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisAccessControlDeviceBo.java +++ /dev/null @@ -1,75 +0,0 @@ -package org.dromara.sis.domain.bo; - -import io.github.linpeilie.annotations.AutoMapper; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotNull; -import lombok.Data; -import lombok.EqualsAndHashCode; -import org.dromara.common.core.validate.AddGroup; -import org.dromara.common.core.validate.EditGroup; -import org.dromara.common.mybatis.core.domain.BaseEntity; -import org.dromara.sis.domain.SisAccessControlDevice; - -/** - * 门禁设备业务对象 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 eqpName; - - /** - * 厂商编码 - */ - private String factoryNo; - - /** - * 设备类型 - */ - private Integer eqpType; - - /** - * 接入类型(1: 平台接入,2:设备接入) - */ - private Integer accessType; - - /** - * 设备ip - */ - @NotBlank(message = "设备ip不能为空", groups = {AddGroup.class, EditGroup.class}) - private String eqpIp; - - /** - * 设备端口 - */ - @NotNull(message = "设备端口不能为空", groups = {AddGroup.class, EditGroup.class}) - private Integer eqpPort; - - /** - * 设备账号 - */ - @NotBlank(message = "设备账号不能为空", groups = {AddGroup.class, EditGroup.class}) - private String eqpAccount; - - /** - * 设备密码 - */ - @NotBlank(message = "设备密码不能为空", groups = {AddGroup.class, EditGroup.class}) - private String eqpPwd; - -} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisElevatorInfoBo.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisElevatorInfoBo.java index accc46af..3f132a81 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisElevatorInfoBo.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisElevatorInfoBo.java @@ -11,6 +11,7 @@ import org.dromara.common.mybatis.core.domain.BaseEntity; import org.dromara.sis.domain.SisElevatorInfo; import java.util.Date; +import java.util.List; /** * 电梯基本信息业务对象 sis_elevator_info @@ -141,4 +142,23 @@ public class SisElevatorInfoBo extends BaseEntity { */ @NotNull(message = "不能为空", groups = {AddGroup.class, EditGroup.class}) private Long unitId; + + /** + * 绑定的远程呼梯设备 + */ + private List remoteCallElevatorDeviceId; + + /** + * 绑定梯控时设备 + */ + private DeviceInfo elevatorControlDeviceId; + + + @Data + public static class DeviceInfo { + private Long deviceId; + private String deviceIp; + } + + } 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 index 472e76a0..c373261b 100644 --- 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 @@ -8,12 +8,8 @@ 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.common.translation.annotation.Translation; -import org.dromara.common.translation.constant.TransConstant; import org.dromara.sis.domain.SisPersonLib; -import java.util.List; - /** * 人像库业务对象 tb_person_lib * @@ -36,37 +32,8 @@ public class SisPersonLibBo extends BaseEntity { @NotBlank(message = "人员库名称不能为空", groups = {AddGroup.class, EditGroup.class}) private String libName; - /** - * 设备编码,需要同步创建到设备中 - */ - @NotNull(message = "人像设备不能为空", groups = {AddGroup.class, EditGroup.class}) - private List eqpIds; - /** * 人员库描述 */ private String libDesc; - - /** - * 库类型,1:人员库,2:工服库 - */ - private Integer libType; - - /** - * 库类型名称 - */ - @Translation(type = TransConstant.DICT_TYPE_TO_LABEL, mapper = "libType", other = "sis_lib_type") - private String libTypeName; - - /** - * 库的业务类型 1: 门禁库,2: 黑名单库 - */ - private Integer busiType = 1; - - /** - * 门禁设备id - */ - private Long eqbId; - - } 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 index 3c595111..c83c985c 100644 --- 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 @@ -79,4 +79,9 @@ public class SisPersonLibImgBo extends BaseEntity { */ private Boolean isSyncE8; + /** + * 远程库图像ID + */ + private Long remoteImgId; + } 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 deleted file mode 100644 index 6913aac6..00000000 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisAccessControlDeviceVo.java +++ /dev/null @@ -1,94 +0,0 @@ -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.common.translation.annotation.Translation; -import org.dromara.common.translation.constant.TransConstant; -import org.dromara.sis.domain.SisAccessControlDevice; - -import java.io.Serial; -import java.io.Serializable; - - - -/** - * 门禁设备视图对象 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; - - @Translation(type = TransConstant.DICT_TYPE_TO_LABEL, mapper = "factoryNo", other = "sis_access_control_device_type") - private String factoryName; - - /** - * 设备类型 - */ - @ExcelProperty(value = "设备类型") - private Long eqpType; - - /** - * 接入类型(1: 平台接入,2:设备接入) - */ - @ExcelProperty(value = "接入类型(1: 平台接入,2:设备接入)") - private Long accessType; - - /** - * 设备ip - */ - @ExcelProperty(value = "设备ip") - private String eqpIp; - - /** - * 设备端口 - */ - @ExcelProperty(value = "设备端口") - private Integer eqpPort; - - /** - * 设备账号 - */ - @ExcelProperty(value = "设备账号") - private String eqpAccount; - - /** - * 设备密码 - */ - @ExcelProperty(value = "设备密码") - private String eqpPwd; - - -} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisAccessControlVo.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisAccessControlVo.java index 08ed4e17..864abcaa 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisAccessControlVo.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisAccessControlVo.java @@ -104,4 +104,9 @@ public class SisAccessControlVo implements Serializable { */ @ExcelProperty(value = "外部编码") private String outCode; + + private String bindDeviceId; + + private String bindDeviceIp; + } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisDeviceManageVo.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisDeviceManageVo.java index fd1c6163..bc299258 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisDeviceManageVo.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisDeviceManageVo.java @@ -98,4 +98,6 @@ public class SisDeviceManageVo implements Serializable { */ private String channelNo; + private String bindDeviceId; + } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisElevatorInfoVo.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisElevatorInfoVo.java index 308aebf2..7a479510 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisElevatorInfoVo.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisElevatorInfoVo.java @@ -1,19 +1,15 @@ package org.dromara.sis.domain.vo; -import java.util.Date; -import com.fasterxml.jackson.annotation.JsonFormat; -import org.dromara.sis.domain.SisElevatorInfo; 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 org.dromara.sis.domain.SisElevatorInfo; import java.io.Serial; import java.io.Serializable; import java.util.Date; - +import java.util.List; /** @@ -159,4 +155,16 @@ public class SisElevatorInfoVo implements Serializable { * 单元编码 */ private Long unitId; + + /** + * 呼梯摄像头 + */ + private List remoteCallElevatorDeviceId; + + /** + * 梯控摄像头 + */ + private Long elevatorControlDeviceId; + + } 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 index 14c1c73d..7a36ff66 100644 --- 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 @@ -4,7 +4,6 @@ import cn.idev.excel.annotation.ExcelIgnoreUnannotated; import cn.idev.excel.annotation.ExcelProperty; import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; -import org.dromara.common.translation.annotation.Translation; import org.dromara.sis.domain.SisPersonLibImg; import java.io.Serial; @@ -16,7 +15,7 @@ import java.io.Serializable; * 人像信息视图对象 tb_person_lib_img * * @author mocheng - * @date 2025-06-24 + * @since 2025-06-24 */ @Data @ExcelIgnoreUnannotated @@ -89,4 +88,9 @@ public class SisPersonLibImgVo implements Serializable { @ExcelProperty(value = "出生日期") private String birthDate; + /** + * 远程库图像ID + */ + @ExcelProperty(value = "远程库图像ID") + private Long remoteImgId; } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisPersonLibVo.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisPersonLibVo.java index 569928c0..fadcb661 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisPersonLibVo.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisPersonLibVo.java @@ -8,14 +8,13 @@ import org.dromara.sis.domain.SisPersonLib; import java.io.Serial; import java.io.Serializable; -import java.util.List; /** * 人像库视图对象 tb_person_lib * * @author mocheng - * @date 2025-06-24 + * @since 2025-06-24 */ @Data @ExcelIgnoreUnannotated @@ -42,22 +41,4 @@ public class SisPersonLibVo implements Serializable { */ @ExcelProperty(value = "人员库描述") private String libDesc; - - /** - * 库类型,1:人员库,2:工服库 - */ - @ExcelProperty(value = "库类型,1:人员库,2:工服库") - private Integer libType; - - /** - * 库的业务类型 1: 门禁库,2: 黑名单库 - */ - @ExcelProperty(value = "库的业务类型 1: 门禁库,2: 黑名单库") - private Integer busiType; - - /** - * 库关联的设备id列表 - */ - List eqpIds; - } 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 deleted file mode 100644 index 30079632..00000000 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/mapper/SisAccessControlDeviceMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -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 index ac3ea8a5..6a593fd7 100644 --- 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 @@ -1,8 +1,8 @@ package org.dromara.sis.mapper; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; import org.dromara.sis.domain.SisAccessControl; import org.dromara.sis.domain.vo.SisAccessControlVo; -import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; /** * 门禁设备Mapper接口 @@ -12,4 +12,5 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; */ public interface SisAccessControlMapper extends BaseMapperPlus { + SisAccessControlVo queryById(Long id); } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/door/res/AuthDoorDeviceFindRes.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/door/res/AuthDoorDeviceFindRes.java index 79520312..0f58f525 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/door/res/AuthDoorDeviceFindRes.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/door/res/AuthDoorDeviceFindRes.java @@ -15,6 +15,16 @@ public class AuthDoorDeviceFindRes { */ private Long id; + /** + * 门名称 + */ + private String name; + + /** + * 设备code + */ + private String deviceNo; + /** * 门禁Id */ diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/impl/DoorDeviceServiceImpl.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/impl/DoorDeviceServiceImpl.java index aabf65d2..e44a0114 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/impl/DoorDeviceServiceImpl.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/impl/DoorDeviceServiceImpl.java @@ -176,7 +176,7 @@ public class DoorDeviceServiceImpl implements DoorDeviceService { /** * 分页获取授权门信息 * - * @return TableDataInfo + * @return List */ public List getPageAuthDoorDeviceList() { Map queryDto = new HashMap<>(); diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/huawei/HuaWeiBoxApi.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/huawei/HuaWeiBoxApi.java new file mode 100644 index 00000000..397c5e7d --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/huawei/HuaWeiBoxApi.java @@ -0,0 +1,38 @@ +package org.dromara.sis.sdk.huawei; + +import org.dromara.sis.sdk.huawei.domain.AddHWPersonReq; + +import java.util.Collection; +import java.util.List; + +/** + * @apiNote HuaWeiBoxApi + * @author lsm + * @since 2025/7/10 +*/ +public interface HuaWeiBoxApi { + + /** + * 新增图片 + * + * @param req 入参 + * @return Long + */ + Long addPerson(List req); + + /** + * 删除图片 + * + * @param ids 入参 + * @return Boolean + */ + Boolean deletePerson(Collection ids); + + /** + * 根据抓拍图片比对,返回人员ID + * + * @param base64Img 入参 + * @return Long + */ + Long findPerson(String base64Img); +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/huawei/domain/AddHWPersonReq.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/huawei/domain/AddHWPersonReq.java new file mode 100644 index 00000000..55e690d2 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/huawei/domain/AddHWPersonReq.java @@ -0,0 +1,51 @@ +package org.dromara.sis.sdk.huawei.domain; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * @author lsm + * @apiNote AddHWPersonReq + * @since 2025/7/10 + */ +@Data +@NoArgsConstructor +public class AddHWPersonReq { + + /** + * img_id + */ + private String index; + + /** + * 名称 + */ + private String name; + + /** + * 性别 0:男 1:女 -1:未知 + */ + private String gender; + + /** + * 证件类型,枚举类型 0:身份证 1:护照 2:学生证 3:军官证 4:驾照 5:其他 + */ + private String credentialType; + + /** + * 证件号码 + */ + private String credentialNumber; + + /** + * 出生日期, 格式:yyyy-mm-dd,如2015-09-25 + */ + private String bornTime; + + /** + * base64 + */ + private List pictures; +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/huawei/domain/FinaHWPersonReq.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/huawei/domain/FinaHWPersonReq.java new file mode 100644 index 00000000..2073291f --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/huawei/domain/FinaHWPersonReq.java @@ -0,0 +1,74 @@ +package org.dromara.sis.sdk.huawei.domain; + +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author lsm + * @apiNote FinaHWPersonReq + * @since 2025/7/10 + */ +@Data +public class FinaHWPersonReq { + /** + * 人员库ID + */ + private String groupids = "201"; + /** + * 相似度 + */ + private String similarityThreshold = "85"; + /** + * page + */ + private PageDTO page; + + public FinaHWPersonReq() { + this.page = new PageDTO(); // 显式初始化 page + } + + /** + * picture + */ + private PictureDTO picture; + + /** + * PageDTO + */ + @NoArgsConstructor + @Data + public static class PageDTO { + + /** + * no + */ + private String no = "1"; + + /** + * size + */ + private String size = "100"; + + /** + * sort + */ + private String sort = "desc"; + + /** + * orderName + */ + private String orderName = "similarity"; + } + + /** + * PictureDTO + */ + @NoArgsConstructor + @Data + public static class PictureDTO { + /** + * base64 + */ + private String base64; + } +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/huawei/service/HuaWeiBoxApiService.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/huawei/service/HuaWeiBoxApiService.java new file mode 100644 index 00000000..b89ce154 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/huawei/service/HuaWeiBoxApiService.java @@ -0,0 +1,119 @@ +package org.dromara.sis.sdk.huawei.service; + +import cn.hutool.json.JSONArray; +import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.dromara.sis.sdk.huawei.HuaWeiBoxApi; +import org.dromara.sis.sdk.huawei.domain.AddHWPersonReq; +import org.dromara.sis.sdk.huawei.domain.FinaHWPersonReq; +import org.dromara.sis.sdk.huawei.utils.HuaWeiHttp; +import org.springframework.stereotype.Service; + +import java.util.Collection; +import java.util.List; +import java.util.stream.Collectors; + +/** + * @author lsm + * @apiNote HuaWeiBoxApiService + * @since 2025/7/10 + */ +@Slf4j +@Service +public class HuaWeiBoxApiService implements HuaWeiBoxApi { + + @Resource + private HuaWeiHttp huaWeiHttp; + + /** + * 新增图片 + * + * @param req 入参 + * @return Long + */ + @Override + public Long addPerson(List req) { + String url = "/sdk_service/rest/facerepositories/201/peoples"; + + JSONObject json = new JSONObject(); + json.putOnce("peopleList", req); + String jsonReq = JSONUtil.toJsonStr(json); + + String jsonStrRes = huaWeiHttp.doPost(url, jsonReq); + JSONObject jsonRes = JSONUtil.parseObj(jsonStrRes); + + if (jsonRes.getInt("resultCode") != 0) { + log.error("华为盒子新增图片失败,msg:{}", jsonRes.getStr("resultMsg")); + return null; + } + + JSONArray jsonArr = jsonRes.getJSONArray("ids"); + JSONObject obj = jsonArr.getJSONObject(0); + return Long.parseLong(obj.getStr("peopleId")); + } + + /** + * 删除图片 + * + * @param ids 图片id + * @return Boolean + */ + @Override + public Boolean deletePerson(Collection ids) { + String url = "/sdk_service/rest/facerepositories/201/peoples"; + + String idStr = ids.stream().map(String::valueOf).collect(Collectors.joining(",")); + JSONObject json = new JSONObject(); + json.putOnce("ids", idStr); + + String jsonStrRes = huaWeiHttp.doGetOrDel(url, json.toString(), true); + JSONObject jsonRes = JSONUtil.parseObj(jsonStrRes); + + if (jsonRes.getInt("resultCode") != 0) { + log.error("华为盒子删除图片失败,msg:{}", jsonRes.getStr("resultMsg")); + return false; + } + + return true; + } + + /** + * 根据抓拍图片比对,返回人员ID + * + * @param base64Img 入参 + * @return Long + */ + @Override + public Long findPerson(String base64Img) { + String url = "/sdk_service/rest/facerepositories/peoples"; + + FinaHWPersonReq req = new FinaHWPersonReq(); + FinaHWPersonReq.PictureDTO picture = new FinaHWPersonReq.PictureDTO(); + picture.setBase64(base64Img); + req.setPicture(picture); + + String jsonReq = JSONUtil.toJsonStr(req); + String jsonStrRes = huaWeiHttp.doPost(url, jsonReq); + JSONObject jsonRes = JSONUtil.parseObj(jsonStrRes); + + if (jsonRes.getInt("resultCode") != 0) { + log.error("调用华为盒子人脸比对接口失败,code:{},msg:{}", jsonRes.getInt("resultCode"), jsonRes.getStr("resultMsg")); + return null; + } + + JSONArray jsonArr = jsonRes.getJSONArray("algorithmResults"); + JSONObject obj = jsonArr.getJSONObject(0); + + if (Integer.parseInt(obj.getStr("number")) == 0) { + log.error("无人脸比对数据"); + return null; + } + + JSONArray peopleList = obj.getJSONArray("peopleList"); + JSONObject people = peopleList.getJSONObject(0); + + return Long.parseLong(people.getStr("peopleId")); + } +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/huawei/utils/HuaWeiHttp.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/huawei/utils/HuaWeiHttp.java new file mode 100644 index 00000000..08d2427c --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/huawei/utils/HuaWeiHttp.java @@ -0,0 +1,122 @@ +package org.dromara.sis.sdk.huawei.utils; + +import cn.hutool.core.lang.TypeReference; +import cn.hutool.http.HttpRequest; +import cn.hutool.http.HttpResponse; +import cn.hutool.http.HttpUtil; +import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; +import lombok.extern.slf4j.Slf4j; +import org.dromara.common.redis.utils.RedisUtils; +import org.springframework.stereotype.Component; + +import java.util.Map; + +/** + * @author lsm + * @apiNote HuaWeiHttp + * @since 2025/7/10 + */ +@Slf4j +@Component +public class HuaWeiHttp { + + private static final String BASE_URL = "https://192.168.24.100:18531"; + private static final String USERNAME = "huawei"; + private static final String PASSWORD = "qweasd123"; + + // 每次调用请求需要登录,获取JSESSIONID + public Boolean login() { + JSONObject json = new JSONObject(); + json.putOnce("userName", USERNAME); + json.putOnce("password", PASSWORD); + json.putOnce("timeout", 1800); + + String url = BASE_URL + "/loginInfo/login/v1.0"; + String jsonStr = json.toString(); + // 发送请求获取响应 + // 使用 try-with-resources 确保资源释放 + try (HttpResponse response = HttpRequest.post(url) + .header("Content-Type", "application/json") + .header("Cache-Control", "no-cache") + .body(jsonStr) + .execute()) { + if (response.getStatus() == 200 && response.getCookie("JSESSIONID") != null) { + RedisUtils.setCacheObject("JSESSIONID", response.getCookie("JSESSIONID").toString()); + RedisUtils.expire("JSESSIONID", 1800); + return true; + } else { + log.error("华为盒子登录失败,msg:{}", response.body()); + } + } + return false; + } + + /** + * 发起Post请求 + * + * @param jsonStr 请求入参 + * @param url 请求接口 + * @return 请求结果 + */ + public String doPost(String url, String jsonStr) { + if (!RedisUtils.isExistsObject("JSESSIONID")) { + if (!this.login()) { + RedisUtils.deleteObject("JSESSIONID"); + return null; + } + } + + String api = BASE_URL + url; + + try (HttpResponse response = HttpRequest.post(api) + .header("Content-Type", "application/json") + .header("Cache-Control", "no-cache") + .header("Cookie", RedisUtils.getCacheObject("JSESSIONID")) + .body(jsonStr) + .execute()) { + if (response.isOk()) { + return response.body(); + } else { + log.error("请求失败,msg:{}", response.body()); + } + } + return null; + } + + /** + * 发起Get/Delete请求 + * + * @param url 请求接口 + * @param jsonStr 请求入参 + * @return 请求结果 + */ + public String doGetOrDel(String url, String jsonStr, Boolean isDelete) { + if (!RedisUtils.isExistsObject("JSESSIONID")) { + if (!this.login()) { + RedisUtils.deleteObject("JSESSIONID"); + return null; + } + } + + String api = BASE_URL + url; + + if (isDelete) { + // 直接转换为Map + Map map = JSONUtil.toBean(jsonStr, new TypeReference<>() { + }, false); + + String fullUrl = HttpUtil.urlWithForm(api, map, null, false); + + try (HttpResponse response = HttpRequest.delete(fullUrl) + .header("Content-Type", "application/json") + .header("Cache-Control", "no-cache") + .header("Cookie", RedisUtils.getCacheObject("JSESSIONID")) + .execute()) { + return response.body(); + } + } + + return null; + } +} 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 deleted file mode 100644 index 8e3bf7b1..00000000 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisAccessControlDeviceService.java +++ /dev/null @@ -1,76 +0,0 @@ -package org.dromara.sis.service; - -import org.dromara.common.mybatis.core.page.PageQuery; -import org.dromara.common.mybatis.core.page.TableDataInfo; -import org.dromara.sis.domain.bo.SisAccessControlDeviceBo; -import org.dromara.sis.domain.vo.SisAccessControlDeviceVo; - -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); - - /** - * 根据factoryNo 查询设备列表 - * - * @param factoryNo 厂商编号 - * @return 返回设备列表 - */ - List queryListByFactoryNo(String factoryNo); -} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisAccessControlService.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisAccessControlService.java index fa6b77c3..d9bdb48b 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisAccessControlService.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisAccessControlService.java @@ -82,4 +82,11 @@ public interface ISisAccessControlService { */ List> queryAcTree(); + /** + * 同步门禁设备 + * + * @return Boolean + */ + Boolean syncE8(); + } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisAuthRecordService.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisAuthRecordService.java index ed1cb45a..c38079d5 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisAuthRecordService.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisAuthRecordService.java @@ -2,6 +2,8 @@ package org.dromara.sis.service; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.sis.domain.SisAuthRecord; +import org.dromara.sis.domain.bo.AuthLibBo; import org.dromara.sis.domain.bo.SingleAuthRecordBo; import org.dromara.sis.domain.bo.SisAuthRecordBo; import org.dromara.sis.domain.vo.SisAuthRecordVo; @@ -83,4 +85,15 @@ public interface ISisAuthRecordService { * @return 是否授权成功 */ Boolean singleAuth(SingleAuthRecordBo bo); + + Boolean deleteByLibId(Long libId); + + Boolean authLib(AuthLibBo bo); + + /** + * 插叙库id授权的设备 + * @param libId 人像库id + * @return + */ + List queryAuthDevice(String libId); } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisDeviceBindRefService.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisDeviceBindRefService.java index 66161e42..d47a2f8f 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisDeviceBindRefService.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisDeviceBindRefService.java @@ -77,8 +77,25 @@ public interface ISisDeviceBindRefService { /** * 通过ip查询设备关联关系 + * * @param ipcAddr 设备ip * @return 返回关联关系表 */ SisDeviceBindRef queryByDeviceIp(String ipcAddr); + + /** + * 批量写入设备绑定关系 + * + * @param ls 写入数据 + */ + Boolean batchInsert(List ls); + + Boolean deleteByBindId(Long elevatorId); + + /** + * 通过电梯id 查询绑定的设备关系 + * @param elevatorId 电梯id + * @return 返回绑定设备列表 + */ + List queryByBindId(Long elevatorId); } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisDeviceManageService.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisDeviceManageService.java index 3d8859d9..218b1b03 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisDeviceManageService.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisDeviceManageService.java @@ -1,7 +1,9 @@ package org.dromara.sis.service; +import org.dromara.common.core.domain.TreeNode; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.sis.domain.SisDeviceManage; import org.dromara.sis.domain.bo.SisDeviceManageBo; import org.dromara.sis.domain.vo.SisDeviceManageVo; @@ -73,4 +75,19 @@ public interface ISisDeviceManageService { * @return 设备信息 */ SisDeviceManageVo queryVoByDeviceIp(Integer deviceCode); + + /** + * 查询设备数 + * + * @return + */ + List> tree(); + + + /** + * 通过设备id列表查询设备信息 + * @param deviceIds 设备id列表 + * @return 返回设备报表 + */ + List queryByIds(List deviceIds); } 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 deleted file mode 100644 index 11400bdb..00000000 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAccessControlDeviceServiceImpl.java +++ /dev/null @@ -1,152 +0,0 @@ -package org.dromara.sis.service.impl; - -import cn.hutool.core.util.IdUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import lombok.extern.slf4j.Slf4j; -import org.dromara.common.core.constant.CodePrefixConstants; -import org.dromara.common.core.service.DictService; -import org.dromara.common.core.utils.MapstructUtils; -import org.dromara.common.core.utils.StringUtils; -import org.dromara.common.mybatis.core.page.PageQuery; -import org.dromara.common.mybatis.core.page.TableDataInfo; -import org.dromara.sis.domain.SisAccessControlDevice; -import org.dromara.sis.domain.bo.SisAccessControlDeviceBo; -import org.dromara.sis.domain.vo.SisAccessControlDeviceVo; -import org.dromara.sis.mapper.SisAccessControlDeviceMapper; -import org.dromara.sis.service.ISisAccessControlDeviceService; -import org.springframework.stereotype.Service; - -import javax.annotation.Resource; -import java.util.Collection; -import java.util.List; -import java.util.Map; - -/** - * 门禁设备Service业务层处理 - * - * @author mocheng - * @date 2025-06-25 - */ -@Slf4j -@Service -public class SisAccessControlDeviceServiceImpl implements ISisAccessControlDeviceService { - @Resource - private SisAccessControlDeviceMapper baseMapper; - @Resource - private DictService dictService; - - /** - * 查询门禁设备 - * - * @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.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(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); - // 生成设备比吗 - add.setEqpNo(CodePrefixConstants.SIS_DEVICE_CODE_PREFIX + IdUtil.getSnowflakeNextIdStr()); - 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; - } - - @Override - public List queryListByFactoryNo(String factoryNo) { - LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); - lqw.eq(SisAccessControlDevice::getFactoryNo, factoryNo); - return baseMapper.selectVoList(lqw); - } -} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAccessControlServiceImpl.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAccessControlServiceImpl.java index cb13e973..cbde9276 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAccessControlServiceImpl.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAccessControlServiceImpl.java @@ -15,7 +15,6 @@ import org.dromara.common.core.utils.TreeUtils; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.property.api.RemoteFloorService; -import org.dromara.property.api.domain.vo.RemoteFloorVo; import org.dromara.sis.domain.SisAccessControl; import org.dromara.sis.domain.SisDeviceBindRef; import org.dromara.sis.domain.bo.SisAccessControlBo; @@ -24,14 +23,14 @@ import org.dromara.sis.domain.vo.SisAccessControlVo; import org.dromara.sis.domain.vo.SisDeviceManageVo; import org.dromara.sis.mapper.SisAccessControlMapper; 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.dromara.sis.sdk.e8.domain.door.res.AuthDoorDeviceFindRes; import org.dromara.sis.service.ISisAccessControlService; import org.dromara.sis.service.ISisDeviceBindRefService; import org.dromara.sis.service.ISisDeviceManageService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Map; @@ -63,7 +62,7 @@ public class SisAccessControlServiceImpl implements ISisAccessControlService { */ @Override public SisAccessControlVo queryById(Long id) { - return baseMapper.selectVoById(id); + return baseMapper.queryById(id); } /** @@ -96,12 +95,10 @@ public class SisAccessControlServiceImpl implements ISisAccessControlService { Map params = bo.getParams(); 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.getAccessIp()), SisAccessControl::getAccessIp, bo.getAccessIp()); lqw.eq(bo.getAccessPort() != null, SisAccessControl::getAccessPort, bo.getAccessPort()); lqw.eq(bo.getAccessType() != null, SisAccessControl::getAccessType, bo.getAccessType()); -// 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()); @@ -123,63 +120,7 @@ public class SisAccessControlServiceImpl implements ISisAccessControlService { @Override @Transactional(rollbackFor = Exception.class) public Boolean insertByBo(SisAccessControlBo bo) { - // 校验楼层是否存在 - RemoteFloorVo remoteFloorVo = remoteFloorService.queryByFloorId(bo.getFloorId()); - Assert.notNull(remoteFloorVo, "当前楼层信息不存在。"); - // 检验设备是否存在 - SisDeviceManageVo sisDeviceManageVo = sisDeviceManageService.queryById(bo.getBindDeviceId()); - Assert.notNull(sisDeviceManageVo, "绑定设备不存在。"); - SisAccessControl add = MapstructUtils.convert(bo, SisAccessControl.class); - add.setCommunityId(remoteFloorVo.getCommunityId()); - add.setBuildingId(remoteFloorVo.getBuildingId()); - add.setUnitId(remoteFloorVo.getUnitId()); - add.setFloorId(remoteFloorVo.getId()); - Assert.notNull(add, "数据处理失败"); - boolean flag = baseMapper.insert(add) > 0; - if (flag) { - // 写入关联关系表中 - SisDeviceBindRef sisDeviceBindRef = new SisDeviceBindRef(); - sisDeviceBindRef.setDeviceId(sisDeviceManageVo.getId()); - sisDeviceBindRef.setDeviceIp(sisDeviceManageVo.getDeviceIp()); - sisDeviceBindRef.setBindId(add.getId()); - sisDeviceBindRef.setControlType(ControlTypeEnum.ACCESS_CONTROL.getCode()); - Boolean insert = sisDeviceBindRefService.insert(sisDeviceBindRef); - Assert.isTrue(insert, "写入设备关联表失败!"); - - // 添加E8门禁设备 - if (add.getControlType() == 2L) { - log.info("开始同步写入E8门禁"); - DoorDeviceAddReq e8DoorReq = new DoorDeviceAddReq(); - // 设备类型 - e8DoorReq.setType(add.getAccessType()); - // 设备名称 - e8DoorReq.setName(add.getAccessName()); - // 通讯类型 - e8DoorReq.setCommType(0); - // cpuid - e8DoorReq.setCpuID(""); - // ip - e8DoorReq.setIp(add.getAccessIp()); - // 端口 - e8DoorReq.setPort(add.getAccessPort()); - // 网关ip - e8DoorReq.setGatewayIP(""); - // 子网掩码 - e8DoorReq.setNetMask("255.255.255.0"); - - DoorDeviceAddRes e8DoorRes = doorDeviceService.addDoorDevice(e8DoorReq); - Assert.notNull(e8DoorRes, "写入E8平台失败"); - - log.info("E8平台写入成功,将返回值:{},回写到{}门禁中!", e8DoorRes.getId(), add.getAccessName()); - SisAccessControlBo wbBo = new SisAccessControlBo(); - wbBo.setId(add.getId()); - wbBo.setOutCode(e8DoorRes.getId().toString()); - Boolean update = this.updateByBo(wbBo); - Assert.isTrue(update, "外部编码回写失败"); - log.info("E8平台写入完成!"); - } - } - return flag; + return true; } /** @@ -189,9 +130,23 @@ public class SisAccessControlServiceImpl implements ISisAccessControlService { * @return 是否修改成功 */ @Override + @Transactional(rollbackFor = Exception.class) public Boolean updateByBo(SisAccessControlBo bo) { SisAccessControl update = MapstructUtils.convert(bo, SisAccessControl.class); - validEntityBeforeSave(update); + sisDeviceBindRefService.deleteByBindId(bo.getId()); + if (bo.getBindDeviceId() != null) { + // 检验设备是否存在 + SisDeviceManageVo sisDeviceManageVo = sisDeviceManageService.queryById(bo.getBindDeviceId()); + // 写入关联关系表中 + SisDeviceBindRef sisDeviceBindRef = new SisDeviceBindRef(); + sisDeviceBindRef.setDeviceId(sisDeviceManageVo.getId()); + sisDeviceBindRef.setDeviceIp(sisDeviceManageVo.getDeviceIp()); + sisDeviceBindRef.setBindId(bo.getId()); + sisDeviceBindRef.setControlType(ControlTypeEnum.ACCESS_CONTROL.getCode()); + Boolean insert = sisDeviceBindRefService.insert(sisDeviceBindRef); + Assert.isTrue(insert, "写入设备关联表失败!"); + } + return baseMapper.updateById(update) > 0; } @@ -211,10 +166,7 @@ public class SisAccessControlServiceImpl implements ISisAccessControlService { */ @Override public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { - if (isValid) { - //TODO 做一些业务上的校验,判断是否需要校验 - } - return baseMapper.deleteByIds(ids) > 0; + return true; } /** @@ -246,4 +198,43 @@ public class SisAccessControlServiceImpl implements ISisAccessControlService { } return TreeUtils.build(treeNodes, 0L); } + + /** + * 同步门禁设备 + * + * @return Boolean + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean syncE8() { + List authDoorDeviceFindRes = doorDeviceService.getPageAuthDoorDeviceList(); + + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(true, SisAccessControl::getControlType, 2); + List sisAccessControlVos = baseMapper.selectVoList(lqw); + + // 过滤掉authDoorDeviceFindRes中与sisAccessControlVos具有相同 deviceId 和 outCode 的项 + List filter = authDoorDeviceFindRes.stream() + .filter(res -> sisAccessControlVos.stream() + .noneMatch(vo -> vo.getOutCode().equals(res.getDeviceId().toString()))) + .toList(); + + Collection sisACBos = new ArrayList<>(); + for (AuthDoorDeviceFindRes res : filter){ + SisAccessControl ac = new SisAccessControl(); + ac.setFactoryCode(res.getDeviceNo()); + ac.setAccessCode(res.getDeviceId().toString()); + ac.setOutCode(res.getDeviceId().toString()); + ac.setOutDoorCode(res.getId().toString()); + ac.setAccessType(1); + ac.setControlType(2); + ac.setAccessName(res.getName()); + ac.setBuildingId(0L); + ac.setCommunityId(0L); + ac.setAccessIp("127.0.0.1"); + ac.setAccessPort(8080); + sisACBos.add(ac); + } + return baseMapper.insertBatch(sisACBos); + } } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAuthRecordServiceImpl.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAuthRecordServiceImpl.java index dcfe11d1..9b262c10 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAuthRecordServiceImpl.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAuthRecordServiceImpl.java @@ -1,7 +1,7 @@ package org.dromara.sis.service.impl; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.img.ImgUtil; -import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -13,27 +13,27 @@ import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.resource.api.RemoteFileService; import org.dromara.sis.domain.SisAuthRecord; +import org.dromara.sis.domain.SisDeviceManage; +import org.dromara.sis.domain.bo.AuthLibBo; import org.dromara.sis.domain.bo.SingleAuthRecordBo; import org.dromara.sis.domain.bo.SisAuthRecordBo; -import org.dromara.sis.domain.bo.SisLibDeviceImgRefBo; -import org.dromara.sis.domain.bo.SisLibDeviceRefBo; -import org.dromara.sis.domain.vo.*; +import org.dromara.sis.domain.vo.SisAuthRecordVo; import org.dromara.sis.mapper.SisAuthRecordMapper; import org.dromara.sis.sdk.e8.AccessControlService; import org.dromara.sis.sdk.e8.DoorDeviceService; import org.dromara.sis.sdk.e8.VoucherControlService; -import org.dromara.sis.sdk.e8.domain.accessControl.req.CustomerAuthAddReq; -import org.dromara.sis.sdk.e8.domain.door.res.AuthDoorDeviceFindRes; -import org.dromara.sis.sdk.e8.domain.voucher.req.IssueVoucherReq; import org.dromara.sis.sdk.unview.UnViewAiBoxApi; -import org.dromara.sis.sdk.unview.model.UvModel; import org.dromara.sis.service.*; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; + import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; -import java.util.*; +import java.util.Base64; +import java.util.Collection; +import java.util.List; +import java.util.Map; /** * 授权记录Service业务层处理 @@ -57,7 +57,7 @@ public class SisAuthRecordServiceImpl implements ISisAuthRecordService { private final ISisLibDeviceRefService sisLibDeviceRefService; private final ISisAccessControlService sisAccessControlService; private final ISisLibDeviceImgRefService sisLibDeviceImgRefService; - private final ISisAccessControlDeviceService sisAccessControlDeviceService; + private final ISisDeviceManageService deviceManageService; @DubboReference private final RemoteFileService remoteFileService; @@ -116,181 +116,163 @@ public class SisAuthRecordServiceImpl implements ISisAuthRecordService { @Override @Transactional(rollbackFor = Exception.class) public Boolean insertByBo(SisAuthRecordBo bo) { - List refVos = sisLibDeviceRefService.queryByLibIds(Collections.singleton(bo.getLibId())); - Assert.notEmpty(refVos, "图像库与设备关联关系不存在"); - List eqpIds = refVos.stream().map(SisLibDeviceRefVo::getEqpId).toList(); - - - /* boolean flag = false; - log.info("开始写入授权记录,图片:{}、门禁:{}、设备:{}", bo.getImgIds(), bo.getAcIds(), eqpIds); - for (Long imgId : bo.getImgIds()) { - for (Long acId : bo.getAcIds()) { - for (Long eqpId : eqpIds) { - SisAuthRecord add = MapstructUtils.convert(bo, SisAuthRecord.class); - Assert.notNull(add, "数据处理失败"); - add.setAcId(acId); - add.setImgId(imgId); - add.setEqbId(eqpId); - flag = baseMapper.insert(add) > 0; - Assert.isTrue(flag, "授权记录写入失败"); - } - } - } - log.info("授权记录写入完成");*/ - - SisPersonLibVo libVo = sisPersonLibService.queryById(bo.getLibId()); - Assert.notNull(libVo, "图像库不存在,id=" + (bo.getLibId())); - - List imgList = sisPersonLibImgService.queryListByIds(bo.getImgIds()); - Assert.notEmpty(imgList, "图片不存在"); - - List acList = sisAccessControlService.queryListByIds(bo.getAcIds()); - Assert.notEmpty(acList, "门禁设备不存在!"); - - - try { - log.info("开始对宇视盒子下发照片,图片:{}、设备:{}", bo.getImgIds(), eqpIds); - for (SisPersonLibImgVo imgVo : imgList) { - for (Long eqpId : eqpIds) { - long eqp_lib_id; - Integer eqp_lib_img_id; - - byte[] imageByte = remoteFileService.downloadToByteArray(imgVo.getImgOssId()); - Assert.notNull(imageByte, "图片下载失败"); -// byte[] imageByte = Files.readAllBytes(Paths.get(imgVo.getImgUrl())); - - SisAccessControlDeviceVo vo = sisAccessControlDeviceService.queryById(eqpId); - Assert.notNull(vo, "门禁控制设备不存在,id=" + eqpId); - log.info(libVo.getLibType() == 1 ? "准备写入人像设备,code={}" : "准备写入工服设备,code={}", vo.getEqpNo()); - - UvModel.UvSystemInfo systemInfo = new UvModel.UvSystemInfo(); - systemInfo.setAccount(vo.getEqpAccount()); - systemInfo.setPassword(vo.getEqpPwd()); - systemInfo.setIp(vo.getEqpIp()); - systemInfo.setPort(vo.getEqpPort()); - - // 获取宇视线上库ID - SisLibDeviceRefBo refBo = new SisLibDeviceRefBo(); - refBo.setEqpId(eqpId); - refBo.setLibId(libVo.getId()); - List refVo = sisLibDeviceRefService.queryList(refBo); - Assert.notNull(refVo, "系统库与设备库关联关系不存在!libId:{},eqpId:{}", libVo.getId(), eqpId); - eqp_lib_id = refVo.get(0).getEqpLibId(); - - if (libVo.getLibType() == 1) { - // 宇视添加人像 - UvModel.AddPersonParams addPersonParams = new UvModel.AddPersonParams(); - addPersonParams.setPerson_name(imgVo.getImgName()); - addPersonParams.setImage_base64(base64Helper(imageByte)); - addPersonParams.setLib_id(Math.toIntExact(eqp_lib_id)); - addPersonParams.setSex(imgVo.getSex()); - addPersonParams.setEmail(imgVo.getEmail()); - addPersonParams.setTel(imgVo.getTel()); - addPersonParams.setCertificate_type(imgVo.getCertificateType()); - addPersonParams.setCertificate_no(imgVo.getCertificateNo()); - addPersonParams.setBirth_date(imgVo.getBirthDate()); - // 发起请求获取响应 - UvModel.AddPersonResult addResult = unViewAiBoxApi.addPerson(systemInfo, addPersonParams); - eqp_lib_img_id = addResult.getPerson_id(); - - } else { - UvModel.WorkClothesInfo addResult = unViewAiBoxApi.addWorkClothes(systemInfo, Math.toIntExact(eqp_lib_id), base64Helper(imageByte)); - eqp_lib_img_id = addResult.getWorkclothes_id(); - } - Assert.notNull(eqp_lib_img_id, "图片上传宇视盒子失败"); - log.info("图片上传宇视盒子完成,eqp_lib_img_id = {}", eqp_lib_img_id); - - SisLibDeviceImgRefBo ref = new SisLibDeviceImgRefBo(); - ref.setLibId(libVo.getId()); - ref.setImgId(imgVo.getId()); - ref.setEqpId(eqpId); - ref.setEqpLibId(eqp_lib_id); - ref.setEqpLibImgId(eqp_lib_img_id.longValue()); - Boolean insert = sisLibDeviceImgRefService.insertByBo(ref); - Assert.isTrue(insert, "写入图片关联关系表失败!"); - - } - } - log.info("图片开始下发完成!"); - - log.info("开始写入E8平台,图片:{}、门禁:{}", bo.getImgIds(), bo.getAcIds()); - for (SisPersonLibImgVo imgVo : imgList) { - byte[] imageByte = remoteFileService.downloadToByteArray(imgVo.getImgOssId()); - Assert.notNull(imageByte, "图片下载失败"); - - log.info("E8平台上传图片,{}", imgVo.getId()); - String url = e8VouchService.uploadFace(imageByte); - Assert.notNull(url, "E8平台上传图片失败"); - log.info("E8平台上传图片完成!"); - - log.info("E8平台发行凭证"); - IssueVoucherReq req = new IssueVoucherReq(); - // 34:普通用户卡 - req.setCardType(34); - // 70:人脸凭证 - req.setVoucherType(70); - // TODO 临时默认人员 - req.setPersonID(539696740646981L); - req.setTxtData(url); - Long vId = e8VouchService.issueVoucher(req); - Assert.notNull(vId, "E8平台发行凭证失败"); - log.info("E8平台发行凭证完成!"); - - log.info("E8平台授权凭证"); - // 查询E8授权门列表 - List authDoorList = e8DoorDeviceService.getPageAuthDoorDeviceList(); - Assert.notEmpty(authDoorList, "E8平台授权门列表为空"); - - // E8 授权列表 - List authList = new ArrayList<>(acList.size()); - // 授权记录 - List recordList = new ArrayList<>(acList.size()); - // E8授权门 - AuthDoorDeviceFindRes authDoor = null; - for (SisAccessControlVo sisAccessControlVo : acList) { - if (sisAccessControlVo.getControlType() != 1 && sisAccessControlVo.getAccessType() != 2) { - - // 通过门禁ID匹配授权门 - authDoor = authDoorList.stream().filter(item -> item.getDeviceId() == Long.parseLong(sisAccessControlVo.getOutCode())).findFirst().orElse(null); - - if (authDoor != null) { - CustomerAuthAddReq.AuthGroupData door = new CustomerAuthAddReq.AuthGroupData(); - door.setType(0); - door.setGatewayType(1); - // E8授权传入ID为门ID,非门禁ID - door.setId(authDoor.getId()); - authList.add(door); - - SisAuthRecord authRecord = new SisAuthRecord(); - authRecord.setDoorId(authDoor.getId()); - authRecord.setDeviceId(authDoor.getDeviceId()); - authRecord.setLibId(imgVo.getLibId()); - authRecord.setImgId(imgVo.getId()); - authRecord.setAcId(sisAccessControlVo.getId()); - recordList.add(authRecord); - } - } - } - - CustomerAuthAddReq authReq = new CustomerAuthAddReq(); - authReq.setAuthType(0); - authReq.setScheduleId(1L); - authReq.setPersonIds(Collections.singletonList(539696740646981L)); - authReq.setStartTime("2025-06-25 11: 23: 39"); - authReq.setEndTime("2025-07-25 11: 23: 39"); - authReq.setAuthData(authList); - Boolean auth = e8AccessControlService.addCustomerAuth(authReq); - Assert.isTrue(auth, "E8平台授权失败"); - log.info("E8平台授权完成!"); - boolean insert = baseMapper.insertBatch(recordList); - Assert.isTrue(insert, "写入E8关联关系表失败!"); - } - log.info("写入E8平台完成!"); - - } catch (Exception e) { - throw new RuntimeException(e.getMessage()); - } - +// List refVos = sisLibDeviceRefService.queryByLibIds(Collections.singleton(bo.getLibId())); +// Assert.notEmpty(refVos, "图像库与设备关联关系不存在"); +// List eqpIds = refVos.stream().map(SisLibDeviceRefVo::getEqpId).toList(); +// +// SisPersonLibVo libVo = sisPersonLibService.queryById(bo.getLibId()); +// Assert.notNull(libVo, "图像库不存在,id=" + (bo.getLibId())); +// +// List imgList = sisPersonLibImgService.queryListByIds(bo.getImgIds()); +// Assert.notEmpty(imgList, "图片不存在"); +// +// List acList = sisAccessControlService.queryListByIds(bo.getAcIds()); +// Assert.notEmpty(acList, "门禁设备不存在!"); +// +// +// try { +// log.info("开始对宇视盒子下发照片,图片:{}、设备:{}", bo.getImgIds(), eqpIds); +// for (SisPersonLibImgVo imgVo : imgList) { +// for (Long eqpId : eqpIds) { +// long eqp_lib_id; +// Integer eqp_lib_img_id; +// +// byte[] imageByte = remoteFileService.downloadToByteArray(imgVo.getImgOssId()); +// Assert.notNull(imageByte, "图片下载失败"); +// +// SisAccessControlDeviceVo vo = sisAccessControlDeviceService.queryById(eqpId); +// Assert.notNull(vo, "门禁控制设备不存在,id=" + eqpId); +// log.info(libVo .getLibType() == 1 ? "准备写入人像设备,code={}" : "准备写入工服设备,code={}", vo.getEqpNo()); +// +// UvModel.UvSystemInfo systemInfo = new UvModel.UvSystemInfo(); +// systemInfo.setAccount(vo.getEqpAccount()); +// systemInfo.setPassword(vo.getEqpPwd()); +// systemInfo.setIp(vo.getEqpIp()); +// systemInfo.setPort(vo.getEqpPort()); +// +// // 获取宇视线上库ID +// SisLibDeviceRefBo refBo = new SisLibDeviceRefBo(); +// refBo.setEqpId(eqpId); +// refBo.setLibId(libVo.getId()); +// List refVo = sisLibDeviceRefService.queryList(refBo); +// Assert.notNull(refVo, "系统库与设备库关联关系不存在!libId:{},eqpId:{}", libVo.getId(), eqpId); +// eqp_lib_id = refVo.get(0).getEqpLibId(); +// +// if (libVo.getLibType() == 1) { +// // 宇视添加人像 +// UvModel.AddPersonParams addPersonParams = new UvModel.AddPersonParams(); +// addPersonParams.setPerson_name(imgVo.getImgName()); +// addPersonParams.setImage_base64(base64Helper(imageByte)); +// addPersonParams.setLib_id(Math.toIntExact(eqp_lib_id)); +// addPersonParams.setSex(imgVo.getSex()); +// addPersonParams.setEmail(imgVo.getEmail()); +// addPersonParams.setTel(imgVo.getTel()); +// addPersonParams.setCertificate_type(imgVo.getCertificateType()); +// addPersonParams.setCertificate_no(imgVo.getCertificateNo()); +// addPersonParams.setBirth_date(imgVo.getBirthDate()); +// // 发起请求获取响应 +// UvModel.AddPersonResult addResult = unViewAiBoxApi.addPerson(systemInfo, addPersonParams); +// eqp_lib_img_id = addResult.getPerson_id(); +// +// } else { +// UvModel.WorkClothesInfo addResult = unViewAiBoxApi.addWorkClothes(systemInfo, Math.toIntExact(eqp_lib_id), base64Helper(imageByte)); +// eqp_lib_img_id = addResult.getWorkclothes_id(); +// } +// Assert.notNull(eqp_lib_img_id, "图片上传宇视盒子失败"); +// log.info("图片上传宇视盒子完成,eqp_lib_img_id = {}", eqp_lib_img_id); +// +// SisLibDeviceImgRefBo ref = new SisLibDeviceImgRefBo(); +// ref.setLibId(libVo.getId()); +// ref.setImgId(imgVo.getId()); +// ref.setEqpId(eqpId); +// ref.setEqpLibId(eqp_lib_id); +// ref.setEqpLibImgId(eqp_lib_img_id.longValue()); +// Boolean insert = sisLibDeviceImgRefService.insertByBo(ref); +// Assert.isTrue(insert, "写入图片关联关系表失败!"); +// +// } +// } +// log.info("图片开始下发完成!"); +// +// log.info("开始写入E8平台,图片:{}、门禁:{}", bo.getImgIds(), bo.getAcIds()); +// for (SisPersonLibImgVo imgVo : imgList) { +// byte[] imageByte = remoteFileService.downloadToByteArray(imgVo.getImgOssId()); +// Assert.notNull(imageByte, "图片下载失败"); +// +// log.info("E8平台上传图片,{}", imgVo.getId()); +// String url = e8VouchService.uploadFace(imageByte); +// Assert.notNull(url, "E8平台上传图片失败"); +// log.info("E8平台上传图片完成!"); +// +// log.info("E8平台发行凭证"); +// IssueVoucherReq req = new IssueVoucherReq(); +// // 34:普通用户卡 +// req.setCardType(34); +// // 70:人脸凭证 +// req.setVoucherType(70); +// // TODO 临时默认人员 +// req.setPersonID(539696740646981L); +// req.setTxtData(url); +// Long vId = e8VouchService.issueVoucher(req); +// Assert.notNull(vId, "E8平台发行凭证失败"); +// log.info("E8平台发行凭证完成!"); +// +// log.info("E8平台授权凭证"); +// // 查询E8授权门列表 +// List authDoorList = e8DoorDeviceService.getPageAuthDoorDeviceList(); +// Assert.notEmpty(authDoorList, "E8平台授权门列表为空"); +// +// // E8 授权列表 +// List authList = new ArrayList<>(acList.size()); +// // 授权记录 +// List recordList = new ArrayList<>(acList.size()); +// // E8授权门 +// AuthDoorDeviceFindRes authDoor = null; +// for (SisAccessControlVo sisAccessControlVo : acList) { +// if (sisAccessControlVo.getControlType() != 1 && sisAccessControlVo.getAccessType() != 2) { +// +// // 通过门禁ID匹配授权门 +// authDoor = authDoorList.stream().filter(item -> item.getDeviceId() == Long.parseLong(sisAccessControlVo.getOutCode())).findFirst().orElse(null); +// +// if (authDoor != null) { +// CustomerAuthAddReq.AuthGroupData door = new CustomerAuthAddReq.AuthGroupData(); +// door.setType(0); +// door.setGatewayType(1); +// // E8授权传入ID为门ID,非门禁ID +// door.setId(authDoor.getId()); +// authList.add(door); +// +// SisAuthRecord authRecord = new SisAuthRecord(); +// authRecord.setDoorId(authDoor.getId()); +// authRecord.setDeviceId(authDoor.getDeviceId()); +// authRecord.setLibId(imgVo.getLibId()); +// authRecord.setImgId(imgVo.getId()); +// authRecord.setAcId(sisAccessControlVo.getId()); +// recordList.add(authRecord); +// } +// } +// } +// +// CustomerAuthAddReq authReq = new CustomerAuthAddReq(); +// authReq.setAuthType(0); +// authReq.setScheduleId(1L); +// authReq.setPersonIds(Collections.singletonList(539696740646981L)); +// authReq.setStartTime("2025-06-25 11: 23: 39"); +// authReq.setEndTime("2025-07-25 11: 23: 39"); +// authReq.setAuthData(authList); +// Boolean auth = e8AccessControlService.addCustomerAuth(authReq); +// Assert.isTrue(auth, "E8平台授权失败"); +// log.info("E8平台授权完成!"); +// boolean insert = baseMapper.insertBatch(recordList); +// Assert.isTrue(insert, "写入E8关联关系表失败!"); +// } +// log.info("写入E8平台完成!"); +// +// } catch (Exception e) { +// throw new RuntimeException(e.getMessage()); +// } +// +// return true; return true; } @@ -353,4 +335,41 @@ public class SisAuthRecordServiceImpl implements ISisAuthRecordService { public SisAuthRecordVo checkAuth(Integer personId, Long accessControlId) { return baseMapper.checkAuth(personId, accessControlId); } + + @Override + public Boolean deleteByLibId(Long libId) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(SisAuthRecord::getLibId, libId); + return baseMapper.delete(lqw) > 0; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean authLib(AuthLibBo bo) { + if (CollUtil.isEmpty(bo.getDeviceIds())) { + return false; + } + // 每次授权先删除上一次授权信息 + deleteByLibId(bo.getLibId()); + // 过滤点不是设备的节点数据 + List ls = deviceManageService.queryByIds(bo.getDeviceIds()); + if (CollUtil.isEmpty(ls)) { + return false; + } + // 批量写入授权数据 + List list = ls.stream().map(item -> { + SisAuthRecord authRecord = new SisAuthRecord(); + authRecord.setDeviceId(item.getId()); + authRecord.setLibId(bo.getLibId()); + return authRecord; + }).toList(); + return baseMapper.insertBatch(list); + } + + @Override + public List queryAuthDevice(String libId) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(SisAuthRecord::getLibId, libId); + return baseMapper.selectList(lqw); + } } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisDeviceBindRefServiceImpl.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisDeviceBindRefServiceImpl.java index 75608242..6657674f 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisDeviceBindRefServiceImpl.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisDeviceBindRefServiceImpl.java @@ -1,5 +1,6 @@ package org.dromara.sis.service.impl; +import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -142,4 +143,24 @@ public class SisDeviceBindRefServiceImpl implements ISisDeviceBindRefService { lqw.eq(SisDeviceBindRef::getDeviceIp, ipcAddr); return baseMapper.selectOne(lqw); } + + @Override + public Boolean batchInsert(List ls) { + return baseMapper.insertBatch(ls); + } + + @Override + public Boolean deleteByBindId(Long elevatorId) { + Assert.notNull(elevatorId, "elevatorId 不能为null"); + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(SisDeviceBindRef::getBindId, elevatorId); + return baseMapper.delete(lqw) > 0; + } + + @Override + public List queryByBindId(Long elevatorId) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(SisDeviceBindRef::getBindId, elevatorId); + return baseMapper.selectList(lqw); + } } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisDeviceManageServiceImpl.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisDeviceManageServiceImpl.java index 1f5fff09..6433ba88 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisDeviceManageServiceImpl.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisDeviceManageServiceImpl.java @@ -1,24 +1,25 @@ 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 com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; +import org.dromara.common.core.domain.TreeNode; +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.sis.domain.SisDeviceManage; import org.dromara.sis.domain.bo.SisDeviceManageBo; import org.dromara.sis.domain.vo.SisDeviceManageVo; -import org.dromara.sis.domain.SisDeviceManage; import org.dromara.sis.mapper.SisDeviceManageMapper; import org.dromara.sis.service.ISisDeviceManageService; +import org.springframework.stereotype.Service; +import java.util.Collection; import java.util.List; import java.util.Map; -import java.util.Collection; /** * 设备管理Service业务层处理 @@ -142,4 +143,30 @@ public class SisDeviceManageServiceImpl implements ISisDeviceManageService { lqw.eq(SisDeviceManage::getDeviceIp, deviceCode); return baseMapper.selectVoById(lqw); } + + @Override + public List> tree() { + // 暂时将所有数据放入写死的根节点中 + TreeNode root = new TreeNode<>(); + root.setLevel(1); + root.setCode(0L); + root.setParentCode(-1L); + root.setLabel("商务中心"); + List vo = baseMapper.selectVoList(); + List> childrenList = vo.stream().map(item -> { + TreeNode node = new TreeNode<>(); + node.setLevel(2); + node.setCode(item.getId()); + node.setParentCode(root.getCode()); + node.setLabel(item.getDeviceName()); + return node; + }).toList(); + root.setChildren(childrenList); + return List.of(root); + } + + @Override + public List queryByIds(List deviceIds) { + return baseMapper.selectByIds(deviceIds); + } } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisElevatorInfoServiceImpl.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisElevatorInfoServiceImpl.java index 3317cce2..139b88ee 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisElevatorInfoServiceImpl.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisElevatorInfoServiceImpl.java @@ -1,5 +1,6 @@ package org.dromara.sis.service.impl; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.IdUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -14,17 +15,18 @@ import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.property.api.RemoteUnitService; import org.dromara.property.api.domain.vo.RemoteUnitVo; +import org.dromara.sis.domain.SisDeviceBindRef; import org.dromara.sis.domain.SisElevatorInfo; import org.dromara.sis.domain.bo.SisElevatorInfoBo; +import org.dromara.sis.domain.enums.ControlTypeEnum; import org.dromara.sis.domain.vo.SisElevatorInfoVo; import org.dromara.sis.mapper.SisElevatorInfoMapper; +import org.dromara.sis.service.ISisDeviceBindRefService; import org.dromara.sis.service.ISisElevatorInfoService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.Collection; -import java.util.List; -import java.util.Map; +import java.util.*; import static org.dromara.common.core.constant.CodePrefixConstants.ELEVATOR_CONTROL_CODE_PREFIX; @@ -40,6 +42,7 @@ import static org.dromara.common.core.constant.CodePrefixConstants.ELEVATOR_CONT public class SisElevatorInfoServiceImpl implements ISisElevatorInfoService { private final SisElevatorInfoMapper baseMapper; + private final ISisDeviceBindRefService deviceBindRefService; @DubboReference private RemoteUnitService remoteUnitService; @@ -52,7 +55,25 @@ public class SisElevatorInfoServiceImpl implements ISisElevatorInfoService { */ @Override public SisElevatorInfoVo queryById(Long elevatorId) { - return baseMapper.selectVoById(elevatorId); + SisElevatorInfoVo sisElevatorInfoVo = baseMapper.selectVoById(elevatorId); + if (sisElevatorInfoVo == null) { + return sisElevatorInfoVo; + } + List ref = deviceBindRefService.queryByBindId(elevatorId); + if (CollUtil.isNotEmpty(ref)) { + List remoteCallElevatorDeviceId = new ArrayList<>(ref.size()); + Long elevatorControlDeviceId = null; + for (SisDeviceBindRef item : ref) { + if (Objects.equals(item.getControlType(), ControlTypeEnum.REMOTE_CALL_ELEVATOR.getCode())) { + remoteCallElevatorDeviceId.add(item.getDeviceId()); + } else { + elevatorControlDeviceId = item.getDeviceId(); + } + sisElevatorInfoVo.setRemoteCallElevatorDeviceId(remoteCallElevatorDeviceId); + sisElevatorInfoVo.setElevatorControlDeviceId(elevatorControlDeviceId); + } + } + return sisElevatorInfoVo; } /** @@ -128,14 +149,37 @@ public class SisElevatorInfoServiceImpl implements ISisElevatorInfoService { boolean flag = baseMapper.insert(add) > 0; if (flag) { bo.setElevatorId(add.getElevatorId()); + List ls = new ArrayList<>(); + // 梯控 + if (bo.getElevatorControlDeviceId() != null) { + SisDeviceBindRef ref = new SisDeviceBindRef(); + ref.setDeviceId(bo.getElevatorControlDeviceId().getDeviceId()); + ref.setDeviceIp(bo.getElevatorControlDeviceId().getDeviceIp()); + ref.setBindId(bo.getElevatorId()); + ref.setControlType(ControlTypeEnum.ELEVATOR_CONTROL.getCode()); + ls.add(ref); + } + // 远程呼叫 + if (bo.getRemoteCallElevatorDeviceId() != null && !bo.getRemoteCallElevatorDeviceId().isEmpty()) { + for (SisElevatorInfoBo.DeviceInfo deviceInfo : bo.getRemoteCallElevatorDeviceId()) { + SisDeviceBindRef ref = new SisDeviceBindRef(); + ref.setDeviceId(deviceInfo.getDeviceId()); + ref.setDeviceIp(deviceInfo.getDeviceIp()); + ref.setBindId(bo.getElevatorId()); + ref.setControlType(ControlTypeEnum.REMOTE_CALL_ELEVATOR.getCode()); + ls.add(ref); + } + } + // 写入绑定设备表 + if (!ls.isEmpty()) { + Boolean b = deviceBindRefService.batchInsert(ls); + Assert.isTrue(b, "设备绑定关联关系写入失败!"); + } // hik sdk 登录 // short port = bo.getControlPort().shortValue(); // Boolean isLogin = HikApiService.getInstance().login(bo.getControlIp(), port, bo.getControlAccount(), bo.getControlPwd()); // Assert.isTrue(isLogin, "电梯添加失败, 发起梯控设备连接失败."); // todo 发起电梯楼层信息同步 - - - } return flag; } @@ -147,9 +191,38 @@ public class SisElevatorInfoServiceImpl implements ISisElevatorInfoService { * @return 是否修改成功 */ @Override + @Transactional(rollbackFor = Exception.class) public Boolean updateByBo(SisElevatorInfoBo bo) { SisElevatorInfo update = MapstructUtils.convert(bo, SisElevatorInfo.class); - validEntityBeforeSave(update); + // 删除设备绑定关系 + deviceBindRefService.deleteByBindId(bo.getElevatorId()); + // 重新写入关联关系 + List ls = new ArrayList<>(); + // 梯控 + if (bo.getElevatorControlDeviceId() != null) { + SisDeviceBindRef ref = new SisDeviceBindRef(); + ref.setDeviceId(bo.getElevatorControlDeviceId().getDeviceId()); + ref.setDeviceIp(bo.getElevatorControlDeviceId().getDeviceIp()); + ref.setBindId(bo.getElevatorId()); + ref.setControlType(ControlTypeEnum.ELEVATOR_CONTROL.getCode()); + ls.add(ref); + } + // 远程呼叫 + if (bo.getRemoteCallElevatorDeviceId() != null && !bo.getRemoteCallElevatorDeviceId().isEmpty()) { + for (SisElevatorInfoBo.DeviceInfo deviceInfo : bo.getRemoteCallElevatorDeviceId()) { + SisDeviceBindRef ref = new SisDeviceBindRef(); + ref.setDeviceId(deviceInfo.getDeviceId()); + ref.setDeviceIp(deviceInfo.getDeviceIp()); + ref.setBindId(bo.getElevatorId()); + ref.setControlType(ControlTypeEnum.REMOTE_CALL_ELEVATOR.getCode()); + ls.add(ref); + } + } + // 写入绑定设备表 + if (!ls.isEmpty()) { + Boolean b = deviceBindRefService.batchInsert(ls); + Assert.isTrue(b, "设备绑定关联关系写入失败!"); + } return baseMapper.updateById(update) > 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 index 6f69e22e..acbbf81e 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisLibDeviceRefServiceImpl.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisLibDeviceRefServiceImpl.java @@ -12,7 +12,6 @@ import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.sis.domain.SisLibDeviceRef; import org.dromara.sis.domain.bo.AccessControlLibDeviceBo; import org.dromara.sis.domain.bo.SisLibDeviceRefBo; -import org.dromara.sis.domain.vo.SisAccessControlDeviceVo; import org.dromara.sis.domain.vo.SisLibDeviceRefVo; import org.dromara.sis.mapper.SisLibDeviceRefMapper; import org.dromara.sis.service.ISisLibDeviceRefService; 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 index 466b2321..70ed0ab9 100644 --- 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 @@ -1,22 +1,25 @@ package org.dromara.sis.service.impl; import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.IdUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.dubbo.config.annotation.DubboReference; +import org.dromara.common.core.constant.CodePrefixConstants; 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.resource.api.RemoteFileService; import org.dromara.sis.domain.SisPersonLibImg; -import org.dromara.sis.domain.bo.AccessControlLibDeviceBo; import org.dromara.sis.domain.bo.SisPersonLibImgBo; import org.dromara.sis.domain.vo.*; import org.dromara.sis.mapper.SisPersonLibImgMapper; -import org.dromara.sis.sdk.unview.UnViewAiBoxApi; -import org.dromara.sis.sdk.unview.model.UvModel; +import org.dromara.sis.sdk.huawei.HuaWeiBoxApi; +import org.dromara.sis.sdk.huawei.domain.AddHWPersonReq; import org.dromara.sis.service.*; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -35,9 +38,10 @@ import java.util.*; public class SisPersonLibImgServiceImpl implements ISisPersonLibImgService { private final SisPersonLibImgMapper baseMapper; - private final UnViewAiBoxApi unViewAiBoxApi; - private final ISisLibDeviceRefService libDeviceRefService; - private final ISisLibDeviceImgRefService libDeviceImgRefService; + private final HuaWeiBoxApi huaWeiBoxApi; + + @DubboReference + private final RemoteFileService remoteFileService; /** * 查询人像信息 @@ -104,7 +108,34 @@ public class SisPersonLibImgServiceImpl implements ISisPersonLibImgService { public Boolean insertByBo(SisPersonLibImgBo bo) { SisPersonLibImg add = MapstructUtils.convert(bo, SisPersonLibImg.class); Assert.notNull(add, "数据处理失败"); - return baseMapper.insert(add) > 0; + boolean flag; + try { + log.info("准备写入华为盒子,imgName={}", bo.getImgName()); + AddHWPersonReq req = new AddHWPersonReq(); + req.setIndex(CodePrefixConstants.PERSON_LIB_IMAGE_CODE_PREFIX + IdUtil.getSnowflakeNextIdStr()); + req.setName(bo.getImgName()); + req.setGender(bo.getSex() == 1 ? "0" : bo.getSex() == 2 ? "1" : "-1"); + req.setBornTime(bo.getBirthDate()); + req.setCredentialType("0"); + req.setCredentialNumber(bo.getCertificateNo()); + + byte[] imageByte = remoteFileService.downloadToByteArray(bo.getImgOssId()); + ArrayList pictures = new ArrayList<>(); + pictures.add(Base64.getEncoder().encodeToString(imageByte)); + req.setPictures(pictures); + + Long pId = huaWeiBoxApi.addPerson(List.of(req)); + Assert.notNull(pId, "调用华为盒子新增图片失败"); + log.info("写入华为盒子完成,pId={}", pId); + + add.setRemoteImgId(pId); + flag = baseMapper.insert(add) > 0; + Assert.isTrue(flag, "新增失败"); + } catch (Exception e) { + throw new RuntimeException(e.getMessage()); + } + + return flag; } /** @@ -137,39 +168,16 @@ public class SisPersonLibImgServiceImpl implements ISisPersonLibImgService { @Override @Transactional(rollbackFor = Exception.class) public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { - boolean del = baseMapper.deleteByIds(ids) > 0; - Assert.isTrue(del, "删除失败"); + List list = this.queryListByIds(ids); + Collection remoteIds = list.stream().map(SisPersonLibImgVo::getRemoteImgId).toList(); - List list = libDeviceImgRefService.queryListByImgIds(ids); - Assert.notEmpty(list, "图片关联关系不存在"); - Collection refIds = list.stream().map(SisLibDeviceImgRefVo::getId).toList(); - Collection refLibIds = list.stream().map(SisLibDeviceImgRefVo::getLibId).toList(); - Integer[] refImgIds = list.stream().map(SisLibDeviceImgRefVo::getEqpLibImgId).map(Long::intValue).toArray(Integer[]::new); + if (!remoteIds.isEmpty()) { + Boolean flag = huaWeiBoxApi.deletePerson(remoteIds); + Assert.isTrue(flag, "调用华为盒子删除图片失败"); + } - List ls = libDeviceRefService.queryDeviceListByLibIds(refLibIds); - Assert.notEmpty(ls, "库与设备关联关系不存在"); - - ls.forEach(item -> { - UvModel.UvSystemInfo systemInfo = new UvModel.UvSystemInfo(); - systemInfo.setAccount(item.getEqpAccount()); - systemInfo.setPassword(item.getEqpPwd()); - systemInfo.setIp(item.getEqpIp()); - systemInfo.setPort(item.getEqpPort()); - - Boolean b; - if (item.getEqpLibType() == 1) { - b = unViewAiBoxApi.batchDeletePerson(systemInfo, refImgIds); - log.info("删除宇视图片[{}]完成,result={}", refImgIds, b); - } else { - b = unViewAiBoxApi.deleteWorkClothes(systemInfo, item.getEqpLibId(), Arrays.stream(refImgIds).toList()); - log.info("删除宇视服装[{}]完成,result={}", refImgIds, b); - } - - Assert.isTrue(b, "删除图片失败"); - }); - - Boolean refFlag = libDeviceImgRefService.deleteWithValidByIds(refIds, true); - Assert.isTrue(refFlag, "删除图片关联关系失败"); + boolean flag = baseMapper.deleteByIds(ids) > 0; + Assert.isTrue(flag, "删除失败"); return true; } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisPersonLibServiceImpl.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisPersonLibServiceImpl.java index f6d10532..ed2e26cd 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisPersonLibServiceImpl.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisPersonLibServiceImpl.java @@ -1,36 +1,24 @@ package org.dromara.sis.service.impl; -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.util.IdUtil; import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.dromara.common.core.constant.CodePrefixConstants; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; -import org.dromara.sis.domain.SisLibDeviceRef; import org.dromara.sis.domain.SisPersonLib; -import org.dromara.sis.domain.bo.AccessControlLibDeviceBo; import org.dromara.sis.domain.bo.SisPersonLibBo; -import org.dromara.sis.domain.vo.SisAccessControlDeviceVo; -import org.dromara.sis.domain.vo.SisLibDeviceRefVo; import org.dromara.sis.domain.vo.SisPersonLibVo; import org.dromara.sis.mapper.SisPersonLibMapper; -import org.dromara.sis.sdk.unview.UnViewAiBoxApi; -import org.dromara.sis.sdk.unview.model.UvModel; -import org.dromara.sis.service.ISisAccessControlDeviceService; -import org.dromara.sis.service.ISisLibDeviceRefService; import org.dromara.sis.service.ISisPersonLibService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.Collection; -import java.util.Collections; import java.util.List; import java.util.Map; @@ -46,9 +34,6 @@ import java.util.Map; public class SisPersonLibServiceImpl implements ISisPersonLibService { private final SisPersonLibMapper baseMapper; - private final UnViewAiBoxApi unViewAiBoxApi; - private final ISisLibDeviceRefService sisLibDeviceRefService; - private final ISisAccessControlDeviceService sisAccessControlDeviceService; /** * 查询人像库 @@ -58,13 +43,7 @@ public class SisPersonLibServiceImpl implements ISisPersonLibService { */ @Override public SisPersonLibVo queryById(Long id) { - SisPersonLibVo sisPersonLibVo = baseMapper.selectVoById(id); - List sisLibDeviceRefVos = sisLibDeviceRefService.queryByLibIds(Collections.singleton(id)); - if (CollUtil.isNotEmpty(sisLibDeviceRefVos)) { - List list = sisLibDeviceRefVos.stream().map(SisLibDeviceRefVo::getEqpId).toList(); - sisPersonLibVo.setEqpIds(list); - } - return sisPersonLibVo; + return baseMapper.selectVoById(id); } /** @@ -99,8 +78,6 @@ public class SisPersonLibServiceImpl implements ISisPersonLibService { lqw.orderByAsc(SisPersonLib::getId); 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(StringUtils.isNotBlank(bo.getSearchValue()), SisPersonLib::getSearchValue, bo.getSearchValue()); return lqw; } @@ -117,41 +94,7 @@ public class SisPersonLibServiceImpl implements ISisPersonLibService { SisPersonLib add = MapstructUtils.convert(bo, SisPersonLib.class); Assert.notNull(add, "数据处理失败"); boolean flag = baseMapper.insert(add) > 0; - log.info("库[{}]开始写入系统,result={}", add.getLibName(), flag); - if (flag) { - bo.setId(add.getId()); - for (Long eqpId : bo.getEqpIds()) { - // 查询设备信息 - SisAccessControlDeviceVo vo = sisAccessControlDeviceService.queryById(eqpId); - Assert.notNull(vo, "门禁控制设备不存在,id=" + eqpId); - log.info("准备写入门禁设备,code={}", vo.getEqpNo()); - UvModel.UvSystemInfo systemInfo = new UvModel.UvSystemInfo(); - systemInfo.setAccount(vo.getEqpAccount()); - systemInfo.setPassword(vo.getEqpPwd()); - systemInfo.setIp(vo.getEqpIp()); - systemInfo.setPort(vo.getEqpPort()); - // libType =1 人像库,否则工服库 - Integer outLibCode = null; - if (bo.getLibType() == 1) { - UvModel.AddLibResult addLibResult = unViewAiBoxApi.addPersonLib(systemInfo, bo.getLibName()); - outLibCode = addLibResult.getLib_id(); - } else { - UvModel.AddLibResult addLibResult = unViewAiBoxApi.addWorkClothesLib(systemInfo, bo.getLibName()); - outLibCode = addLibResult.getLib_id(); - } - log.info("宇视建库完成,libId = {}", outLibCode); - Assert.notNull(outLibCode, "写入宇视盒子失败"); - SisLibDeviceRef ref = new SisLibDeviceRef(); - ref.setLibId(add.getId()); - ref.setEqpId(vo.getId()); - ref.setEqpLibId(Long.valueOf(outLibCode)); - ref.setEqpLibState(1); - ref.setEqpLibType(bo.getLibType()); - Boolean insert = sisLibDeviceRefService.insert(ref); - Assert.isTrue(insert, "写入库关联关系表失败!"); - log.info("同步建库完成!"); - } - } + Assert.isTrue(flag, "新增失败"); return flag; } @@ -185,27 +128,6 @@ public class SisPersonLibServiceImpl implements ISisPersonLibService { @Transactional(rollbackFor = Exception.class) @Override public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { - // 查询关联的设备信息,先删除设备上的库 - List ls = sisLibDeviceRefService.queryDeviceListByLibIds(ids); - // 删除关联关系 - ls.forEach(item -> { - UvModel.UvSystemInfo systemInfo = new UvModel.UvSystemInfo(); - systemInfo.setAccount(item.getEqpAccount()); - systemInfo.setPassword(item.getEqpPwd()); - systemInfo.setIp(item.getEqpIp()); - systemInfo.setPort(item.getEqpPort()); - // 实际上这里需要根据厂商不同去不同的设备删除 - if (item.getEqpLibType() == 1) { - Boolean b = unViewAiBoxApi.deletePersonLib(systemInfo, item.getEqpLibId()); - log.info("删除宇试人像库[{}]完成,result={}", item.getEqpLibId(), b); - } else { - Boolean b = unViewAiBoxApi.deleteWorkClothesLib(systemInfo, item.getEqpLibId()); - log.info("删除宇试工服库[{}]完成,result={}", item.getEqpLibId(), b); - } - }); - // 查询当前库是否绑定 - sisLibDeviceRefService.deleteByLibIds(ids); - log.info("删除personLibRef关联关系完成!"); - return baseMapper.deleteByIds(ids) > 0; + return true; } } diff --git a/ruoyi-modules/Sis/src/main/resources/mapper/sis/SisAccessControlMapper.xml b/ruoyi-modules/Sis/src/main/resources/mapper/sis/SisAccessControlMapper.xml index 006583e8..bc5f1a8a 100644 --- a/ruoyi-modules/Sis/src/main/resources/mapper/sis/SisAccessControlMapper.xml +++ b/ruoyi-modules/Sis/src/main/resources/mapper/sis/SisAccessControlMapper.xml @@ -4,4 +4,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +