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 deedca3..5c1ffd3 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 0000000..fba3435 --- /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 0000000..58cb31c --- /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 374aac7..dff314c 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 0000000..0ae1cf2 --- /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 0000000..b879ff6 --- /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 c6d8198..34e9408 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 12abb3e..fecd566 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 0000000..4a358dc --- /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 0000000..58ec57f --- /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 fa319b0..08f7c2c 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 0000000..cebf831 --- /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 f12edb0..6b5910b 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 0000000..92dddbb --- /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 af0c761..d84cd11 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 0000000..c93e65f --- /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 22ef184..33f426f 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 0000000..39834a1 --- /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 0000000..145d95d --- /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 9191c6a..70c3421 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 e563aaa..4fb556a 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 0000000..4c7e37a --- /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 0000000..23d1b1e --- /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 0d7b725..02c8aa4 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 0000000..9a3e4a6 --- /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 0000000..1631223 --- /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 e7a9269..adf8c12 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 9f5d7c0..8ad22b2 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); + + } + }); + } }