From c7fd8184fe2bbfc3d7f84688cdfcd01d8714883b Mon Sep 17 00:00:00 2001 From: GUO <1923636941@qq.com> Date: Mon, 27 May 2024 20:21:03 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BD=A6=E8=BE=86=E4=B8=B4=E6=97=B6=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/zhgd/xmgl/call/HikvisionCall.java | 4 +- .../car/service/impl/CarInfoServiceImpl.java | 68 ++++++++++++------- .../java/com/zhgd/xmgl/task/CarInfoTask.java | 6 +- 3 files changed, 48 insertions(+), 30 deletions(-) diff --git a/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java b/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java index cc41430ae..6073b2dd7 100644 --- a/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java +++ b/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java @@ -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; } 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 014653224..7ea76009f 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 @@ -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 impl @Override public void addCarInfo(CarInfo c) { + checkTime(c); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().eq(CarInfo::getProjectSn, c.getProjectSn()) .eq(CarInfo::getCarNumber, c.getCarNumber()); @@ -99,6 +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); + } } else { carInfoMapper.insert(c); //同步海康 @@ -106,6 +111,12 @@ public class CarInfoServiceImpl extends ServiceImpl 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 impl CarInfoApprovalFlow flow = new CarInfoApprovalFlow(); BeanUtil.copyProperties(c, flow); carInfoApprovalFlowMapper.insert(flow); - 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); - } } @Override public void deleteOrUpdateExpiredCar(Project project, CarInfo expiredCar) { log.info("删除/更新过期的车辆,并下发新的预约时间的车辆到海康,车牌号:{}", expiredCar.getCarNumber()); - List approvalFlowCars = carInfoApprovalFlowMapper.selectList(new LambdaQueryWrapper() + CarInfoApprovalFlow flow = carInfoApprovalFlowMapper.selectOne(new LambdaQueryWrapper() .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 impl @Override public void editCarInfo(CarInfo carInfo) { + checkTime(carInfo); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().eq(CarInfo::getProjectSn, carInfo.getProjectSn()) .eq(CarInfo::getCarNumber, carInfo.getCarNumber()) @@ -230,15 +232,31 @@ public class CarInfoServiceImpl extends ServiceImpl impl @Override public void delete(Map 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().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() + .eq(CarInfoApprovalFlow::getReserveStartTime, carInfo.getReserveStartTime()) + .eq(CarInfoApprovalFlow::getReserveEndTime, carInfo.getReserveEndTime()) + .eq(CarInfoApprovalFlow::getProjectSn, carInfo.getProjectSn()) + .eq(CarInfoApprovalFlow::getCarNumber, carInfo.getCarNumber()) + ); + } } @Override diff --git a/src/main/java/com/zhgd/xmgl/task/CarInfoTask.java b/src/main/java/com/zhgd/xmgl/task/CarInfoTask.java index d5476d92d..d583e57d2 100644 --- a/src/main/java/com/zhgd/xmgl/task/CarInfoTask.java +++ b/src/main/java/com/zhgd/xmgl/task/CarInfoTask.java @@ -40,15 +40,15 @@ public class CarInfoTask { public void deleteOrUpdateExpiredCar() { List projects = projectMapper.selectList(new LambdaQueryWrapper().eq(Project::getSyncHikvision, 1)); for (Project project : projects) { - List carInfos = carInfoMapper.selectList(new LambdaQueryWrapper() + List expiredCars = carInfoMapper.selectList(new LambdaQueryWrapper() .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); } }