67 lines
2.5 KiB
Java
Raw Normal View History

2024-05-27 18:25:07 +08:00
package com.zhgd.xmgl.task;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zhgd.xmgl.modules.car.entity.CarInfo;
2024-05-28 15:14:02 +08:00
import com.zhgd.xmgl.modules.car.entity.CarInfoApprovalFlow;
2024-05-27 22:58:57 +08:00
import com.zhgd.xmgl.modules.car.mapper.CarInfoApprovalFlowMapper;
2024-05-27 18:25:07 +08:00
import com.zhgd.xmgl.modules.car.mapper.CarInfoMapper;
import com.zhgd.xmgl.modules.car.service.impl.CarInfoServiceImpl;
import com.zhgd.xmgl.modules.project.entity.Project;
import com.zhgd.xmgl.modules.project.mapper.ProjectMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.List;
@Slf4j
@Component
public class CarInfoTask {
@Lazy
@Autowired
private CarInfoServiceImpl carInfoService;
@Lazy
@Autowired
private CarInfoMapper carInfoMapper;
@Lazy
@Autowired
private ProjectMapper projectMapper;
@Lazy
@Autowired
private CarInfoApprovalFlowMapper carInfoApprovalFlowMapper;
/**
* 定时删除/更新过期的车辆,并下发新的预约时间的车辆到海康
*/
@Scheduled(cron = "*/30 * * * * ?")
public void deleteOrUpdateExpiredCar() {
2024-05-28 15:14:02 +08:00
//删除过期
carInfoApprovalFlowMapper.delete(new LambdaQueryWrapper<CarInfoApprovalFlow>()
2024-05-29 14:16:17 +08:00
.lt(CarInfoApprovalFlow::getReserveEndTime, DateUtil.now())
.eq(CarInfoApprovalFlow::getIsBlack, 0)
);
2024-05-27 18:25:07 +08:00
List<Project> projects = projectMapper.selectList(new LambdaQueryWrapper<Project>().eq(Project::getSyncHikvision, 1));
for (Project project : projects) {
2024-05-27 22:58:57 +08:00
//过期或者未来车
List<CarInfo> cars = carInfoMapper.selectList(new LambdaQueryWrapper<CarInfo>()
2024-05-27 18:25:07 +08:00
.ne(CarInfo::getCarModuleType, 1)
2024-05-29 14:16:17 +08:00
.eq(CarInfo::getIsBlack, 0)
2024-05-27 18:25:07 +08:00
.eq(CarInfo::getProjectSn, project.getProjectSn())
2024-05-27 22:58:57 +08:00
.and(w -> w.lt(CarInfo::getReserveEndTime, DateUtil.now()).or().gt(CarInfo::getReserveStartTime, DateUtil.now()))
2024-05-27 18:25:07 +08:00
);
2024-05-27 22:58:57 +08:00
if (CollUtil.isEmpty(cars)) {
2024-05-27 18:25:07 +08:00
return;
}
2024-05-27 22:58:57 +08:00
for (CarInfo carInfo : cars) {
2024-05-29 14:16:17 +08:00
carInfoService.deleteOrUpdateCar(project, carInfo, false);
2024-05-27 18:25:07 +08:00
}
}
}
}