diff --git a/src/main/java/com/zhgd/xmgl/modules/car/service/ICarInfoService.java b/src/main/java/com/zhgd/xmgl/modules/car/service/ICarInfoService.java index 23c9d00ed..80abfb02b 100644 --- a/src/main/java/com/zhgd/xmgl/modules/car/service/ICarInfoService.java +++ b/src/main/java/com/zhgd/xmgl/modules/car/service/ICarInfoService.java @@ -2,7 +2,6 @@ package com.zhgd.xmgl.modules.car.service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; -import com.zhgd.jeecg.common.api.vo.Result; import com.zhgd.xmgl.modules.car.entity.CarInfo; import com.zhgd.xmgl.modules.car.entity.vo.CountCarModuleTypeVo; import com.zhgd.xmgl.modules.project.entity.Project; @@ -24,7 +23,7 @@ public interface ICarInfoService extends IService { void addCarInfo(CarInfo carInfo); - void deleteOrUpdateExpiredCar(Project project, CarInfo carInfo); + void deleteOrUpdateCar(Project project, CarInfo carInfo); void editCarInfo(CarInfo carInfo); diff --git a/src/main/java/com/zhgd/xmgl/modules/car/service/impl/CarInfoServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/car/service/impl/CarInfoServiceImpl.java index 6e757b83a..8c3d1bb1c 100644 --- a/src/main/java/com/zhgd/xmgl/modules/car/service/impl/CarInfoServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/car/service/impl/CarInfoServiceImpl.java @@ -94,16 +94,16 @@ public class CarInfoServiceImpl extends ServiceImpl impl throw new OpenAlertException("该车辆已添加,请勿重复添加!"); } addCarInfoForApprovalFlow(c); - CarInfo expiredCar = carInfoMapper.selectOne(new LambdaQueryWrapper() - .ne(CarInfo::getCarModuleType, 1) - .eq(CarInfo::getCarNumber, c.getCarNumber()) - .eq(CarInfo::getProjectSn, c.getProjectSn()) - .lt(CarInfo::getReserveEndTime, DateUtil.now()) - ); - if (expiredCar != null) { - Project project = projectMapper.selectOne(new LambdaQueryWrapper().eq(Project::getSyncHikvision, 1)); - deleteOrUpdateExpiredCar(project, expiredCar); + Date now = new Date(); + if (DateUtil.compare(carInfo.getReserveStartTime(), now) < 0 && DateUtil.compare(carInfo.getReserveEndTime(), now) > 0) { + log.info("车辆在有效期内,不需要更新,车牌号:{}", c.getCarNumber()); + return; } + Project project = projectMapper.selectOne(new LambdaQueryWrapper().eq(Project::getSyncHikvision, 1)); + if (project == null) { + return; + } + deleteOrUpdateCar(project, carInfo); } else { carInfoMapper.insert(c); //同步海康 @@ -128,22 +128,31 @@ public class CarInfoServiceImpl extends ServiceImpl impl carInfoApprovalFlowMapper.insert(flow); } + /** + * 过期或者未来车的更新或者删除 + * + * @param project + * @param car + */ @Override - public void deleteOrUpdateExpiredCar(Project project, CarInfo expiredCar) { - log.info("删除/更新过期的车辆,并下发新的预约时间的车辆到海康,车牌号:{}", expiredCar.getCarNumber()); - CarInfoApprovalFlow flow = carInfoApprovalFlowMapper.selectOne(new LambdaQueryWrapper() - .eq(CarInfoApprovalFlow::getCarNumber, expiredCar.getCarNumber()) + public void deleteOrUpdateCar(Project project, CarInfo car) { + log.info("删除/更新过期或未来的车辆,并下发新的预约时间的车辆到海康,车牌号:{}", car.getCarNumber()); + CarInfoApprovalFlow fit = carInfoApprovalFlowMapper.selectOne(new LambdaQueryWrapper() + .eq(CarInfoApprovalFlow::getCarNumber, car.getCarNumber()) .eq(CarInfoApprovalFlow::getProjectSn, project.getProjectSn()) .gt(CarInfoApprovalFlow::getReserveEndTime, DateUtil.now()) .orderByAsc(CarInfoApprovalFlow::getReserveStartTime) .last("limit 1") ); - if (flow != null) { - expiredCar.setReserveEndTime(flow.getReserveEndTime()); - expiredCar.setReserveStartTime(flow.getReserveStartTime()); - this.editCarInfo(expiredCar); + if (fit != null) { + boolean notEqTime = DateUtil.compare(car.getReserveStartTime(), fit.getReserveStartTime()) != 0 || DateUtil.compare(car.getReserveEndTime(), fit.getReserveEndTime()) != 0; + if (notEqTime) { + car.setReserveEndTime(fit.getReserveEndTime()); + car.setReserveStartTime(fit.getReserveStartTime()); + this.editCarInfo(car); + } } else { - deleteCar(expiredCar); + deleteCar(car); } } @@ -240,9 +249,10 @@ public class CarInfoServiceImpl extends ServiceImpl impl if (Objects.equals(carInfo.getCarModuleType(), 1)) { deleteCar(carInfo); } else { + carInfoMapper.deleteById(carInfo.getId()); deleteFromApprovalFlowIf(carInfo); Project project = projectMapper.selectOne(new LambdaQueryWrapper().eq(Project::getSyncHikvision, 1)); - deleteOrUpdateExpiredCar(project, carInfo); + deleteOrUpdateCar(project, carInfo); } } diff --git a/src/main/java/com/zhgd/xmgl/task/CarInfoTask.java b/src/main/java/com/zhgd/xmgl/task/CarInfoTask.java index d583e57d2..595c71dd6 100644 --- a/src/main/java/com/zhgd/xmgl/task/CarInfoTask.java +++ b/src/main/java/com/zhgd/xmgl/task/CarInfoTask.java @@ -4,11 +4,11 @@ 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; +import com.zhgd.xmgl.modules.car.mapper.CarInfoApprovalFlowMapper; 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 com.zhgd.xmgl.modules.car.mapper.CarInfoApprovalFlowMapper; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; @@ -40,16 +40,17 @@ public class CarInfoTask { public void deleteOrUpdateExpiredCar() { List projects = projectMapper.selectList(new LambdaQueryWrapper().eq(Project::getSyncHikvision, 1)); for (Project project : projects) { - List expiredCars = carInfoMapper.selectList(new LambdaQueryWrapper() + //过期或者未来车 + List cars = carInfoMapper.selectList(new LambdaQueryWrapper() .ne(CarInfo::getCarModuleType, 1) .eq(CarInfo::getProjectSn, project.getProjectSn()) - .lt(CarInfo::getReserveEndTime, DateUtil.now()) + .and(w -> w.lt(CarInfo::getReserveEndTime, DateUtil.now()).or().gt(CarInfo::getReserveStartTime, DateUtil.now())) ); - if (CollUtil.isEmpty(expiredCars)) { + if (CollUtil.isEmpty(cars)) { return; } - for (CarInfo carInfo : expiredCars) { - carInfoService.deleteOrUpdateExpiredCar(project, carInfo); + for (CarInfo carInfo : cars) { + carInfoService.deleteOrUpdateCar(project, carInfo); } }