This commit is contained in:
parent
8b340c9e95
commit
54655ae6d6
@ -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);
|
||||||
|
@ -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;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 巡检方式
|
* 巡检方式
|
||||||
*/
|
*/
|
||||||
|
@ -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> {
|
||||||
|
|
||||||
|
}
|
@ -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())));
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* 查询符合条件的巡检任务列表
|
* 查询符合条件的巡检任务列表
|
||||||
*
|
*
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user