bug修改

This commit is contained in:
GUO 2024-05-27 22:58:57 +08:00
parent be7f25d191
commit 9cccc03f48
3 changed files with 37 additions and 27 deletions

View File

@ -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<CarInfo> {
void addCarInfo(CarInfo carInfo);
void deleteOrUpdateExpiredCar(Project project, CarInfo carInfo);
void deleteOrUpdateCar(Project project, CarInfo carInfo);
void editCarInfo(CarInfo carInfo);

View File

@ -94,16 +94,16 @@ public class CarInfoServiceImpl extends ServiceImpl<CarInfoMapper, CarInfo> impl
throw new OpenAlertException("该车辆已添加,请勿重复添加!");
}
addCarInfoForApprovalFlow(c);
CarInfo expiredCar = carInfoMapper.selectOne(new LambdaQueryWrapper<CarInfo>()
.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<Project>().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<Project>().eq(Project::getSyncHikvision, 1));
if (project == null) {
return;
}
deleteOrUpdateCar(project, carInfo);
} else {
carInfoMapper.insert(c);
//同步海康
@ -128,22 +128,31 @@ public class CarInfoServiceImpl extends ServiceImpl<CarInfoMapper, CarInfo> 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<CarInfoApprovalFlow>()
.eq(CarInfoApprovalFlow::getCarNumber, expiredCar.getCarNumber())
public void deleteOrUpdateCar(Project project, CarInfo car) {
log.info("删除/更新过期或未来的车辆,并下发新的预约时间的车辆到海康,车牌号:{}", car.getCarNumber());
CarInfoApprovalFlow fit = carInfoApprovalFlowMapper.selectOne(new LambdaQueryWrapper<CarInfoApprovalFlow>()
.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<CarInfoMapper, CarInfo> impl
if (Objects.equals(carInfo.getCarModuleType(), 1)) {
deleteCar(carInfo);
} else {
carInfoMapper.deleteById(carInfo.getId());
deleteFromApprovalFlowIf(carInfo);
Project project = projectMapper.selectOne(new LambdaQueryWrapper<Project>().eq(Project::getSyncHikvision, 1));
deleteOrUpdateExpiredCar(project, carInfo);
deleteOrUpdateCar(project, carInfo);
}
}

View File

@ -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<Project> projects = projectMapper.selectList(new LambdaQueryWrapper<Project>().eq(Project::getSyncHikvision, 1));
for (Project project : projects) {
List<CarInfo> expiredCars = carInfoMapper.selectList(new LambdaQueryWrapper<CarInfo>()
//过期或者未来车
List<CarInfo> cars = carInfoMapper.selectList(new LambdaQueryWrapper<CarInfo>()
.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);
}
}