refactor: 优化二级门禁车辆审批流程

增加内部车和临时车的一级门禁查询逻辑
koumen
lishiwei 2026-05-14 10:46:36 +08:00
parent 74a55d82b2
commit f2b0ea637a
1 changed files with 51 additions and 16 deletions

View File

@ -5,6 +5,7 @@ import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import com.zcloud.gbscommon.dahuaDevice.DaHuaDeviceCommon;
import com.zcloud.gbscommon.dahuaDevice.DhuaConfig;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.zcloud.gbscommon.hkDevice.HKDeviceUtil;
import com.zcloud.gbscommon.utils.DateUtil;
import com.zcloud.gbscommon.utils.Tools;
@ -13,8 +14,10 @@ import com.zcloud.gbscommon.zclouduser.request.ZcloudUserImgQry;
import com.zcloud.gbscommon.zclouduser.response.ZcloudUserImgBase64Co;
import com.zcloud.primeport.persistence.dataobject.ClosedAreaCarApplyDO;
import com.zcloud.primeport.persistence.dataobject.ClosedAreaPersonApplyDO;
import com.zcloud.primeport.persistence.dataobject.VehicleApplyDO;
import com.zcloud.primeport.persistence.repository.ClosedAreaCarApplyRepository;
import com.zcloud.primeport.persistence.repository.ClosedAreaPersonApplyRepository;
import com.zcloud.primeport.persistence.repository.VehicleApplyRepository;
import com.zcloud.primeport.plan.mjDevice.dto.CarEnum;
import com.zcloud.primeport.plan.mjDevice.dto.OneLevelCarSaveDto;
import com.zcloud.primeport.plan.mjDevice.dto.TwoLevelCar;
@ -36,6 +39,10 @@ import java.util.stream.Collectors;
public class TwoCarUtil {
@Resource
private ClosedAreaCarApplyRepository closedAreaCarApplyRepository;
@Resource
private VehicleApplyRepository vehicleApplyRepository;
@Resource
private OneLevelCarUtil oneLevelCarUtil;
private static Integer dockFlag = 0;
@ -47,7 +54,7 @@ public class TwoCarUtil {
/**
* id
* () + ()
* /
*
*/
public void levelTwoCarCompanyByApplyId(Long applyId) {
if (!dockFlag.equals(1)) return;
@ -59,22 +66,50 @@ public class TwoCarUtil {
} else {
dockFgsCarLevelTwo(byId.getLicenceNo());
}
// 一级门禁(车行系统)同步 — 仅临时/相关方车需要开通一级临时权限
// 内部车(1股份/2分公司/5分公司内部)已有独立的一级权限管理,不操作避免覆盖
// 一级门禁(车行系统)同步 — 先查vehicle_apply表该车是否有有效权限没有再新增
dockOneLevelCar(byId, carBelongType);
}
/**
*
* vehicle_apply
*
*/
private void dockOneLevelCar(ClosedAreaCarApplyDO byId, Integer carBelongType) {
// 在vehicle_apply表查该车牌是否有审核通过的长期/有效权限
// 条件:审核通过(2)或无需审批(4)、有进出港权限(1)、当前在访问时间内
String today = DateUtil.date2Str(new Date(), "yyyy-MM-dd");
QueryWrapper<VehicleApplyDO> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("licence_no", byId.getLicenceNo());
queryWrapper.in("audit_flag", 2, 4);
queryWrapper.eq("mkmj_permission", 1);
queryWrapper.le("visit_start_time", today);
queryWrapper.ge("visit_end_time", today);
if (!vehicleApplyRepository.list(queryWrapper).isEmpty()) {
// vehicle_apply已有有效权限 → 不覆盖
return;
}
// 无有效权限 → 走新增逻辑
OneLevelCarSaveDto saveDto = new OneLevelCarSaveDto();
saveDto.setTruckNo(byId.getLicenceNo());
saveDto.setTruckCardColor(byId.getLicenceType());
saveDto.setTruckTypCod(CarEnum.getMenuKeyByPath(byId.getVehicleType()));
saveDto.setPortId("0");
saveDto.setDriverNam(byId.getDrivingUserName());
saveDto.setLinkTel(byId.getUserPhone());
saveDto.setValidDte(today);
saveDto.setRecTim(DateUtil.date2Str(new Date()));
saveDto.setYqlCheckFlag("1");
saveDto.setIsNeedCheck("0");
if (carBelongType.equals(3) || carBelongType.equals(4)) {
OneLevelCarSaveDto oneLevelCarSaveDto = new OneLevelCarSaveDto();
oneLevelCarSaveDto.setTruckNo(byId.getLicenceNo());
oneLevelCarSaveDto.setTruckCardColor(byId.getLicenceType());
oneLevelCarSaveDto.setTruckTypCod(CarEnum.getMenuKeyByPath(byId.getVehicleType()));
// todo 待确定到底是东港还是西港
oneLevelCarSaveDto.setPortId("0");
oneLevelCarSaveDto.setDriverNam(byId.getDrivingUserName());
oneLevelCarSaveDto.setLinkTel(byId.getUserPhone());
oneLevelCarSaveDto.setValidDte(DateUtil.date2Str(new Date(),"yyyy-MM-dd"));
oneLevelCarSaveDto.setRecTim(DateUtil.date2Str(new Date()));
oneLevelCarSaveDto.setYqlCheckFlag("1");
oneLevelCarSaveDto.setIsNeedCheck("0");
tmpVehicleSave(oneLevelCarSaveDto);
// 临时车(4)和相关方(3) → 临时车辆保存
tmpVehicleSave(saveDto);
} else {
// 其他类型(1股份/2分公司/5分公司内部) → 内部车辆保存
oneLevelCarUtil.internalVehicleSave(saveDto);
}
}