修改巡检任务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")
public TableDataInfo<InspectionTaskVo> list(InspectionTaskBo bo, PageQuery pageQuery) {
return inspectionTaskService.queryPageList(bo, pageQuery);

View File

@ -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;
/**
* 巡检方式
*/

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;
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<InspectionTaskVo> queryPageList(InspectionTaskBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<InspectionTask> lqw = buildQueryWrapper(bo);
Page<InspectionTaskVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
if (result.getRecords().size() > 0) {
addPlanNameInfo(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.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<InspectionPlanVo> inspectionPlanVoList = inspectionPlanService.queryList(inspectionPlanBo);
// 如果没有有效计划直接返回
if (ObjectUtil.isEmpty(inspectionPlanVoList)) {
return;
}
// 处理每个巡检计划
inspectionPlanVoList.forEach(plan -> {
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);
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<String> 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<String> 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);