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 008745d..c289cf2 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 33f426f..442448f 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 0000000..0fdb163 --- /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 ee1c7f5..8c0d026 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 8ad22b2..8801e23 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);