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")
|
||||
public TableDataInfo<InspectionTaskVo> list(InspectionTaskBo bo, PageQuery pageQuery) {
|
||||
return inspectionTaskService.queryPageList(bo, pageQuery);
|
||||
|
@ -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;
|
||||
|
||||
/**
|
||||
* 巡检方式
|
||||
*/
|
||||
|
@ -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;
|
||||
|
||||
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())));
|
||||
}
|
||||
/**
|
||||
* 查询符合条件的巡检任务列表
|
||||
*
|
||||
|
@ -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);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user