车辆临时修改

This commit is contained in:
GUO 2024-05-27 20:21:03 +08:00
parent 79a76b9c3c
commit c7fd8184fe
3 changed files with 48 additions and 30 deletions

View File

@ -1454,8 +1454,8 @@ public class HikvisionCall {
JSONArray ja = categorySearch(project);
String categoryCode = getFixedCarGroupName(ja);
if (StringUtils.isBlank(categoryCode)) {
log.error("获取固定车的categoryCode失败:车牌号:{}", carInfo.getCarNumber());
throw new OpenPromptException("获取固定车的categoryCode失败");
log.error("获取固定车的群组失败:车牌号:{}", carInfo.getCarNumber());
throw new OpenPromptException("获取固定车的群组失败");
}
return categoryCode;
}

View File

@ -1,7 +1,6 @@
package com.zhgd.xmgl.modules.car.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@ -22,8 +21,6 @@ import com.zhgd.xmgl.modules.project.entity.Project;
import com.zhgd.xmgl.modules.project.mapper.ProjectMapper;
import com.zhgd.xmgl.modules.worker.mapper.WorkerInfoMapper;
import com.zhgd.xmgl.modules.worker.service.impl.EnterpriseInfoServiceImpl;
import com.zhgd.xmgl.modules.car.entity.CarInfoApprovalFlow;
import com.zhgd.xmgl.modules.car.mapper.CarInfoApprovalFlowMapper;
import com.zhgd.xmgl.util.MapBuilder;
import com.zhgd.xmgl.util.MessageUtil;
import com.zhgd.xmgl.util.PageUtil;
@ -33,10 +30,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.*;
/**
* @Description: 车辆黑白名单管理
@ -90,6 +84,7 @@ public class CarInfoServiceImpl extends ServiceImpl<CarInfoMapper, CarInfo> impl
@Override
public void addCarInfo(CarInfo c) {
checkTime(c);
QueryWrapper<CarInfo> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(CarInfo::getProjectSn, c.getProjectSn())
.eq(CarInfo::getCarNumber, c.getCarNumber());
@ -99,6 +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);
}
} else {
carInfoMapper.insert(c);
//同步海康
@ -106,6 +111,12 @@ public class CarInfoServiceImpl extends ServiceImpl<CarInfoMapper, CarInfo> impl
}
}
private void checkTime(CarInfo c) {
if (!Objects.equals(c.getCarModuleType(), 1) && DateUtil.compare(c.getReserveEndTime(), new Date()) < 0) {
throw new OpenAlertException("预约时间已过期");
}
}
/**
* 审批流添加临时车辆
*
@ -115,29 +126,19 @@ public class CarInfoServiceImpl extends ServiceImpl<CarInfoMapper, CarInfo> impl
CarInfoApprovalFlow flow = new CarInfoApprovalFlow();
BeanUtil.copyProperties(c, flow);
carInfoApprovalFlowMapper.insert(flow);
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);
}
}
@Override
public void deleteOrUpdateExpiredCar(Project project, CarInfo expiredCar) {
log.info("删除/更新过期的车辆,并下发新的预约时间的车辆到海康,车牌号:{}", expiredCar.getCarNumber());
List<CarInfoApprovalFlow> approvalFlowCars = carInfoApprovalFlowMapper.selectList(new LambdaQueryWrapper<CarInfoApprovalFlow>()
CarInfoApprovalFlow flow = carInfoApprovalFlowMapper.selectOne(new LambdaQueryWrapper<CarInfoApprovalFlow>()
.eq(CarInfoApprovalFlow::getCarNumber, expiredCar.getCarNumber())
.eq(CarInfoApprovalFlow::getProjectSn, project.getProjectSn())
.gt(CarInfoApprovalFlow::getReserveEndTime, DateUtil.now())
.orderByAsc(CarInfoApprovalFlow::getReserveStartTime)
.last("limit 1")
);
if (CollUtil.isNotEmpty(approvalFlowCars)) {
CarInfoApprovalFlow flow = approvalFlowCars.get(0);
if (flow != null) {
expiredCar.setReserveEndTime(flow.getReserveEndTime());
expiredCar.setReserveStartTime(flow.getReserveStartTime());
this.editCarInfo(expiredCar);
@ -148,6 +149,7 @@ public class CarInfoServiceImpl extends ServiceImpl<CarInfoMapper, CarInfo> impl
@Override
public void editCarInfo(CarInfo carInfo) {
checkTime(carInfo);
QueryWrapper<CarInfo> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(CarInfo::getProjectSn, carInfo.getProjectSn())
.eq(CarInfo::getCarNumber, carInfo.getCarNumber())
@ -230,15 +232,31 @@ public class CarInfoServiceImpl extends ServiceImpl<CarInfoMapper, CarInfo> impl
@Override
public void delete(Map<String, Object> map) {
CarInfo carInfo = getById(MapUtils.getString(map, "id"));
String id = MapUtils.getString(map, "id");
CarInfo carInfo = getById(id);
if (carInfo == null) {
throw new OpenAlertException(MessageUtil.get("notFindErr"));
}
String id = MapUtils.getString(map, "id");
carInfoMapper.deleteById(id);
if (Objects.equals(carInfo.getCarModuleType(), 1)) {
carInfoMapper.deleteById(id);
//同步海康
asyncHikvision.deleteCarInfoForHikvision(carInfo);
} else {
deleteFromApprovalFlowIf(carInfo);
Project project = projectMapper.selectOne(new LambdaQueryWrapper<Project>().eq(Project::getSyncHikvision, 1));
deleteOrUpdateExpiredCar(project, carInfo);
}
}
//同步海康
asyncHikvision.deleteCarInfoForHikvision(carInfo);
private void deleteFromApprovalFlowIf(CarInfo carInfo) {
if (!Objects.equals(carInfo.getCarModuleType(), 1)) {
carInfoApprovalFlowMapper.delete(new LambdaQueryWrapper<CarInfoApprovalFlow>()
.eq(CarInfoApprovalFlow::getReserveStartTime, carInfo.getReserveStartTime())
.eq(CarInfoApprovalFlow::getReserveEndTime, carInfo.getReserveEndTime())
.eq(CarInfoApprovalFlow::getProjectSn, carInfo.getProjectSn())
.eq(CarInfoApprovalFlow::getCarNumber, carInfo.getCarNumber())
);
}
}
@Override

View File

@ -40,15 +40,15 @@ public class CarInfoTask {
public void deleteOrUpdateExpiredCar() {
List<Project> projects = projectMapper.selectList(new LambdaQueryWrapper<Project>().eq(Project::getSyncHikvision, 1));
for (Project project : projects) {
List<CarInfo> carInfos = carInfoMapper.selectList(new LambdaQueryWrapper<CarInfo>()
List<CarInfo> expiredCars = carInfoMapper.selectList(new LambdaQueryWrapper<CarInfo>()
.ne(CarInfo::getCarModuleType, 1)
.eq(CarInfo::getProjectSn, project.getProjectSn())
.lt(CarInfo::getReserveEndTime, DateUtil.now())
);
if (CollUtil.isEmpty(carInfos)) {
if (CollUtil.isEmpty(expiredCars)) {
return;
}
for (CarInfo carInfo : carInfos) {
for (CarInfo carInfo : expiredCars) {
carInfoService.deleteOrUpdateExpiredCar(project, carInfo);
}
}