From 71814b3b5bf4a9445a4305a48833b0e210eddb9d Mon Sep 17 00:00:00 2001 From: yuyongle <1150359267@qq.com> Date: Mon, 14 Jul 2025 17:34:15 +0800 Subject: [PATCH 1/7] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=B7=A5=E5=8D=95?= =?UTF-8?q?=E7=B1=BB=E5=9E=8Bbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/InspectionPlanController.java | 9 +- .../InspectionPlanStaffController.java | 106 ++++++++++++++ .../controller/InspectionStaffController.java | 106 ++++++++++++++ .../property/domain/InspectionPlan.java | 14 +- .../property/domain/InspectionPlanStaff.java | 58 ++++++++ .../property/domain/InspectionStaff.java | 58 ++++++++ .../property/domain/InspectionTask.java | 4 + .../property/domain/bo/InspectionPlanBo.java | 33 +++-- .../domain/bo/InspectionPlanStaffBo.java | 56 ++++++++ .../property/domain/bo/InspectionStaffBo.java | 57 ++++++++ .../property/domain/bo/InspectionTaskBo.java | 4 + .../enums/InspectionPlanPeriodEnum.java | 38 +++++ .../domain/vo/InspectionPlanDetailVo.java | 11 +- .../domain/vo/InspectionPlanStaffVo.java | 71 +++++++++ .../property/domain/vo/InspectionPlanVo.java | 18 ++- .../property/domain/vo/InspectionStaffVo.java | 66 +++++++++ .../property/domain/vo/InspectionTaskVo.java | 5 +- .../mapper/InspectionPlanStaffMapper.java | 16 +++ .../mapper/InspectionStaffMapper.java | 17 +++ .../property/mapper/InspectionTaskMapper.java | 2 + .../service/IInspectionPlanService.java | 10 +- .../service/IInspectionPlanStaffService.java | 68 +++++++++ .../service/IInspectionStaffService.java | 68 +++++++++ .../impl/InspectionPlanServiceImpl.java | 70 +++++++-- .../impl/InspectionPlanStaffServiceImpl.java | 136 ++++++++++++++++++ .../impl/InspectionStaffServiceImpl.java | 136 ++++++++++++++++++ .../ServiceWorkOrdersTypeServiceImpl.java | 2 +- .../property/tasks/InspectionTasks.java | 118 +++++++++++++-- 28 files changed, 1287 insertions(+), 70 deletions(-) create mode 100644 ruoyi-modules/Property/src/main/java/org/dromara/property/controller/InspectionPlanStaffController.java create mode 100644 ruoyi-modules/Property/src/main/java/org/dromara/property/controller/InspectionStaffController.java create mode 100644 ruoyi-modules/Property/src/main/java/org/dromara/property/domain/InspectionPlanStaff.java create mode 100644 ruoyi-modules/Property/src/main/java/org/dromara/property/domain/InspectionStaff.java create mode 100644 ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/InspectionPlanStaffBo.java create mode 100644 ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/InspectionStaffBo.java create mode 100644 ruoyi-modules/Property/src/main/java/org/dromara/property/domain/enums/InspectionPlanPeriodEnum.java create mode 100644 ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/InspectionPlanStaffVo.java create mode 100644 ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/InspectionStaffVo.java create mode 100644 ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/InspectionPlanStaffMapper.java create mode 100644 ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/InspectionStaffMapper.java create mode 100644 ruoyi-modules/Property/src/main/java/org/dromara/property/service/IInspectionPlanStaffService.java create mode 100644 ruoyi-modules/Property/src/main/java/org/dromara/property/service/IInspectionStaffService.java create mode 100644 ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/InspectionPlanStaffServiceImpl.java create mode 100644 ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/InspectionStaffServiceImpl.java 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 index deedca38..5c1ffd38 100644 --- 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 @@ -6,6 +6,7 @@ import lombok.RequiredArgsConstructor; import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.constraints.*; import cn.dev33.satoken.annotation.SaCheckPermission; +import org.dromara.property.domain.vo.InspectionPlanDetailVo; import org.springframework.web.bind.annotation.*; import org.springframework.validation.annotation.Validated; import org.dromara.common.idempotent.annotation.RepeatSubmit; @@ -40,7 +41,7 @@ public class InspectionPlanController extends BaseController { /** * 查询巡检计划列表 */ - @SaCheckPermission("property:inspectionPlan:list") + //@SaCheckPermission("property:inspectionPlan:list") @GetMapping("/list") public TableDataInfo list(InspectionPlanBo bo, PageQuery pageQuery) { return inspectionPlanService.queryPageList(bo, pageQuery); @@ -49,7 +50,7 @@ public class InspectionPlanController extends BaseController { /** * 导出巡检计划列表 */ - @SaCheckPermission("property:inspectionPlan:export") + //@SaCheckPermission("property:inspectionPlan:export") @Log(title = "巡检计划", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(InspectionPlanBo bo, HttpServletResponse response) { @@ -62,9 +63,9 @@ public class InspectionPlanController extends BaseController { * * @param id 主键 */ - @SaCheckPermission("property:inspectionPlan:query") + // @SaCheckPermission("property:inspectionPlan:query") @GetMapping("/{id}") - public R getInfo(@NotNull(message = "主键不能为空") + public R getInfo(@NotNull(message = "主键不能为空") @PathVariable("id") Long id) { return R.ok(inspectionPlanService.queryById(id)); } diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/InspectionPlanStaffController.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/InspectionPlanStaffController.java new file mode 100644 index 00000000..fba3435b --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/InspectionPlanStaffController.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.InspectionPlanStaffBo; +import org.dromara.property.domain.vo.InspectionPlanStaffVo; +import org.dromara.property.service.IInspectionPlanStaffService; +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; + +/** + * 执行计划人信息 + * 前端访问路由地址为:/system/planStaff + * + * @author mocheng + * @date 2025-07-14 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/planStaff") +public class InspectionPlanStaffController extends BaseController { + + private final IInspectionPlanStaffService inspectionPlanStaffService; + + /** + * 查询执行计划人信息列表 + */ + @SaCheckPermission("system:planStaff:list") + @GetMapping("/list") + public TableDataInfo list(InspectionPlanStaffBo bo, PageQuery pageQuery) { + return inspectionPlanStaffService.queryPageList(bo, pageQuery); + } + + /** + * 导出执行计划人信息列表 + */ + @SaCheckPermission("system:planStaff:export") + @Log(title = "执行计划人信息", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(InspectionPlanStaffBo bo, HttpServletResponse response) { + List list = inspectionPlanStaffService.queryList(bo); + ExcelUtil.exportExcel(list, "执行计划人信息", InspectionPlanStaffVo.class, response); + } + + /** + * 获取执行计划人信息详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("system:planStaff:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable("id") Long id) { + return R.ok(inspectionPlanStaffService.queryById(id)); + } + + /** + * 新增执行计划人信息 + */ + @SaCheckPermission("system:planStaff:add") + @Log(title = "执行计划人信息", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody InspectionPlanStaffBo bo) { + return toAjax(inspectionPlanStaffService.insertByBo(bo)); + } + + /** + * 修改执行计划人信息 + */ + @SaCheckPermission("system:planStaff:edit") + @Log(title = "执行计划人信息", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody InspectionPlanStaffBo bo) { + return toAjax(inspectionPlanStaffService.updateByBo(bo)); + } + + /** + * 删除执行计划人信息 + * + * @param ids 主键串 + */ + @SaCheckPermission("system:planStaff:remove") + @Log(title = "执行计划人信息", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable("ids") Long[] ids) { + return toAjax(inspectionPlanStaffService.deleteWithValidByIds(List.of(ids), true)); + } +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/InspectionStaffController.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/InspectionStaffController.java new file mode 100644 index 00000000..58cb31c0 --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/InspectionStaffController.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.InspectionStaffBo; +import org.dromara.property.domain.vo.InspectionStaffVo; +import org.dromara.property.service.IInspectionStaffService; +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; + +/** + * 执行计划人信息 + * 前端访问路由地址为:/system/staff + * + * @author mocheng + * @date 2025-07-14 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/staff") +public class InspectionStaffController extends BaseController { + + private final IInspectionStaffService inspectionStaffService; + + /** + * 查询执行计划人信息列表 + */ + @SaCheckPermission("system:staff:list") + @GetMapping("/list") + public TableDataInfo list(InspectionStaffBo bo, PageQuery pageQuery) { + return inspectionStaffService.queryPageList(bo, pageQuery); + } + + /** + * 导出执行计划人信息列表 + */ + @SaCheckPermission("system:staff:export") + @Log(title = "执行计划人信息", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(InspectionStaffBo bo, HttpServletResponse response) { + List list = inspectionStaffService.queryList(bo); + ExcelUtil.exportExcel(list, "执行计划人信息", InspectionStaffVo.class, response); + } + + /** + * 获取执行计划人信息详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("system:staff:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable("id") Long id) { + return R.ok(inspectionStaffService.queryById(id)); + } + + /** + * 新增执行计划人信息 + */ + @SaCheckPermission("system:staff:add") + @Log(title = "执行计划人信息", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody InspectionStaffBo bo) { + return toAjax(inspectionStaffService.insertByBo(bo)); + } + + /** + * 修改执行计划人信息 + */ + @SaCheckPermission("system:staff:edit") + @Log(title = "执行计划人信息", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody InspectionStaffBo bo) { + return toAjax(inspectionStaffService.updateByBo(bo)); + } + + /** + * 删除执行计划人信息 + * + * @param ids 主键串 + */ + @SaCheckPermission("system:staff:remove") + @Log(title = "执行计划人信息", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable("ids") Long[] ids) { + return toAjax(inspectionStaffService.deleteWithValidByIds(List.of(ids), true)); + } +} 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 index 374aac77..dff314c3 100644 --- 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 @@ -70,6 +70,15 @@ public class InspectionPlan extends TenantEntity { * 结束日期 */ private Date endDate; + /** + * 开始时间 + */ + private String startTime; + + /** + * 结束时间 + */ + private String endTime; /** * 签到方式(0现场拍照(默认定位),1现场定位) @@ -81,11 +90,6 @@ public class InspectionPlan extends TenantEntity { */ private String canReexamine; - /** - * 选择员工 - */ - private String userId; - /** * 备注 */ diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/InspectionPlanStaff.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/InspectionPlanStaff.java new file mode 100644 index 00000000..0ae1cf2a --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/InspectionPlanStaff.java @@ -0,0 +1,58 @@ +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_plan_staff + * + * @author mocheng + * @date 2025-07-14 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("inspection_plan_staff") +public class InspectionPlanStaff extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id") + private Long id; + + /** + * 执行计划人id + */ + private Long userId; + + /** + * 计划id + */ + private Long inspectionPlanId; + + /** + * 开始时间 + */ + private Date startTime; + + /** + * 结束时间 + */ + private Date endTime; + + /** + * 搜索值 + */ + private String searchValue; + + +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/InspectionStaff.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/InspectionStaff.java new file mode 100644 index 00000000..b879ff63 --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/InspectionStaff.java @@ -0,0 +1,58 @@ +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_staff + * + * @author mocheng + * @date 2025-07-14 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("inspection_staff") +public class InspectionStaff extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id") + private Long id; + + /** + * 实际巡检人id + */ + private Long userId; + + /** + * 计划id + */ + private Long inspectionPlanId; + + /** + * 实际巡检开始时间 + */ + private Date startTime; + + /** + * 实际巡检结束时间 + */ + private Date endTime; + + /** + * 搜索值 + */ + private String searchValue; + + +} 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 index c6d8198a..34e94089 100644 --- 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 @@ -63,6 +63,10 @@ public class InspectionTask extends TenantEntity { * 备注 */ private String remark; + /** + * 计划巡检时间范围 + */ + private String planInsTime; /** * 搜索值 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 index 12abb3e4..fecd5663 100644 --- 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 @@ -1,15 +1,17 @@ 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 jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; import lombok.Data; import lombok.EqualsAndHashCode; -import jakarta.validation.constraints.*; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.property.domain.InspectionPlan; + import java.util.Date; -import com.fasterxml.jackson.annotation.JsonFormat; +import java.util.List; /** * 巡检计划业务对象 inspection_plan @@ -63,6 +65,17 @@ public class InspectionPlanBo extends BaseEntity { */ @NotNull(message = "结束日期不能为空", groups = { AddGroup.class, EditGroup.class }) private Date endDate; + /** + * 开始时间 + */ + @NotNull(message = "开始时间不能为空", groups = { AddGroup.class, EditGroup.class }) + private String startTime; + + /** + * 结束时间 + */ + @NotNull(message = "开始时间不能为空", groups = { AddGroup.class, EditGroup.class }) + private String endTime; /** * 签到方式(0现场拍照(默认定位),1现场定位) @@ -89,12 +102,6 @@ public class InspectionPlanBo extends BaseEntity { */ private String inspectionWorkday; - /** - * 选择员工 - */ - @NotNull(message = "选择员工不能为空", groups = { AddGroup.class, EditGroup.class }) - private String userId; - /** * 备注 */ @@ -105,5 +112,5 @@ public class InspectionPlanBo extends BaseEntity { */ private String state; - + private List inspectionPlanStaffBoList; } diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/InspectionPlanStaffBo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/InspectionPlanStaffBo.java new file mode 100644 index 00000000..4a358dca --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/InspectionPlanStaffBo.java @@ -0,0 +1,56 @@ +package org.dromara.property.domain.bo; + +import io.github.linpeilie.annotations.AutoMapper; +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.property.domain.InspectionPlanStaff; + +import java.util.Date; + +/** + * 执行计划人信息业务对象 inspection_plan_staff + * + * @author mocheng + * @date 2025-07-14 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = InspectionPlanStaff.class, reverseConvertGenerate = false) +public class InspectionPlanStaffBo extends BaseEntity { + + /** + * 主键 + */ + @NotNull(message = "主键不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 执行计划人id + */ + @NotNull(message = "执行计划人id不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long userId; + + /** + * 计划id + */ + @NotNull(message = "计划id不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long inspectionPlanId; + + /** + * 开始时间 + */ + @NotNull(message = "开始时间不能为空", groups = { AddGroup.class, EditGroup.class }) + private Date startTime; + + /** + * 结束时间 + */ + @NotNull(message = "结束时间不能为空", groups = { AddGroup.class, EditGroup.class }) + private Date endTime; + + +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/InspectionStaffBo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/InspectionStaffBo.java new file mode 100644 index 00000000..58ec57f1 --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/InspectionStaffBo.java @@ -0,0 +1,57 @@ +package org.dromara.property.domain.bo; + +import io.github.linpeilie.annotations.AutoMapper; +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.property.domain.InspectionStaff; + +import java.util.Date; + +/** + * 执行计划人信息业务对象 inspection_staff + * + * @author mocheng + * @date 2025-07-14 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = InspectionStaff.class, reverseConvertGenerate = false) +public class InspectionStaffBo extends BaseEntity { + + /** + * 主键 + */ + @NotNull(message = "主键不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 实际巡检人id + */ + @NotNull(message = "实际巡检人id不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long userId; + + /** + * 计划id + */ + @NotNull(message = "计划id不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long inspectionPlanId; + + /** + * 实际巡检开始时间 + */ + @NotNull(message = "实际巡检开始时间不能为空", groups = { AddGroup.class, EditGroup.class }) + private Date startTime; + + /** + * 实际巡检结束时间 + */ + @NotNull(message = "实际巡检结束时间不能为空", groups = { AddGroup.class, EditGroup.class }) + private Date endTime; + + + +} 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 index fa319b09..08f7c2c4 100644 --- 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 @@ -62,4 +62,8 @@ public class InspectionTaskBo extends BaseEntity { * 备注 */ private String remark; + /** + * 计划巡检时间范围 + */ + private String planInsTime; } diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/enums/InspectionPlanPeriodEnum.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/enums/InspectionPlanPeriodEnum.java new file mode 100644 index 00000000..cebf8312 --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/enums/InspectionPlanPeriodEnum.java @@ -0,0 +1,38 @@ +package org.dromara.property.domain.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @Author:yuyongle + * @Date:2025/7/4 10:35 + * @Description:巡检周期枚举 + **/ +@Getter +public enum InspectionPlanPeriodEnum { + /** + * 月/天 + */ + MONTHANDDAY("月/天", "1"), + /** + * 月/天 + */ + WEEK("周", "2"); + + + private final String name; + private final String value; + + InspectionPlanPeriodEnum(String name, String value) { + this.name = name; + this.value = value; + } + + public String getName() { + return this.name; + } + + public String getValue() { + return this.value; + } +} 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 index f12edb0a..6b5910b7 100644 --- 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 @@ -11,6 +11,7 @@ import org.dromara.property.domain.InspectionPlan; import java.io.Serial; import java.io.Serializable; import java.util.Date; +import java.util.List; /** * @Author:yuyongle @@ -79,12 +80,6 @@ public class InspectionPlanDetailVo implements Serializable { @ExcelProperty(value = "允许补检(0允许1不允许)") private String canReexamine; - /** - * 选择员工 - */ - @ExcelProperty(value = "选择员工") - private String userId; - /** * 备注 */ @@ -102,6 +97,10 @@ public class InspectionPlanDetailVo implements Serializable { * 巡检周 */ private String inspectionWorkday; + /** + * 巡检人员 + */ + private List inspectionPlanStaffVoList; /** * 状态(0启用1停用) */ diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/InspectionPlanStaffVo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/InspectionPlanStaffVo.java new file mode 100644 index 00000000..92dddbb9 --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/InspectionPlanStaffVo.java @@ -0,0 +1,71 @@ +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.InspectionPlanStaff; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + + +/** + * 执行计划人信息视图对象 inspection_plan_staff + * + * @author mocheng + * @date 2025-07-14 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = InspectionPlanStaff.class) +public class InspectionPlanStaffVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ExcelProperty(value = "主键") + private Long id; + + /** + * 执行计划人id + */ + @ExcelProperty(value = "执行计划人id") + private Long userId; + /** + * 执行计划人姓名 + */ + @ExcelProperty(value = "执行计划人姓名") + private String userName; + + /** + * 计划id + */ + @ExcelProperty(value = "计划id") + private Long inspectionPlanId; + + /** + * 开始时间 + */ + @ExcelProperty(value = "开始时间") + private Date startTime; + + /** + * 结束时间 + */ + @ExcelProperty(value = "结束时间") + private Date endTime; + + /** + * 搜索值 + */ + @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 index af0c7614..d84cd112 100644 --- 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 @@ -2,6 +2,9 @@ package org.dromara.property.domain.vo; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; +import jakarta.validation.constraints.NotNull; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; import org.dromara.property.domain.InspectionPlan; import cn.idev.excel.annotation.ExcelIgnoreUnannotated; import cn.idev.excel.annotation.ExcelProperty; @@ -71,6 +74,15 @@ public class InspectionPlanVo implements Serializable { */ @ExcelProperty(value = "结束日期") private Date endDate; + /** + * 开始时间 + */ + private String startTime; + + /** + * 结束时间 + */ + private String endTime; /** * 签到方式(0现场拍照(默认定位),1现场定位) @@ -85,12 +97,6 @@ public class InspectionPlanVo implements Serializable { @ExcelProperty(value = "允许补检(0允许1不允许)") private String canReexamine; - /** - * 选择员工 - */ - @ExcelProperty(value = "选择员工") - private String userId; - /** * 备注 */ diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/InspectionStaffVo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/InspectionStaffVo.java new file mode 100644 index 00000000..c93e65f6 --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/InspectionStaffVo.java @@ -0,0 +1,66 @@ +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.InspectionStaff; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + + +/** + * 执行计划人信息视图对象 inspection_staff + * + * @author mocheng + * @date 2025-07-14 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = InspectionStaff.class) +public class InspectionStaffVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ExcelProperty(value = "主键") + private Long id; + + /** + * 实际巡检人id + */ + @ExcelProperty(value = "实际巡检人id") + private Long userId; + + /** + * 计划id + */ + @ExcelProperty(value = "计划id") + private Long inspectionPlanId; + + /** + * 实际巡检开始时间 + */ + @ExcelProperty(value = "实际巡检开始时间") + private Date startTime; + + /** + * 实际巡检结束时间 + */ + @ExcelProperty(value = "实际巡检结束时间") + private Date endTime; + + /** + * 搜索值 + */ + @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 index 22ef184d..33f426f2 100644 --- 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 @@ -77,7 +77,10 @@ public class InspectionTaskVo implements Serializable { */ @ExcelProperty(value = "备注") private String remark; - + /** + * 计划巡检时间范围 + */ + private String planInsTime; /** * 搜索值 */ diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/InspectionPlanStaffMapper.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/InspectionPlanStaffMapper.java new file mode 100644 index 00000000..39834a16 --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/InspectionPlanStaffMapper.java @@ -0,0 +1,16 @@ +package org.dromara.property.mapper; +import org.apache.ibatis.annotations.Mapper; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.property.domain.InspectionPlanStaff; +import org.dromara.property.domain.vo.InspectionPlanStaffVo; + +/** + * 执行计划人信息Mapper接口 + * + * @author mocheng + * @date 2025-07-14 + */ +@Mapper +public interface InspectionPlanStaffMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/InspectionStaffMapper.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/InspectionStaffMapper.java new file mode 100644 index 00000000..145d95d2 --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/InspectionStaffMapper.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.InspectionStaff; +import org.dromara.property.domain.vo.InspectionStaffVo; + +/** + * 执行计划人信息Mapper接口 + * + * @author mocheng + * @date 2025-07-14 + */ +@Mapper +public interface InspectionStaffMapper 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 index 9191c6ab..70c3421b 100644 --- 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 @@ -1,5 +1,6 @@ package org.dromara.property.mapper; +import org.apache.ibatis.annotations.Mapper; import org.dromara.property.domain.InspectionTask; import org.dromara.property.domain.vo.InspectionTaskVo; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; @@ -10,6 +11,7 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; * @author mocheng * @date 2025-07-11 */ +@Mapper public interface InspectionTaskMapper extends BaseMapperPlus { } 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 index e563aaa0..4fb556ac 100644 --- 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 @@ -1,10 +1,10 @@ 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 org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.property.domain.bo.InspectionPlanBo; +import org.dromara.property.domain.vo.InspectionPlanDetailVo; +import org.dromara.property.domain.vo.InspectionPlanVo; import java.util.Collection; import java.util.List; @@ -23,7 +23,7 @@ public interface IInspectionPlanService { * @param id 主键 * @return 巡检计划 */ - InspectionPlanVo queryById(Long id); + InspectionPlanDetailVo queryById(Long id); /** * 分页查询巡检计划列表 diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/IInspectionPlanStaffService.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/IInspectionPlanStaffService.java new file mode 100644 index 00000000..4c7e37a3 --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/IInspectionPlanStaffService.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.InspectionPlanStaffBo; +import org.dromara.property.domain.vo.InspectionPlanStaffVo; + +import java.util.Collection; +import java.util.List; + +/** + * 执行计划人信息Service接口 + * + * @author mocheng + * @date 2025-07-14 + */ +public interface IInspectionPlanStaffService { + + /** + * 查询执行计划人信息 + * + * @param id 主键 + * @return 执行计划人信息 + */ + InspectionPlanStaffVo queryById(Long id); + + /** + * 分页查询执行计划人信息列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 执行计划人信息分页列表 + */ + TableDataInfo queryPageList(InspectionPlanStaffBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的执行计划人信息列表 + * + * @param bo 查询条件 + * @return 执行计划人信息列表 + */ + List queryList(InspectionPlanStaffBo bo); + + /** + * 新增执行计划人信息 + * + * @param bo 执行计划人信息 + * @return 是否新增成功 + */ + Boolean insertByBo(InspectionPlanStaffBo bo); + + /** + * 修改执行计划人信息 + * + * @param bo 执行计划人信息 + * @return 是否修改成功 + */ + Boolean updateByBo(InspectionPlanStaffBo 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/IInspectionStaffService.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/IInspectionStaffService.java new file mode 100644 index 00000000..23d1b1ec --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/IInspectionStaffService.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.InspectionStaffBo; +import org.dromara.property.domain.vo.InspectionStaffVo; + +import java.util.Collection; +import java.util.List; + +/** + * 执行计划人信息Service接口 + * + * @author mocheng + * @date 2025-07-14 + */ +public interface IInspectionStaffService { + + /** + * 查询执行计划人信息 + * + * @param id 主键 + * @return 执行计划人信息 + */ + InspectionStaffVo queryById(Long id); + + /** + * 分页查询执行计划人信息列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 执行计划人信息分页列表 + */ + TableDataInfo queryPageList(InspectionStaffBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的执行计划人信息列表 + * + * @param bo 查询条件 + * @return 执行计划人信息列表 + */ + List queryList(InspectionStaffBo bo); + + /** + * 新增执行计划人信息 + * + * @param bo 执行计划人信息 + * @return 是否新增成功 + */ + Boolean insertByBo(InspectionStaffBo bo); + + /** + * 修改执行计划人信息 + * + * @param bo 执行计划人信息 + * @return 是否修改成功 + */ + Boolean updateByBo(InspectionStaffBo 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/InspectionPlanServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/InspectionPlanServiceImpl.java index 0d7b7256..02c8aa4a 100644 --- 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 @@ -1,24 +1,36 @@ 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 cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; 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.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.common.core.exception.ServiceException; +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.property.domain.InspectionPlan; +import org.dromara.property.domain.InspectionPlanStaff; +import org.dromara.property.domain.bo.InspectionPlanBo; +import org.dromara.property.domain.bo.InspectionPlanStaffBo; +import org.dromara.property.domain.vo.InspectionPlanDetailVo; +import org.dromara.property.domain.vo.InspectionPlanStaffVo; +import org.dromara.property.domain.vo.InspectionPlanVo; +import org.dromara.property.domain.vo.ResidentPersonVo; +import org.dromara.property.mapper.InspectionPlanMapper; +import org.dromara.property.mapper.InspectionPlanStaffMapper; +import org.dromara.property.mapper.ResidentPersonMapper; import org.dromara.property.service.IInspectionPlanService; +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.Collection; +import java.util.stream.Collectors; /** * 巡检计划Service业务层处理 @@ -32,6 +44,8 @@ import java.util.Collection; public class InspectionPlanServiceImpl implements IInspectionPlanService { private final InspectionPlanMapper baseMapper; + private final ResidentPersonMapper residentPersonMapper; + private final InspectionPlanStaffMapper inspectionPlanStaffMapper; /** * 查询巡检计划 @@ -40,8 +54,30 @@ public class InspectionPlanServiceImpl implements IInspectionPlanService { * @return 巡检计划 */ @Override - public InspectionPlanVo queryById(Long id){ - return baseMapper.selectVoById(id); + public InspectionPlanDetailVo queryById(Long id){ + InspectionPlanVo inspectionPlanVo = baseMapper.selectVoById(id); + InspectionPlanDetailVo inspectionPlanDetailVo = BeanUtil.copyProperties(inspectionPlanVo, InspectionPlanDetailVo.class); + LambdaQueryWrapper staffQueryWrapper= new LambdaQueryWrapper<>(); + staffQueryWrapper.eq(InspectionPlanStaff::getInspectionPlanId, id); + List inspectionPlanStaffVos =inspectionPlanStaffMapper.selectVoList(staffQueryWrapper); + List userIdlist = inspectionPlanStaffVos.stream() + .map(vo -> vo.getUserId()) + .distinct() + .collect(Collectors.toList()); + if(CollectionUtil.isNotEmpty(userIdlist)){ + new ServiceException("执行计划人不存在"); + } + List residentPersonVolist = residentPersonMapper.selectVoByIds(userIdlist); + if(CollectionUtil.isNotEmpty(residentPersonVolist)){ + inspectionPlanStaffVos.stream().forEach(s->{ + ResidentPersonVo residentPersonVo = residentPersonVolist.stream() + .filter(vo -> vo.getId() != null && vo.getId().equals(s.getUserId())).findFirst().orElse(null); + s.setUserName(residentPersonVo.getUserName()); + }); + inspectionPlanDetailVo.setInspectionPlanStaffVoList(inspectionPlanStaffVos); + } + + return inspectionPlanDetailVo; } /** @@ -81,8 +117,6 @@ public class InspectionPlanServiceImpl implements IInspectionPlanService { 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; @@ -95,12 +129,20 @@ public class InspectionPlanServiceImpl implements IInspectionPlanService { * @return 是否新增成功 */ @Override + @Transactional(rollbackFor = Exception.class) 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()); + List inspectionPlanStaffBoList = bo.getInspectionPlanStaffBoList(); + if(CollectionUtil.isNotEmpty(inspectionPlanStaffBoList)){ + for (InspectionPlanStaffBo staffBo : inspectionPlanStaffBoList) { + staffBo.setInspectionPlanId(add.getId()); + } + inspectionPlanStaffMapper.insertBatch(BeanUtil.copyToList(inspectionPlanStaffBoList, InspectionPlanStaff.class )); + } } return flag; } diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/InspectionPlanStaffServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/InspectionPlanStaffServiceImpl.java new file mode 100644 index 00000000..9a3e4a68 --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/InspectionPlanStaffServiceImpl.java @@ -0,0 +1,136 @@ +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.InspectionPlanStaff; +import org.dromara.property.domain.bo.InspectionPlanStaffBo; +import org.dromara.property.domain.vo.InspectionPlanStaffVo; +import org.dromara.property.mapper.InspectionPlanStaffMapper; +import org.dromara.property.service.IInspectionPlanStaffService; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 执行计划人信息Service业务层处理 + * + * @author mocheng + * @date 2025-07-14 + */ +@Slf4j +@RequiredArgsConstructor +@Service +public class InspectionPlanStaffServiceImpl implements IInspectionPlanStaffService { + + private final InspectionPlanStaffMapper baseMapper; + + /** + * 查询执行计划人信息 + * + * @param id 主键 + * @return 执行计划人信息 + */ + @Override + public InspectionPlanStaffVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 分页查询执行计划人信息列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 执行计划人信息分页列表 + */ + @Override + public TableDataInfo queryPageList(InspectionPlanStaffBo 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(InspectionPlanStaffBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(InspectionPlanStaffBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByAsc(InspectionPlanStaff::getId); + lqw.eq(bo.getUserId() != null, InspectionPlanStaff::getUserId, bo.getUserId()); + lqw.eq(bo.getInspectionPlanId() != null, InspectionPlanStaff::getInspectionPlanId, bo.getInspectionPlanId()); + lqw.eq(bo.getStartTime() != null, InspectionPlanStaff::getStartTime, bo.getStartTime()); + lqw.eq(bo.getEndTime() != null, InspectionPlanStaff::getEndTime, bo.getEndTime()); + lqw.eq(StringUtils.isNotBlank(bo.getSearchValue()), InspectionPlanStaff::getSearchValue, bo.getSearchValue()); + return lqw; + } + + /** + * 新增执行计划人信息 + * + * @param bo 执行计划人信息 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(InspectionPlanStaffBo bo) { + InspectionPlanStaff add = MapstructUtils.convert(bo, InspectionPlanStaff.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改执行计划人信息 + * + * @param bo 执行计划人信息 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(InspectionPlanStaffBo bo) { + InspectionPlanStaff update = MapstructUtils.convert(bo, InspectionPlanStaff.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(InspectionPlanStaff 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/InspectionStaffServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/InspectionStaffServiceImpl.java new file mode 100644 index 00000000..1631223e --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/InspectionStaffServiceImpl.java @@ -0,0 +1,136 @@ +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.InspectionStaff; +import org.dromara.property.domain.bo.InspectionStaffBo; +import org.dromara.property.domain.vo.InspectionStaffVo; +import org.dromara.property.mapper.InspectionStaffMapper; +import org.dromara.property.service.IInspectionStaffService; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 执行计划人信息Service业务层处理 + * + * @author mocheng + * @date 2025-07-14 + */ +@Slf4j +@RequiredArgsConstructor +@Service +public class InspectionStaffServiceImpl implements IInspectionStaffService { + + private final InspectionStaffMapper baseMapper; + + /** + * 查询执行计划人信息 + * + * @param id 主键 + * @return 执行计划人信息 + */ + @Override + public InspectionStaffVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 分页查询执行计划人信息列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 执行计划人信息分页列表 + */ + @Override + public TableDataInfo queryPageList(InspectionStaffBo 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(InspectionStaffBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(InspectionStaffBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByAsc(InspectionStaff::getId); + lqw.eq(bo.getUserId() != null, InspectionStaff::getUserId, bo.getUserId()); + lqw.eq(bo.getInspectionPlanId() != null, InspectionStaff::getInspectionPlanId, bo.getInspectionPlanId()); + lqw.eq(bo.getStartTime() != null, InspectionStaff::getStartTime, bo.getStartTime()); + lqw.eq(bo.getEndTime() != null, InspectionStaff::getEndTime, bo.getEndTime()); + lqw.eq(StringUtils.isNotBlank(bo.getSearchValue()), InspectionStaff::getSearchValue, bo.getSearchValue()); + return lqw; + } + + /** + * 新增执行计划人信息 + * + * @param bo 执行计划人信息 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(InspectionStaffBo bo) { + InspectionStaff add = MapstructUtils.convert(bo, InspectionStaff.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改执行计划人信息 + * + * @param bo 执行计划人信息 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(InspectionStaffBo bo) { + InspectionStaff update = MapstructUtils.convert(bo, InspectionStaff.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(InspectionStaff 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/ServiceWorkOrdersTypeServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/ServiceWorkOrdersTypeServiceImpl.java index e7a9269d..adf8c123 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/ServiceWorkOrdersTypeServiceImpl.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/ServiceWorkOrdersTypeServiceImpl.java @@ -74,7 +74,7 @@ public class ServiceWorkOrdersTypeServiceImpl implements IServiceWorkOrdersTypeS private LambdaQueryWrapper buildQueryWrapper(ServiceWorkOrdersTypeBo bo) { Map params = bo.getParams(); LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); - lqw.orderByAsc(ServiceWorkOrdersType::getId); + lqw.orderByAsc(ServiceWorkOrdersType::getSort); lqw.eq(StringUtils.isNotBlank(bo.getOrderTypeNo()), ServiceWorkOrdersType::getOrderTypeNo, bo.getOrderTypeNo()); lqw.like(StringUtils.isNotBlank(bo.getOrderTypeName()), ServiceWorkOrdersType::getOrderTypeName, bo.getOrderTypeName()); lqw.eq(StringUtils.isNotBlank(bo.getOperationMode()), ServiceWorkOrdersType::getOperationMode, bo.getOperationMode()); 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 index 9f5d7c08..8ad22b21 100644 --- 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 @@ -1,47 +1,135 @@ + package org.dromara.property.tasks; +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.RequiredArgsConstructor; -import org.dromara.property.domain.InspectionPlan; +import org.dromara.property.domain.InspectionTask; import org.dromara.property.domain.bo.InspectionPlanBo; import org.dromara.property.domain.vo.InspectionPlanVo; +import org.dromara.property.mapper.InspectionTaskMapper; import org.dromara.property.service.IInspectionPlanService; -import org.dromara.property.service.IInspectionTaskService; -import org.springframework.scheduling.annotation.Scheduled; -import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; -import java.util.ArrayList; +import java.util.Date; import java.util.List; +import java.util.Optional; + +import static org.dromara.common.mybatis.core.mapper.BaseMapperPlus.log; +import static org.dromara.property.domain.enums.InspectionPlanPeriodEnum.MONTHANDDAY; +import static org.dromara.property.domain.enums.InspectionPlanPeriodEnum.WEEK; /** * @Author:yuyongle * @Date:2025/7/11 15:28 - * @Description: + * @Description: 巡检任务定时处理器 **/ - -@Component +//@Component +//@RequiredArgsConstructor +@Validated @RequiredArgsConstructor +@RestController +@RequestMapping("/task") public class InspectionTasks { private final IInspectionPlanService inspectionPlanService; - private final IInspectionTaskService initiatingTaskService; + private final InspectionTaskMapper inspectionTaskMapper; // 通过巡检计划定时生成巡检任务 - @Scheduled(cron = "0 0 2 * * ?") + //@Scheduled(cron = "0 0 2 * * ?") + //@PostConstruct + @GetMapping("/taskId") + @Transactional(rollbackFor = Exception.class) public void doInspectionPianTask() { - //查询所有计划 + // 查询所有启用状态的巡检计划 InspectionPlanBo inspectionPlanBo = new InspectionPlanBo(); - inspectionPlanBo.setState(String.valueOf(0)); + inspectionPlanBo.setState("0"); List inspectionPlanVoList = inspectionPlanService.queryList(inspectionPlanBo); + + // 如果没有有效计划,直接返回 if (ObjectUtil.isEmpty(inspectionPlanVoList)) { return; } - List inspectionTasksList = new ArrayList<>(); - inspectionPlanVoList.stream().forEach(s -> { + + // 处理每个巡检计划 + inspectionPlanVoList.forEach(plan -> { + LambdaQueryWrapperinspectionTaskWrapper = new LambdaQueryWrapper<>(); + inspectionTaskWrapper.apply("DATE(create_time) = CURDATE()"); + boolean exists = inspectionTaskMapper.exists(inspectionTaskWrapper); + if(!exists){ + // 根据不同的巡检周期执行相应处理 + switch (plan.getInspectionPlanPeriod()) { + case "1": + // 处理按月/天的巡检计划 + handleMonthlyDailyPlan(plan); + break; + + case "2": + // 处理按周的巡检计划 + handleWeeklyDailyPlan(plan); + break; + default: + // 对于未知的巡检周期类型,记录警告日志 + log.warn("未知类型"); + break; + } + } }); - } + /** + * 处理按月/天的巡检计划 + * @param plan 巡检计划信息 + */ + private void handleMonthlyDailyPlan(InspectionPlanVo plan) { + // 使用Optional安全处理可能为null的对象 + Optional.ofNullable(plan).ifPresent(p -> { + DateTime today = DateUtil.parse((CharSequence) new Date()); + DateTime startDate = DateUtil.parse((CharSequence) plan.getStartDate()); + DateTime endDate = DateUtil.parse((CharSequence) plan.getEndDate()); + String day = DateUtil.today().split("-")[2]; + if(DateUtil.isIn(today, startDate, endDate)&&p.getInspectionDay().equals(day)){ + InspectionTask task = new InspectionTask(); + task.setInspectionPlanId(p.getId()); + task.setInspectionPlanId(p.getId()); + task.setTaskType(plan.getSignType()); + task.setPlanInsTime(startDate+p.getEndTime()); + task.setStatus("0"); + inspectionTaskMapper.insert(task); + } + }); + } + /** + * 处理按周的巡检计划 + * @param plan 巡检计划信息 + */ + private void handleWeeklyDailyPlan(InspectionPlanVo plan) { + + // 使用Optional安全处理可能为null的对象 + Optional.ofNullable(plan).ifPresent(p -> { + DateTime today = DateUtil.parse((CharSequence) new Date()); + Optional.ofNullable(DateUtil.format(DateUtil.date(), "yyyy-MM-dd")); + DateTime startDate = DateUtil.parse((CharSequence) plan.getStartDate()); + DateTime endDate = DateUtil.parse((CharSequence) plan.getEndDate()); + String week = String.valueOf(DateUtil.dayOfWeek(DateUtil.date())); + if(DateUtil.isIn(today, startDate, endDate)&&p.getInspectionWorkday().contains(week)) { + InspectionTask task = new InspectionTask(); + task.setInspectionPlanId(p.getId()); + task.setInspectionPlanId(p.getId()); + task.setTaskType(plan.getSignType()); + task.setPlanInsTime(startDate+p.getEndTime()); + task.setStatus("0"); + inspectionTaskMapper.insert(task); + + } + }); + } } From c1bcdd367afb2de227b7076c803b5b0fc822e29f Mon Sep 17 00:00:00 2001 From: zcxlsm Date: Mon, 14 Jul 2025 18:26:35 +0800 Subject: [PATCH 2/7] =?UTF-8?q?feat(sis):=20=20-=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E4=BA=BA=E5=83=8F=E5=86=99=E5=85=A5=E5=85=B3=E8=81=94=E8=A1=A8?= =?UTF-8?q?=20=20-=20=E4=BA=BA=E5=83=8F=E4=BF=A1=E6=81=AF=E8=A1=A8libId?= =?UTF-8?q?=E5=88=A0=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/SisPersonLibController.java | 2 +- .../dromara/sis/domain/SisPersonLibImg.java | 5 ---- .../sis/domain/bo/SisPersonLibImgBo.java | 14 +++++---- .../sis/domain/vo/SisPersonLibImgVo.java | 21 ++++++------- .../sis/service/ISisLibImgRefService.java | 9 ++++++ .../service/impl/SisLibImgRefServiceImpl.java | 16 ++++++++++ .../impl/SisPersonLibImgServiceImpl.java | 30 +++++++++++++++++-- 7 files changed, 70 insertions(+), 27 deletions(-) diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/SisPersonLibController.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/SisPersonLibController.java index a7adc2ba..ffafbe4f 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/SisPersonLibController.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/SisPersonLibController.java @@ -98,7 +98,7 @@ public class SisPersonLibController extends BaseController { */ @SaCheckPermission("sis:personLib:remove") @Log(title = "人像库", businessType = BusinessType.DELETE) - @DeleteMapping("del/{ids}") + @DeleteMapping("/{ids}") public R remove(@NotEmpty(message = "主键不能为空") @PathVariable("ids") Long[] ids) { return toAjax(tbPersonLibService.deleteWithValidByIds(List.of(ids), true)); diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisPersonLibImg.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisPersonLibImg.java index 64bc16db..d59a9742 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 @@ -28,11 +28,6 @@ public class SisPersonLibImg extends TenantEntity { @TableId(value = "id") private Long id; - /** - * 人员库编码 - */ - private Long libId; - /** * 人像名称 */ 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 c83c985c..55fbd4de 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 @@ -9,6 +9,8 @@ import lombok.Data; import lombok.EqualsAndHashCode; import jakarta.validation.constraints.*; +import java.util.Collection; + /** * 人像信息业务对象 tb_person_lib_img * @@ -30,7 +32,7 @@ public class SisPersonLibImgBo extends BaseEntity { * 人员库编码 */ @NotNull(message = "人像库id不能为空", groups = {AddGroup.class, EditGroup.class}) - private Long libId; + private Collection libIds; /** * 人像名称 @@ -74,14 +76,14 @@ public class SisPersonLibImgBo extends BaseEntity { */ private String birthDate; - /** - * 同步E8 - */ - private Boolean isSyncE8; - /** * 远程库图像ID */ private Long remoteImgId; + /** + * 同步E8 + */ + private Boolean isSyncE8; + } 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 7a36ff66..3d9ffe17 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 @@ -8,7 +8,7 @@ import org.dromara.sis.domain.SisPersonLibImg; import java.io.Serial; import java.io.Serializable; - +import java.util.Collection; /** @@ -31,12 +31,6 @@ public class SisPersonLibImgVo implements Serializable { @ExcelProperty(value = "主键id") private Long id; - /** - * 人员库编码 - */ - @ExcelProperty(value = "人员库Id") - private Long libId; - /** * 人像名称 */ @@ -50,8 +44,7 @@ public class SisPersonLibImgVo implements Serializable { private Long imgOssId; /** - * 性别 1:男 -2:女 99:未说明 + * 性别 1:男 2:女 99:未说明 */ @ExcelProperty(value = "性别") private Integer sex; @@ -69,9 +62,7 @@ public class SisPersonLibImgVo implements Serializable { private String tel; /** - * 证件类型 -1:身份证 2:护照 -3:行驶证 99:其它 + * 证件类型 1:身份证 2:护照 3:行驶证 99:其它 */ @ExcelProperty(value = "证件类型") private Integer certificateType; @@ -93,4 +84,10 @@ public class SisPersonLibImgVo implements Serializable { */ @ExcelProperty(value = "远程库图像ID") private Long remoteImgId; + + /** + * 人像库id + */ + @ExcelProperty(value = "人像库id") + private Collection libIds; } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisLibImgRefService.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisLibImgRefService.java index 92028ea1..3168a7b0 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisLibImgRefService.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisLibImgRefService.java @@ -1,5 +1,6 @@ package org.dromara.sis.service; +import org.dromara.sis.domain.SisLibImgRef; import org.dromara.sis.domain.vo.SisLibImgRefVo; import org.dromara.sis.domain.bo.SisLibImgRefBo; import org.dromara.common.mybatis.core.page.TableDataInfo; @@ -65,4 +66,12 @@ public interface ISisLibImgRefService { * @return 是否删除成功 */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + /** + * 批量添加人像库-人像图片关联 + * + * @param refs 待添加的关联信息 + * @return 是否添加成功 + */ + Boolean addBatch(List refs); } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisLibImgRefServiceImpl.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisLibImgRefServiceImpl.java index 24e9b055..4a0a0c74 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisLibImgRefServiceImpl.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisLibImgRefServiceImpl.java @@ -1,5 +1,6 @@ package org.dromara.sis.service.impl; +import cn.hutool.core.lang.Assert; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.TableDataInfo; @@ -15,6 +16,7 @@ import org.dromara.sis.domain.vo.SisLibImgRefVo; import org.dromara.sis.domain.SisLibImgRef; import org.dromara.sis.mapper.SisLibImgRefMapper; import org.dromara.sis.service.ISisLibImgRefService; +import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Map; @@ -129,4 +131,18 @@ public class SisLibImgRefServiceImpl implements ISisLibImgRefService { } return baseMapper.deleteByIds(ids) > 0; } + + /** + * 批量添加人像库-人像图片关联 + * + * @param refs 待添加的关联信息 + * @return boolean + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean addBatch(List refs){ + boolean flag = baseMapper.insertBatch(refs); + Assert.isTrue( flag, "批量添加人像库-人像图片关联失败"); + return flag; + } } 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 70ed0ab9..3381d24a 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 @@ -14,7 +14,9 @@ import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.resource.api.RemoteFileService; +import org.dromara.sis.domain.SisLibImgRef; import org.dromara.sis.domain.SisPersonLibImg; +import org.dromara.sis.domain.bo.SisLibImgRefBo; import org.dromara.sis.domain.bo.SisPersonLibImgBo; import org.dromara.sis.domain.vo.*; import org.dromara.sis.mapper.SisPersonLibImgMapper; @@ -38,7 +40,9 @@ import java.util.*; public class SisPersonLibImgServiceImpl implements ISisPersonLibImgService { private final SisPersonLibImgMapper baseMapper; + private final HuaWeiBoxApi huaWeiBoxApi; + private final ISisLibImgRefService sisLibImgRefService; @DubboReference private final RemoteFileService remoteFileService; @@ -51,7 +55,15 @@ public class SisPersonLibImgServiceImpl implements ISisPersonLibImgService { */ @Override public SisPersonLibImgVo queryById(Long id) { - return baseMapper.selectVoById(id); + SisLibImgRefBo refBo = new SisLibImgRefBo(); + refBo.setImgId(id); + List refs = sisLibImgRefService.queryList(refBo); + Collection refIds = refs.stream().map(SisLibImgRefVo::getId).toList(); + + SisPersonLibImgVo vo = new SisPersonLibImgVo(); + vo.setLibIds(refIds); + + return vo; } /** @@ -84,7 +96,6 @@ public class SisPersonLibImgServiceImpl implements ISisPersonLibImgService { Map params = bo.getParams(); LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); lqw.orderByAsc(SisPersonLibImg::getId); - lqw.eq(bo.getLibId() != null, SisPersonLibImg::getLibId, bo.getLibId()); lqw.like(StringUtils.isNotBlank(bo.getImgName()), SisPersonLibImg::getImgName, bo.getImgName()); lqw.eq(bo.getImgOssId() != null, SisPersonLibImg::getImgOssId, bo.getImgOssId()); lqw.eq(bo.getSex() != null, SisPersonLibImg::getSex, bo.getSex()); @@ -130,7 +141,20 @@ public class SisPersonLibImgServiceImpl implements ISisPersonLibImgService { add.setRemoteImgId(pId); flag = baseMapper.insert(add) > 0; - Assert.isTrue(flag, "新增失败"); + Assert.isTrue(flag, "新增人像失败"); + + log.info("开始写入人像⇄人像库关联表"); + List refs = new ArrayList<>(); + for (Long libId : bo.getLibIds()) { + SisLibImgRef ref = new SisLibImgRef(); + ref.setLibId(libId); + ref.setImgId(add.getId()); + refs.add(ref); + } + Boolean refFlag = sisLibImgRefService.addBatch(refs); + Assert.isTrue(refFlag, "写入人像⇄人像库关联表失败!"); + log.info("写入人像⇄人像库关联表完成"); + } catch (Exception e) { throw new RuntimeException(e.getMessage()); } From f53dee48cad908f669d19ae7039135abde052a8d Mon Sep 17 00:00:00 2001 From: zcxlsm Date: Mon, 14 Jul 2025 22:02:34 +0800 Subject: [PATCH 3/7] refactor(sis): --- .../controller/SisLibImgRefController.java | 106 ------------------ .../sis/domain/bo/SisPersonLibImgBo.java | 2 +- .../sis/sdk/huawei/utils/HuaWeiHttp.java | 2 +- 3 files changed, 2 insertions(+), 108 deletions(-) delete mode 100644 ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/SisLibImgRefController.java diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/SisLibImgRefController.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/SisLibImgRefController.java deleted file mode 100644 index cb845f43..00000000 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/SisLibImgRefController.java +++ /dev/null @@ -1,106 +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.SisLibImgRefVo; -import org.dromara.sis.domain.bo.SisLibImgRefBo; -import org.dromara.sis.service.ISisLibImgRefService; -import org.dromara.common.mybatis.core.page.TableDataInfo; - -/** - * 人像库-人像图片关联 - * 前端访问路由地址为:/sis/libImgRef - * - * @author lsm - * @since 2025-07-14 - */ -@Validated -@RequiredArgsConstructor -@RestController -@RequestMapping("/libImgRef") -public class SisLibImgRefController extends BaseController { - - private final ISisLibImgRefService sisLibImgRefService; - - /** - * 查询人像库-人像图片关联列表 - */ - @SaCheckPermission("sis:libImgRef:list") - @GetMapping("/list") - public TableDataInfo list(SisLibImgRefBo bo, PageQuery pageQuery) { - return sisLibImgRefService.queryPageList(bo, pageQuery); - } - - /** - * 导出人像库-人像图片关联列表 - */ - @SaCheckPermission("sis:libImgRef:export") - @Log(title = "人像库-人像图片关联", businessType = BusinessType.EXPORT) - @PostMapping("/export") - public void export(SisLibImgRefBo bo, HttpServletResponse response) { - List list = sisLibImgRefService.queryList(bo); - ExcelUtil.exportExcel(list, "人像库-人像图片关联", SisLibImgRefVo.class, response); - } - - /** - * 获取人像库-人像图片关联详细信息 - * - * @param libId 主键 - */ - @SaCheckPermission("sis:libImgRef:query") - @GetMapping("/{libId}") - public R getInfo(@NotNull(message = "主键不能为空") - @PathVariable("libId") Long libId) { - return R.ok(sisLibImgRefService.queryById(libId)); - } - - /** - * 新增人像库-人像图片关联 - */ - @SaCheckPermission("sis:libImgRef:add") - @Log(title = "人像库-人像图片关联", businessType = BusinessType.INSERT) - @RepeatSubmit() - @PostMapping() - public R add(@Validated(AddGroup.class) @RequestBody SisLibImgRefBo bo) { - return toAjax(sisLibImgRefService.insertByBo(bo)); - } - - /** - * 修改人像库-人像图片关联 - */ - @SaCheckPermission("sis:libImgRef:edit") - @Log(title = "人像库-人像图片关联", businessType = BusinessType.UPDATE) - @RepeatSubmit() - @PutMapping() - public R edit(@Validated(EditGroup.class) @RequestBody SisLibImgRefBo bo) { - return toAjax(sisLibImgRefService.updateByBo(bo)); - } - - /** - * 删除人像库-人像图片关联 - * - * @param libIds 主键串 - */ - @SaCheckPermission("sis:libImgRef:remove") - @Log(title = "人像库-人像图片关联", businessType = BusinessType.DELETE) - @DeleteMapping("/{libIds}") - public R remove(@NotEmpty(message = "主键不能为空") - @PathVariable("libIds") Long[] libIds) { - return toAjax(sisLibImgRefService.deleteWithValidByIds(List.of(libIds), true)); - } -} 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 55fbd4de..cd92835e 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 @@ -31,7 +31,7 @@ public class SisPersonLibImgBo extends BaseEntity { /** * 人员库编码 */ - @NotNull(message = "人像库id不能为空", groups = {AddGroup.class, EditGroup.class}) + @NotEmpty(message = "人像库id不能为空", groups = {AddGroup.class, EditGroup.class}) private Collection libIds; /** 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 index 6141c570..60c58ff0 100644 --- 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 @@ -25,7 +25,7 @@ import java.util.concurrent.TimeUnit; @Component public class HuaWeiHttp { - private static final String BASE_URL = "https://192.168.24.100:18531"; + private static final String BASE_URL = "https://47.109.37.87:18000"; private static final String USERNAME = "huawei"; private static final String PASSWORD = "qweasd123"; From 8b340c9e950b9c3b2ec363c75db6bd018b959da5 Mon Sep 17 00:00:00 2001 From: zcxlsm Date: Mon, 14 Jul 2025 23:15:29 +0800 Subject: [PATCH 4/7] =?UTF-8?q?refactor(sis):=20=E6=8E=88=E6=9D=83?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=E6=A8=A1=E5=9D=97=E9=87=8D=E6=96=B0=E8=B0=83?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/SisAuthRecordController.java | 65 +--- .../org/dromara/sis/domain/SisAuthRecord.java | 29 +- .../sis/domain/bo/SisAuthRecordBo.java | 44 +-- .../sis/domain/vo/SisAuthRecordVo.java | 49 +-- .../sis/mapper/SisAuthRecordMapper.java | 4 +- .../sis/service/ISisAuthRecordService.java | 39 +-- .../impl/SisAuthRecordServiceImpl.java | 288 ++---------------- 7 files changed, 99 insertions(+), 419 deletions(-) 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 11884c91..1611e080 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 @@ -1,37 +1,33 @@ package org.dromara.sis.controller; -import cn.dev33.satoken.annotation.SaCheckPermission; -import jakarta.servlet.http.HttpServletResponse; -import jakarta.validation.constraints.NotEmpty; -import jakarta.validation.constraints.NotNull; +import 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.excel.utils.ExcelUtil; -import org.dromara.common.idempotent.annotation.RepeatSubmit; -import org.dromara.common.log.annotation.Log; import org.dromara.common.log.enums.BusinessType; -import org.dromara.common.mybatis.core.page.PageQuery; -import org.dromara.common.mybatis.core.page.TableDataInfo; -import org.dromara.common.web.core.BaseController; -import org.dromara.sis.domain.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.common.excel.utils.ExcelUtil; import org.dromara.sis.domain.vo.SisAuthRecordVo; +import org.dromara.sis.domain.bo.SisAuthRecordBo; import org.dromara.sis.service.ISisAuthRecordService; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.util.List; +import org.dromara.common.mybatis.core.page.TableDataInfo; /** * 授权记录 * 前端访问路由地址为:/sis/authRecord * * @author lsm - * @since 2025-06-28 + * @since 2025-07-14 */ @Validated @RequiredArgsConstructor @@ -79,23 +75,11 @@ public class SisAuthRecordController extends BaseController { @SaCheckPermission("sis:authRecord:add") @Log(title = "授权记录", businessType = BusinessType.INSERT) @RepeatSubmit() - @PostMapping("/add") + @PostMapping() public R add(@Validated(AddGroup.class) @RequestBody SisAuthRecordBo bo) { return toAjax(sisAuthRecordService.insertByBo(bo)); } - /** - * 新增授权记录 - */ - @SaCheckPermission("sis:authRecord:add") - @Log(title = "单个人像授权", businessType = BusinessType.INSERT) - @RepeatSubmit() - @PostMapping("/auth/single") - public R singleAuth(@Validated(AddGroup.class) @RequestBody SingleAuthRecordBo bo) { - return toAjax(sisAuthRecordService.singleAuth(bo)); - } - - /** * 修改授权记录 */ @@ -119,21 +103,4 @@ 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/domain/SisAuthRecord.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisAuthRecord.java index 729b027d..9588f9af 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 @@ -11,7 +11,7 @@ import java.io.Serial; * 授权记录对象 sis_auth_record * * @author lsm - * @since 2025-06-28 + * @since 2025-07-14 */ @Data @EqualsAndHashCode(callSuper = true) @@ -33,29 +33,14 @@ public class SisAuthRecord extends TenantEntity { private Long libId; /** - * 图片id - */ - private Long imgId; - - /** - * 门禁id - */ - private Long acId; - - /** - * 设备id - */ - private Long eqbId; - - /* - 门id - */ - private Long doorId; - - /** - * 设备id + * 设备id(门禁/电梯) */ private Long deviceId; + /** + * 设备类型:1-门禁 2-电梯 + */ + private Integer deviceType; + } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisAuthRecordBo.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisAuthRecordBo.java index cb683c05..13fd3d4e 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisAuthRecordBo.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisAuthRecordBo.java @@ -1,21 +1,21 @@ package org.dromara.sis.domain.bo; -import io.github.linpeilie.annotations.AutoMapper; -import jakarta.validation.constraints.NotNull; -import lombok.Data; -import lombok.EqualsAndHashCode; +import org.dromara.sis.domain.SisAuthRecord; +import org.dromara.common.mybatis.core.domain.BaseEntity; 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.SisAuthRecord; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; -import java.util.List; +import java.util.Collection; /** * 授权记录业务对象 sis_auth_record * * @author lsm - * @since 2025-06-28 + * @since 2025-07-14 */ @Data @EqualsAndHashCode(callSuper = true) @@ -23,26 +23,26 @@ import java.util.List; public class SisAuthRecordBo extends BaseEntity { /** - * 图像库Id + * 主键id */ - @NotNull(message = "图像库Id不能为空", groups = {AddGroup.class, EditGroup.class}) + @NotNull(message = "主键id不能为空", groups = {EditGroup.class}) + private Long id; + + /** + * 图像库id + */ + @NotNull(message = "图像库id不能为空", groups = {AddGroup.class, EditGroup.class}) private Long libId; /** - * 图像id列表 + * 门禁idList */ - @NotNull(message = "图像id列表不能为空", groups = {AddGroup.class, EditGroup.class}) - private List imgIds; + @NotEmpty(message = "门禁idList不能为空", groups = {AddGroup.class, EditGroup.class}) + private Collection acIdList; /** - * 门禁id列表 + * 电梯idList */ - @NotNull(message = "门禁id列表能为空", groups = {AddGroup.class, EditGroup.class}) - private List acIds; - - /** - * 是否将图片下发到宇视盒子 - */ - private Boolean issue = false; - + @NotEmpty(message = "电梯idList不能为空", groups = {AddGroup.class, EditGroup.class}) + private Collection eleIdList; } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisAuthRecordVo.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisAuthRecordVo.java index 07a231a9..6b9d50ad 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisAuthRecordVo.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisAuthRecordVo.java @@ -3,19 +3,20 @@ package org.dromara.sis.domain.vo; import org.dromara.sis.domain.SisAuthRecord; 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.List; /** * 授权记录视图对象 sis_auth_record * * @author lsm - * @since 2025-06-28 + * @since 2025-07-14 */ @Data @ExcelIgnoreUnannotated @@ -32,41 +33,23 @@ public class SisAuthRecordVo implements Serializable { private Long id; /** - * 图像库Id + * 图像库id */ - @ExcelProperty(value = "图像库Id") + @ExcelProperty(value = "图像库id") private Long libId; /** - * 人像id - */ - @ExcelProperty(value = "人像id") - private Long imgId; - - /** - * 门禁id - */ - @ExcelProperty(value = "门禁id") - private Long acId; - - /** - * 设备id - */ - @ExcelProperty(value = "设备id") - private Long eqbId; - - /** - * E8权限ID - */ - private Long remoteAuthId; - - /* - 门id - */ - private Long doorId; - - /** - * 设备id + * 设备id(门禁/电梯) */ + @ExcelProperty(value = "设备id", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "门=禁/电梯") private Long deviceId; + + /** + * 设备类型:1-门禁 2-电梯 + */ + @ExcelProperty(value = "设备类型:1-门禁 2-电梯") + private Integer deviceType; + + } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/mapper/SisAuthRecordMapper.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/mapper/SisAuthRecordMapper.java index abfef87a..54f18483 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/mapper/SisAuthRecordMapper.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/mapper/SisAuthRecordMapper.java @@ -1,6 +1,5 @@ package org.dromara.sis.mapper; -import org.apache.ibatis.annotations.Param; import org.dromara.sis.domain.SisAuthRecord; import org.dromara.sis.domain.vo.SisAuthRecordVo; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; @@ -9,9 +8,8 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; * 授权记录Mapper接口 * * @author lsm - * @date 2025-06-28 + * @since 2025-07-14 */ public interface SisAuthRecordMapper extends BaseMapperPlus { - SisAuthRecordVo checkAuth(@Param("personId") Integer personId,@Param("accessControlId") Long accessControlId); } 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 c38079d5..b47a346c 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 @@ -1,12 +1,9 @@ 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; +import org.dromara.sis.domain.bo.SisAuthRecordBo; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; import java.util.Collection; import java.util.List; @@ -15,7 +12,7 @@ import java.util.List; * 授权记录Service接口 * * @author lsm - * @date 2025-06-28 + * @since 2025-07-14 */ public interface ISisAuthRecordService { @@ -68,32 +65,4 @@ public interface ISisAuthRecordService { * @return 是否删除成功 */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); - - /** - * 通过宇视图片id和门禁id校验此图像是否有通行权限 - * - * @param personId 人像id - * @param accessControlId 门禁id - * @return 返回授权记录 - */ - SisAuthRecordVo checkAuth(Integer personId, Long accessControlId); - - /** - * 单个人像授权 - * - * @param bo 授权信息 - * @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/impl/SisAuthRecordServiceImpl.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAuthRecordServiceImpl.java index 9b262c10..e9534c49 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,66 +1,38 @@ 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 org.dromara.common.core.utils.MapstructUtils; +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.apache.dubbo.config.annotation.DubboReference; -import org.dromara.common.core.utils.MapstructUtils; -import org.dromara.common.mybatis.core.page.PageQuery; -import org.dromara.common.mybatis.core.page.TableDataInfo; -import org.dromara.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.springframework.stereotype.Service; import org.dromara.sis.domain.bo.SisAuthRecordBo; import org.dromara.sis.domain.vo.SisAuthRecordVo; +import org.dromara.sis.domain.SisAuthRecord; 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.unview.UnViewAiBoxApi; -import org.dromara.sis.service.*; -import org.springframework.stereotype.Service; +import org.dromara.sis.service.ISisAuthRecordService; import org.springframework.transaction.annotation.Transactional; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.util.Base64; -import java.util.Collection; import java.util.List; import java.util.Map; +import java.util.Collection; /** * 授权记录Service业务层处理 * * @author lsm - * @since 2025-06-28 + * @since 2025-07-14 */ @Slf4j @RequiredArgsConstructor @Service public class SisAuthRecordServiceImpl implements ISisAuthRecordService { - private final UnViewAiBoxApi unViewAiBoxApi; private final SisAuthRecordMapper baseMapper; - private final VoucherControlService e8VouchService; - private final DoorDeviceService e8DoorDeviceService; - private final ISisPersonLibService sisPersonLibService; - private final ISisEEightRefService sisEEightRefService; - private final AccessControlService e8AccessControlService; - private final ISisPersonLibImgService sisPersonLibImgService; - private final ISisLibDeviceRefService sisLibDeviceRefService; - private final ISisAccessControlService sisAccessControlService; - private final ISisLibDeviceImgRefService sisLibDeviceImgRefService; - private final ISisDeviceManageService deviceManageService; - - @DubboReference - private final RemoteFileService remoteFileService; /** * 查询授权记录 @@ -82,7 +54,7 @@ public class SisAuthRecordServiceImpl implements ISisAuthRecordService { */ @Override public TableDataInfo queryPageList(SisAuthRecordBo bo, PageQuery pageQuery) { - LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + LambdaQueryWrapper lqw = buildQueryWrapper(bo); Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); return TableDataInfo.build(result); } @@ -116,184 +88,32 @@ 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(); -// -// 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; - } + boolean flag = false; + log.info("开始写入门禁授权记录,acIds:{}", bo.getAcIdList()); + for (Long acId : bo.getAcIdList()) { + SisAuthRecord add = MapstructUtils.convert(bo, SisAuthRecord.class); + Assert.notNull(add, "数据处理失败"); - public String base64Helper(byte[] imageByte) throws IOException { - // 1. 将字节数组解码为BufferedImage对象 - ByteArrayInputStream bis = new ByteArrayInputStream(imageByte); + add.setDeviceType(1); + add.setDeviceId(acId); + flag = baseMapper.insert(add) > 0; + Assert.isTrue(flag, "写入门禁授权记录失败!"); + } + log.info("写入门禁授权记录完成"); - // 2. 将图片重新编码为JPG格式的字节数组 - ByteArrayOutputStream bos = new ByteArrayOutputStream(); + log.info("开始写入电梯授权记录,eleIds:{}", bo.getEleIdList()); + for (Long ele : bo.getEleIdList()) { + SisAuthRecord add = MapstructUtils.convert(bo, SisAuthRecord.class); + Assert.notNull(add, "数据处理失败"); - ImgUtil.convert(bis, "jpg", bos); + add.setDeviceType(2); + add.setDeviceId(ele); + flag = baseMapper.insert(add) > 0; + Assert.isTrue(flag, "写入电梯授权记录失败!"); + } + log.info("写入电梯授权记录完成"); - byte[] jpgBytes = bos.toByteArray(); - - // 3. 将JPG字节数组转为Base64字符串 - return Base64.getEncoder().encodeToString(jpgBytes); - } - - @Override - public Boolean singleAuth(SingleAuthRecordBo bo) { - return null; + return flag; } /** @@ -330,46 +150,4 @@ public class SisAuthRecordServiceImpl implements ISisAuthRecordService { } return baseMapper.deleteByIds(ids) > 0; } - - @Override - 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); - } } From 54655ae6d6612830c392c8d8f291d95555e2617c Mon Sep 17 00:00:00 2001 From: yuyongle <1150359267@qq.com> Date: Tue, 15 Jul 2025 11:52:38 +0800 Subject: [PATCH 5/7] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=B7=A1=E6=A3=80?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/InspectionTaskController.java | 2 +- .../property/domain/vo/InspectionTaskVo.java | 11 +++++ .../mapperMPJ/InspectionTaskMPJMapper.java | 18 +++++++ .../impl/InspectionTaskServiceImpl.java | 39 +++++++++++---- .../property/tasks/InspectionTasks.java | 48 ++++++++++--------- 5 files changed, 86 insertions(+), 32 deletions(-) create mode 100644 ruoyi-modules/Property/src/main/java/org/dromara/property/mapperMPJ/InspectionTaskMPJMapper.java 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 index 008745dd..c289cf2c 100644 --- 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 @@ -40,7 +40,7 @@ public class InspectionTaskController extends BaseController { /** * 查询巡检任务列表 */ - @SaCheckPermission("property:inspectionTask:list") + // @SaCheckPermission("property:inspectionTask:list") @GetMapping("/list") public TableDataInfo list(InspectionTaskBo bo, PageQuery pageQuery) { return inspectionTaskService.queryPageList(bo, pageQuery); 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 index 33f426f2..442448f7 100644 --- 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 @@ -42,6 +42,11 @@ public class InspectionTaskVo implements Serializable { @ExcelProperty(value = "巡检计划id") private Long inspectionPlanId; + /** + * 巡检计划名称 + */ + private String planName; + /** * 实际巡检时间 */ @@ -54,6 +59,12 @@ public class InspectionTaskVo implements Serializable { @ExcelProperty(value = "当前巡检人") private Long actUserId; + /** + * 巡检人名称 + */ + @ExcelProperty(value = "巡检人名称") + private Long actUserName; + /** * 巡检方式 */ diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/mapperMPJ/InspectionTaskMPJMapper.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/mapperMPJ/InspectionTaskMPJMapper.java new file mode 100644 index 00000000..0fdb163c --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/mapperMPJ/InspectionTaskMPJMapper.java @@ -0,0 +1,18 @@ +package org.dromara.property.mapperMPJ; + +import com.github.yulichang.base.MPJBaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.property.domain.InspectionTask; +import org.dromara.property.domain.vo.InspectionTaskVo; + +/** + * 巡检任务Mapper接口 + * + * @author mocheng + * @date 2025-07-11 + */ +@Mapper +public interface InspectionTaskMPJMapper extends MPJBaseMapper { + +} 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 index ee1c7f52..8c0d026f 100644 --- 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 @@ -1,24 +1,31 @@ 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 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.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.property.domain.InspectionPlan; +import org.dromara.property.domain.InspectionTask; 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.InspectionPlanMapper; import org.dromara.property.mapper.InspectionTaskMapper; import org.dromara.property.service.IInspectionTaskService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import java.util.Collection; import java.util.List; import java.util.Map; -import java.util.Collection; +import java.util.Set; + +import static java.util.stream.Collectors.toMap; +import static java.util.stream.Collectors.toSet; /** * 巡检任务Service业务层处理 @@ -32,6 +39,8 @@ import java.util.Collection; public class InspectionTaskServiceImpl implements IInspectionTaskService { private final InspectionTaskMapper baseMapper; + @Autowired + private final InspectionPlanMapper inspectionPlanMapper; /** * 查询巡检任务 @@ -55,9 +64,21 @@ public class InspectionTaskServiceImpl implements IInspectionTaskService { public TableDataInfo queryPageList(InspectionTaskBo bo, PageQuery pageQuery) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + if (result.getRecords().size() > 0) { + addPlanNameInfo(result); + } return TableDataInfo.build(result); } - + private void addPlanNameInfo(Page inspectionTaskVoPage) { + // 提取用户userId,方便批量查询 + Set planIds = inspectionTaskVoPage.getRecords().stream().map(InspectionTaskVo::getInspectionPlanId).collect(toSet()); + // 根据planId查询planName + List inspectionPlanList = inspectionPlanMapper.selectList(Wrappers.lambdaQuery(InspectionPlan.class).in(InspectionPlan::getId, planIds)); + // 构造映射关系,方便匹配planId与planName + Map hashMap = inspectionPlanList.stream().collect(toMap(InspectionPlan::getId, InspectionPlan::getPlanName)); + // 将查询补充的信息添加到Vo中 + inspectionTaskVoPage.getRecords().forEach(e -> e.setPlanName(hashMap.get(e.getInspectionPlanId()))); + } /** * 查询符合条件的巡检任务列表 * 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 index 8ad22b21..8801e231 100644 --- 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 @@ -11,12 +11,16 @@ import org.dromara.property.domain.bo.InspectionPlanBo; import org.dromara.property.domain.vo.InspectionPlanVo; import org.dromara.property.mapper.InspectionTaskMapper; import org.dromara.property.service.IInspectionPlanService; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.PostConstruct; +import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Optional; @@ -30,37 +34,36 @@ import static org.dromara.property.domain.enums.InspectionPlanPeriodEnum.WEEK; * @Date:2025/7/11 15:28 * @Description: 巡检任务定时处理器 **/ -//@Component -//@RequiredArgsConstructor -@Validated +@Component @RequiredArgsConstructor -@RestController -@RequestMapping("/task") +//@Validated +//@RequiredArgsConstructor +//@RestController +//@RequestMapping("/task") public class InspectionTasks { private final IInspectionPlanService inspectionPlanService; private final InspectionTaskMapper inspectionTaskMapper; // 通过巡检计划定时生成巡检任务 - //@Scheduled(cron = "0 0 2 * * ?") - //@PostConstruct - @GetMapping("/taskId") + @Scheduled(cron = "0 0 2 * * ?") + @PostConstruct + //@GetMapping("/taskId") @Transactional(rollbackFor = Exception.class) public void doInspectionPianTask() { // 查询所有启用状态的巡检计划 InspectionPlanBo inspectionPlanBo = new InspectionPlanBo(); inspectionPlanBo.setState("0"); List inspectionPlanVoList = inspectionPlanService.queryList(inspectionPlanBo); - // 如果没有有效计划,直接返回 if (ObjectUtil.isEmpty(inspectionPlanVoList)) { return; } - // 处理每个巡检计划 inspectionPlanVoList.forEach(plan -> { LambdaQueryWrapperinspectionTaskWrapper = new LambdaQueryWrapper<>(); - inspectionTaskWrapper.apply("DATE(create_time) = CURDATE()"); + inspectionTaskWrapper.eq(InspectionTask::getInspectionPlanId,plan.getId()); + inspectionTaskWrapper.eq(InspectionTask::getInspectionPlanId,plan.getId()); boolean exists = inspectionTaskMapper.exists(inspectionTaskWrapper); if(!exists){ // 根据不同的巡检周期执行相应处理 @@ -92,16 +95,17 @@ public class InspectionTasks { // 使用Optional安全处理可能为null的对象 Optional.ofNullable(plan).ifPresent(p -> { - DateTime today = DateUtil.parse((CharSequence) new Date()); - DateTime startDate = DateUtil.parse((CharSequence) plan.getStartDate()); - DateTime endDate = DateUtil.parse((CharSequence) plan.getEndDate()); + DateTime today = DateUtil.date(); + DateTime startDate = DateUtil.date(plan.getStartDate()); + DateTime endDate = DateUtil.date(plan.getEndDate()); String day = DateUtil.today().split("-")[2]; - if(DateUtil.isIn(today, startDate, endDate)&&p.getInspectionDay().equals(day)){ + List inspectionDayList = Arrays.asList(p.getInspectionDay().split(",")); + if(DateUtil.isIn(today, startDate, endDate)&&inspectionDayList.contains(day)){ InspectionTask task = new InspectionTask(); task.setInspectionPlanId(p.getId()); task.setInspectionPlanId(p.getId()); task.setTaskType(plan.getSignType()); - task.setPlanInsTime(startDate+p.getEndTime()); + task.setPlanInsTime(startDate+"~"+p.getEndTime()); task.setStatus("0"); inspectionTaskMapper.insert(task); } @@ -115,17 +119,17 @@ public class InspectionTasks { // 使用Optional安全处理可能为null的对象 Optional.ofNullable(plan).ifPresent(p -> { - DateTime today = DateUtil.parse((CharSequence) new Date()); - Optional.ofNullable(DateUtil.format(DateUtil.date(), "yyyy-MM-dd")); - DateTime startDate = DateUtil.parse((CharSequence) plan.getStartDate()); - DateTime endDate = DateUtil.parse((CharSequence) plan.getEndDate()); + DateTime today = DateUtil.date(); + DateTime startDate = DateUtil.date(plan.getStartDate()); + DateTime endDate = DateUtil.date(plan.getEndDate()); String week = String.valueOf(DateUtil.dayOfWeek(DateUtil.date())); - if(DateUtil.isIn(today, startDate, endDate)&&p.getInspectionWorkday().contains(week)) { + List inspectionWorkdayList = Arrays.asList(p.getInspectionWorkday().split(",")); + if(DateUtil.isIn(today, startDate, endDate)&&inspectionWorkdayList.contains(week)) { InspectionTask task = new InspectionTask(); task.setInspectionPlanId(p.getId()); task.setInspectionPlanId(p.getId()); task.setTaskType(plan.getSignType()); - task.setPlanInsTime(startDate+p.getEndTime()); + task.setPlanInsTime(startDate+"~"+p.getEndTime()); task.setStatus("0"); inspectionTaskMapper.insert(task); From e473d9b905ef4c9ad6e044ca3865610faf3c3af2 Mon Sep 17 00:00:00 2001 From: yuyongle <1150359267@qq.com> Date: Tue, 15 Jul 2025 12:28:30 +0800 Subject: [PATCH 6/7] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=B7=A1=E6=A3=80?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-common/ruoyi-common-mybatis/pom.xml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ruoyi-common/ruoyi-common-mybatis/pom.xml b/ruoyi-common/ruoyi-common-mybatis/pom.xml index 77a88301..e7f23b1b 100644 --- a/ruoyi-common/ruoyi-common-mybatis/pom.xml +++ b/ruoyi-common/ruoyi-common-mybatis/pom.xml @@ -49,6 +49,11 @@ dynamic-datasource-spring-boot3-starter ${dynamic-ds.version} + + com.github.yulichang + mybatis-plus-join + 1.2.4 + From 172ede3eb34e6a35a549e27fce979dd53513211b Mon Sep 17 00:00:00 2001 From: zcxlsm Date: Tue, 15 Jul 2025 13:43:55 +0800 Subject: [PATCH 7/7] =?UTF-8?q?feat(auth):=20=E4=BA=BA=E5=91=98=E5=BA=93?= =?UTF-8?q?=E6=8E=88=E6=9D=83=E5=8A=9F=E8=83=BD=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/SisAuthRecordController.java | 24 ++- .../org/dromara/sis/domain/bo/AuthLibBo.java | 22 --- .../sis/domain/bo/SingleAuthRecordBo.java | 44 ------ .../sis/domain/bo/SisAuthRecordBo.java | 12 +- .../sis/service/ISisAuthRecordService.java | 24 +++ .../sis/service/ISisElevatorInfoService.java | 8 + .../impl/SisAuthRecordServiceImpl.java | 145 ++++++++++++++++-- .../impl/SisElevatorInfoServiceImpl.java | 11 ++ 8 files changed, 199 insertions(+), 91 deletions(-) delete mode 100644 ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/AuthLibBo.java delete mode 100644 ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SingleAuthRecordBo.java 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 1611e080..3caf3a45 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 @@ -6,6 +6,8 @@ import lombok.RequiredArgsConstructor; import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.constraints.*; import cn.dev33.satoken.annotation.SaCheckPermission; +import org.dromara.common.core.domain.TreeNode; +import org.dromara.sis.domain.SisAuthRecord; import org.springframework.web.bind.annotation.*; import org.springframework.validation.annotation.Validated; import org.dromara.common.idempotent.annotation.RepeatSubmit; @@ -73,7 +75,7 @@ public class SisAuthRecordController extends BaseController { * 新增授权记录 */ @SaCheckPermission("sis:authRecord:add") - @Log(title = "授权记录", businessType = BusinessType.INSERT) + @Log(title = "人员库授权", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping() public R add(@Validated(AddGroup.class) @RequestBody SisAuthRecordBo bo) { @@ -103,4 +105,24 @@ public class SisAuthRecordController extends BaseController { @PathVariable("ids") Long[] ids) { return toAjax(sisAuthRecordService.deleteWithValidByIds(List.of(ids), true)); } + + /** + * 查询库id授权的设备 + * + * @param libId 人像库id + */ + @GetMapping("/authDevice/{libId}") + public R> queryAuthDevice(@PathVariable("libId") String libId) { + return R.ok(sisAuthRecordService.queryAuthDevice(libId)); + } + + /** + * 查询所有可授权设备 + * + * @return List> + */ + @GetMapping("/authDevice/tree") + public R>> tree() { + return R.ok(sisAuthRecordService.authDeviceTree()); + } } 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 deleted file mode 100644 index a8373f3b..00000000 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/AuthLibBo.java +++ /dev/null @@ -1,22 +0,0 @@ -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/SingleAuthRecordBo.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SingleAuthRecordBo.java deleted file mode 100644 index 9c71ee8b..00000000 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SingleAuthRecordBo.java +++ /dev/null @@ -1,44 +0,0 @@ -package org.dromara.sis.domain.bo; - -import io.github.linpeilie.annotations.AutoMapper; -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.SisAuthRecord; - -import java.util.List; - -/** - * 授权记录业务对象 sis_auth_record - * - * @author lxj - * @since 2025-06-28 - */ -@Data -@EqualsAndHashCode(callSuper = true) -@AutoMapper(target = SisAuthRecord.class, reverseConvertGenerate = false) -public class SingleAuthRecordBo extends BaseEntity { - - - /** - * 图像库Id - */ - @NotNull(message = "图像库Id不能为空", groups = {AddGroup.class, EditGroup.class}) - private Long libId; - - /** - * 图像id列表 - */ - @NotNull(message = "图像id列表不能为空", groups = {AddGroup.class, EditGroup.class}) - private Long imgId; - - /** - * 门禁id列表 - */ - @NotNull(message = "门禁id列表能为空", groups = {AddGroup.class, EditGroup.class}) - private List acIds; - -} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisAuthRecordBo.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisAuthRecordBo.java index 13fd3d4e..555c120f 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisAuthRecordBo.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisAuthRecordBo.java @@ -35,14 +35,8 @@ public class SisAuthRecordBo extends BaseEntity { private Long libId; /** - * 门禁idList + * 授权设备idList */ - @NotEmpty(message = "门禁idList不能为空", groups = {AddGroup.class, EditGroup.class}) - private Collection acIdList; - - /** - * 电梯idList - */ - @NotEmpty(message = "电梯idList不能为空", groups = {AddGroup.class, EditGroup.class}) - private Collection eleIdList; + @NotEmpty(message = "授权设备idList不能为空", groups = {AddGroup.class, EditGroup.class}) + private Collection deviceIds; } 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 b47a346c..57c24ee3 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 @@ -1,5 +1,7 @@ package org.dromara.sis.service; +import org.dromara.common.core.domain.TreeNode; +import org.dromara.sis.domain.SisAuthRecord; import org.dromara.sis.domain.vo.SisAuthRecordVo; import org.dromara.sis.domain.bo.SisAuthRecordBo; import org.dromara.common.mybatis.core.page.TableDataInfo; @@ -65,4 +67,26 @@ public interface ISisAuthRecordService { * @return 是否删除成功 */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + /** + * 查询库id授权的设备 + * + * @param libId 人像库id + * @return List + */ + List queryAuthDevice(String libId); + + /** + * 根据人像库id删除授权记录 + * + * @param libId 人像库id + */ + Boolean deleteByLibId(Long libId); + + /** + * 查询所有可授权设备树 + * + * @return List> + */ + List> authDeviceTree(); } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisElevatorInfoService.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisElevatorInfoService.java index 657bc1df..c1ab87f9 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisElevatorInfoService.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisElevatorInfoService.java @@ -71,4 +71,12 @@ public interface ISisElevatorInfoService { * @return 返回电梯列表 */ List queryAll(); + + /** + * 根据查询列表 + * + * @param ids 电梯id + * @return 列表 + */ + List queryListByIds(Collection ids); } 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 e9534c49..f9f49304 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,6 +1,8 @@ package org.dromara.sis.service.impl; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.Assert; +import org.dromara.common.core.domain.TreeNode; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.PageQuery; @@ -9,6 +11,12 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.dromara.sis.domain.bo.SisAccessControlBo; +import org.dromara.sis.domain.bo.SisElevatorInfoBo; +import org.dromara.sis.domain.vo.SisAccessControlVo; +import org.dromara.sis.domain.vo.SisElevatorInfoVo; +import org.dromara.sis.service.ISisAccessControlService; +import org.dromara.sis.service.ISisElevatorInfoService; import org.springframework.stereotype.Service; import org.dromara.sis.domain.bo.SisAuthRecordBo; import org.dromara.sis.domain.vo.SisAuthRecordVo; @@ -34,6 +42,9 @@ public class SisAuthRecordServiceImpl implements ISisAuthRecordService { private final SisAuthRecordMapper baseMapper; + private final ISisAccessControlService accessControlService; + private final ISisElevatorInfoService elevatorInfoService; + /** * 查询授权记录 * @@ -88,27 +99,44 @@ public class SisAuthRecordServiceImpl implements ISisAuthRecordService { @Override @Transactional(rollbackFor = Exception.class) public Boolean insertByBo(SisAuthRecordBo bo) { - boolean flag = false; - log.info("开始写入门禁授权记录,acIds:{}", bo.getAcIdList()); - for (Long acId : bo.getAcIdList()) { - SisAuthRecord add = MapstructUtils.convert(bo, SisAuthRecord.class); - Assert.notNull(add, "数据处理失败"); + if (CollUtil.isEmpty(bo.getDeviceIds())) { + return false; + } - add.setDeviceType(1); - add.setDeviceId(acId); - flag = baseMapper.insert(add) > 0; + // 每次授权先删除上一次授权信息 + deleteByLibId(bo.getLibId()); + + // 过滤不是设备的节点数据 + // 门禁设备 + List acVoList = accessControlService.queryListByIds(bo.getDeviceIds()); + // 电梯设备 + List eleVoList = elevatorInfoService.queryListByIds(bo.getDeviceIds()); + if (CollUtil.isEmpty(acVoList) || CollUtil.isEmpty(eleVoList)) { + return false; + } + + // 批量写入授权数据 + boolean flag = false; + log.info("开始写入门禁授权记录,acIds:{}", acVoList); + for (SisAccessControlVo ac : acVoList) { + SisAuthRecord authRecord = new SisAuthRecord(); + + authRecord.setDeviceType(1); + authRecord.setDeviceId(ac.getId()); + authRecord.setLibId(bo.getLibId()); + flag = baseMapper.insert(authRecord) > 0; Assert.isTrue(flag, "写入门禁授权记录失败!"); } log.info("写入门禁授权记录完成"); - log.info("开始写入电梯授权记录,eleIds:{}", bo.getEleIdList()); - for (Long ele : bo.getEleIdList()) { - SisAuthRecord add = MapstructUtils.convert(bo, SisAuthRecord.class); - Assert.notNull(add, "数据处理失败"); + log.info("开始写入电梯授权记录,eleIds:{}", eleVoList); + for (SisElevatorInfoVo ele : eleVoList) { + SisAuthRecord authRecord = new SisAuthRecord(); - add.setDeviceType(2); - add.setDeviceId(ele); - flag = baseMapper.insert(add) > 0; + authRecord.setDeviceType(2); + authRecord.setLibId(bo.getLibId()); + authRecord.setDeviceId(ele.getElevatorId()); + flag = baseMapper.insert(authRecord) > 0; Assert.isTrue(flag, "写入电梯授权记录失败!"); } log.info("写入电梯授权记录完成"); @@ -150,4 +178,91 @@ public class SisAuthRecordServiceImpl implements ISisAuthRecordService { } return baseMapper.deleteByIds(ids) > 0; } + + /** + * 查询库id授权的设备 + * + * @param libId 人像库id + * @return List + */ + @Override + public List queryAuthDevice(String libId) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(SisAuthRecord::getLibId, libId); + return baseMapper.selectList(lqw); + } + + /** + * 根据人像库id删除授权记录 + * + * @param libId 人像库id + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean deleteByLibId(Long libId){ + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(SisAuthRecord::getLibId, libId); + return baseMapper.delete(lqw) > 0; + } + + /** + * 查询所有可授权设备树 + * + * @return List> + */ + @Override + public List> authDeviceTree(){ + // 暂时将所有数据放入写死的根节点中 + TreeNode root = new TreeNode<>(); + root.setLevel(0); + root.setCode(0L); + root.setParentCode(-1L); + root.setLabel("授权设备"); + + // 创建门禁设备父节点 + TreeNode accessNode = new TreeNode<>(); + accessNode.setLevel(1); + accessNode.setCode(1L); + accessNode.setParentCode(0L); + accessNode.setLabel("门禁设备"); + + // 创建电梯父节点 + TreeNode elevatorNode = new TreeNode<>(); + elevatorNode.setLevel(1); + elevatorNode.setCode(2L); + elevatorNode.setParentCode(0L); + elevatorNode.setLabel("电梯设备"); + + + List acVoList = accessControlService.queryList(new SisAccessControlBo()); + List eleVoList = elevatorInfoService.queryList(new SisElevatorInfoBo()); + + + + List> acChildrenList = acVoList.stream().map(item -> { + TreeNode node = new TreeNode<>(); + node.setLevel(2); + node.setCode(item.getId()); + node.setParentCode(1L); + node.setLabel(item.getAccessName()); + return node; + }).toList(); + + List> eleChildrenList = eleVoList.stream().map(item -> { + TreeNode node = new TreeNode<>(); + node.setLevel(2); + node.setCode(item.getElevatorId()); + node.setParentCode(2L); + node.setLabel(item.getElevatorName()); + return node; + }).toList(); + + // 将子节点列表分别添加到对应的父节点 + accessNode.setChildren(acChildrenList); + elevatorNode.setChildren(eleChildrenList); + + // 最后将两个父节点添加到根节点 + root.setChildren(List.of(accessNode, elevatorNode)); + return List.of(root); + } } 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 139b88ee..78363c16 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 @@ -253,4 +253,15 @@ public class SisElevatorInfoServiceImpl implements ISisElevatorInfoService { public List queryAll() { return baseMapper.selectVoList(); } + + /** + * 根据查询列表 + * + * @param ids 电梯id + * @return 列表 + */ + @Override + public List queryListByIds(Collection ids){ + return baseMapper.selectVoByIds(ids); + } }