修改巡检任务bug
Some checks are pending
Gitea Actions Demo / Explore-Gitea-Actions (push) Waiting to run

This commit is contained in:
yuyongle 2025-07-15 11:52:38 +08:00
parent 8b340c9e95
commit 54655ae6d6
5 changed files with 86 additions and 32 deletions

View File

@ -40,7 +40,7 @@ public class InspectionTaskController extends BaseController {
/** /**
* 查询巡检任务列表 * 查询巡检任务列表
*/ */
@SaCheckPermission("property:inspectionTask:list") // @SaCheckPermission("property:inspectionTask:list")
@GetMapping("/list") @GetMapping("/list")
public TableDataInfo<InspectionTaskVo> list(InspectionTaskBo bo, PageQuery pageQuery) { public TableDataInfo<InspectionTaskVo> list(InspectionTaskBo bo, PageQuery pageQuery) {
return inspectionTaskService.queryPageList(bo, pageQuery); return inspectionTaskService.queryPageList(bo, pageQuery);

View File

@ -42,6 +42,11 @@ public class InspectionTaskVo implements Serializable {
@ExcelProperty(value = "巡检计划id") @ExcelProperty(value = "巡检计划id")
private Long inspectionPlanId; private Long inspectionPlanId;
/**
* 巡检计划名称
*/
private String planName;
/** /**
* 实际巡检时间 * 实际巡检时间
*/ */
@ -54,6 +59,12 @@ public class InspectionTaskVo implements Serializable {
@ExcelProperty(value = "当前巡检人") @ExcelProperty(value = "当前巡检人")
private Long actUserId; private Long actUserId;
/**
* 巡检人名称
*/
@ExcelProperty(value = "巡检人名称")
private Long actUserName;
/** /**
* 巡检方式 * 巡检方式
*/ */

View File

@ -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<InspectionTask> {
}

View File

@ -1,24 +1,31 @@
package org.dromara.property.service.impl; 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.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; 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.bo.InspectionTaskBo;
import org.dromara.property.domain.vo.InspectionTaskVo; 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.mapper.InspectionTaskMapper;
import org.dromara.property.service.IInspectionTaskService; 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.List;
import java.util.Map; 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业务层处理 * 巡检任务Service业务层处理
@ -32,6 +39,8 @@ import java.util.Collection;
public class InspectionTaskServiceImpl implements IInspectionTaskService { public class InspectionTaskServiceImpl implements IInspectionTaskService {
private final InspectionTaskMapper baseMapper; private final InspectionTaskMapper baseMapper;
@Autowired
private final InspectionPlanMapper inspectionPlanMapper;
/** /**
* 查询巡检任务 * 查询巡检任务
@ -55,9 +64,21 @@ public class InspectionTaskServiceImpl implements IInspectionTaskService {
public TableDataInfo<InspectionTaskVo> queryPageList(InspectionTaskBo bo, PageQuery pageQuery) { public TableDataInfo<InspectionTaskVo> queryPageList(InspectionTaskBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<InspectionTask> lqw = buildQueryWrapper(bo); LambdaQueryWrapper<InspectionTask> lqw = buildQueryWrapper(bo);
Page<InspectionTaskVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); Page<InspectionTaskVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
if (result.getRecords().size() > 0) {
addPlanNameInfo(result);
}
return TableDataInfo.build(result); return TableDataInfo.build(result);
} }
private void addPlanNameInfo(Page<InspectionTaskVo> inspectionTaskVoPage) {
// 提取用户userId方便批量查询
Set<Long> planIds = inspectionTaskVoPage.getRecords().stream().map(InspectionTaskVo::getInspectionPlanId).collect(toSet());
// 根据planId查询planName
List<InspectionPlan> inspectionPlanList = inspectionPlanMapper.selectList(Wrappers.lambdaQuery(InspectionPlan.class).in(InspectionPlan::getId, planIds));
// 构造映射关系方便匹配planId与planName
Map<Long, String> hashMap = inspectionPlanList.stream().collect(toMap(InspectionPlan::getId, InspectionPlan::getPlanName));
// 将查询补充的信息添加到Vo中
inspectionTaskVoPage.getRecords().forEach(e -> e.setPlanName(hashMap.get(e.getInspectionPlanId())));
}
/** /**
* 查询符合条件的巡检任务列表 * 查询符合条件的巡检任务列表
* *

View File

@ -11,12 +11,16 @@ import org.dromara.property.domain.bo.InspectionPlanBo;
import org.dromara.property.domain.vo.InspectionPlanVo; import org.dromara.property.domain.vo.InspectionPlanVo;
import org.dromara.property.mapper.InspectionTaskMapper; import org.dromara.property.mapper.InspectionTaskMapper;
import org.dromara.property.service.IInspectionPlanService; 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.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.annotation.PostConstruct;
import java.util.Arrays;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
@ -30,37 +34,36 @@ import static org.dromara.property.domain.enums.InspectionPlanPeriodEnum.WEEK;
* @Date:2025/7/11 15:28 * @Date:2025/7/11 15:28
* @Description: 巡检任务定时处理器 * @Description: 巡检任务定时处理器
**/ **/
//@Component @Component
//@RequiredArgsConstructor
@Validated
@RequiredArgsConstructor @RequiredArgsConstructor
@RestController //@Validated
@RequestMapping("/task") //@RequiredArgsConstructor
//@RestController
//@RequestMapping("/task")
public class InspectionTasks { public class InspectionTasks {
private final IInspectionPlanService inspectionPlanService; private final IInspectionPlanService inspectionPlanService;
private final InspectionTaskMapper inspectionTaskMapper; private final InspectionTaskMapper inspectionTaskMapper;
// 通过巡检计划定时生成巡检任务 // 通过巡检计划定时生成巡检任务
//@Scheduled(cron = "0 0 2 * * ?") @Scheduled(cron = "0 0 2 * * ?")
//@PostConstruct @PostConstruct
@GetMapping("/taskId") //@GetMapping("/taskId")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void doInspectionPianTask() { public void doInspectionPianTask() {
// 查询所有启用状态的巡检计划 // 查询所有启用状态的巡检计划
InspectionPlanBo inspectionPlanBo = new InspectionPlanBo(); InspectionPlanBo inspectionPlanBo = new InspectionPlanBo();
inspectionPlanBo.setState("0"); inspectionPlanBo.setState("0");
List<InspectionPlanVo> inspectionPlanVoList = inspectionPlanService.queryList(inspectionPlanBo); List<InspectionPlanVo> inspectionPlanVoList = inspectionPlanService.queryList(inspectionPlanBo);
// 如果没有有效计划直接返回 // 如果没有有效计划直接返回
if (ObjectUtil.isEmpty(inspectionPlanVoList)) { if (ObjectUtil.isEmpty(inspectionPlanVoList)) {
return; return;
} }
// 处理每个巡检计划 // 处理每个巡检计划
inspectionPlanVoList.forEach(plan -> { inspectionPlanVoList.forEach(plan -> {
LambdaQueryWrapper<InspectionTask>inspectionTaskWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<InspectionTask>inspectionTaskWrapper = 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); boolean exists = inspectionTaskMapper.exists(inspectionTaskWrapper);
if(!exists){ if(!exists){
// 根据不同的巡检周期执行相应处理 // 根据不同的巡检周期执行相应处理
@ -92,16 +95,17 @@ public class InspectionTasks {
// 使用Optional安全处理可能为null的对象 // 使用Optional安全处理可能为null的对象
Optional.ofNullable(plan).ifPresent(p -> { Optional.ofNullable(plan).ifPresent(p -> {
DateTime today = DateUtil.parse((CharSequence) new Date()); DateTime today = DateUtil.date();
DateTime startDate = DateUtil.parse((CharSequence) plan.getStartDate()); DateTime startDate = DateUtil.date(plan.getStartDate());
DateTime endDate = DateUtil.parse((CharSequence) plan.getEndDate()); DateTime endDate = DateUtil.date(plan.getEndDate());
String day = DateUtil.today().split("-")[2]; String day = DateUtil.today().split("-")[2];
if(DateUtil.isIn(today, startDate, endDate)&&p.getInspectionDay().equals(day)){ List<String> inspectionDayList = Arrays.asList(p.getInspectionDay().split(","));
if(DateUtil.isIn(today, startDate, endDate)&&inspectionDayList.contains(day)){
InspectionTask task = new InspectionTask(); InspectionTask task = new InspectionTask();
task.setInspectionPlanId(p.getId()); task.setInspectionPlanId(p.getId());
task.setInspectionPlanId(p.getId()); task.setInspectionPlanId(p.getId());
task.setTaskType(plan.getSignType()); task.setTaskType(plan.getSignType());
task.setPlanInsTime(startDate+p.getEndTime()); task.setPlanInsTime(startDate+"~"+p.getEndTime());
task.setStatus("0"); task.setStatus("0");
inspectionTaskMapper.insert(task); inspectionTaskMapper.insert(task);
} }
@ -115,17 +119,17 @@ public class InspectionTasks {
// 使用Optional安全处理可能为null的对象 // 使用Optional安全处理可能为null的对象
Optional.ofNullable(plan).ifPresent(p -> { Optional.ofNullable(plan).ifPresent(p -> {
DateTime today = DateUtil.parse((CharSequence) new Date()); DateTime today = DateUtil.date();
Optional.ofNullable(DateUtil.format(DateUtil.date(), "yyyy-MM-dd")); DateTime startDate = DateUtil.date(plan.getStartDate());
DateTime startDate = DateUtil.parse((CharSequence) plan.getStartDate()); DateTime endDate = DateUtil.date(plan.getEndDate());
DateTime endDate = DateUtil.parse((CharSequence) plan.getEndDate());
String week = String.valueOf(DateUtil.dayOfWeek(DateUtil.date())); String week = String.valueOf(DateUtil.dayOfWeek(DateUtil.date()));
if(DateUtil.isIn(today, startDate, endDate)&&p.getInspectionWorkday().contains(week)) { List<String> inspectionWorkdayList = Arrays.asList(p.getInspectionWorkday().split(","));
if(DateUtil.isIn(today, startDate, endDate)&&inspectionWorkdayList.contains(week)) {
InspectionTask task = new InspectionTask(); InspectionTask task = new InspectionTask();
task.setInspectionPlanId(p.getId()); task.setInspectionPlanId(p.getId());
task.setInspectionPlanId(p.getId()); task.setInspectionPlanId(p.getId());
task.setTaskType(plan.getSignType()); task.setTaskType(plan.getSignType());
task.setPlanInsTime(startDate+p.getEndTime()); task.setPlanInsTime(startDate+"~"+p.getEndTime());
task.setStatus("0"); task.setStatus("0");
inspectionTaskMapper.insert(task); inspectionTaskMapper.insert(task);