diff --git a/ruoyi-common/ruoyi-common-mybatis/pom.xml b/ruoyi-common/ruoyi-common-mybatis/pom.xml
index 77a8830..e7f23b1 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
+
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);