diff --git a/web-infrastructure/src/main/java/com/zcloud/primeport/plan/mjDevice/TwoCarUtil.java b/web-infrastructure/src/main/java/com/zcloud/primeport/plan/mjDevice/TwoCarUtil.java index 76e92b4..7566537 100644 --- a/web-infrastructure/src/main/java/com/zcloud/primeport/plan/mjDevice/TwoCarUtil.java +++ b/web-infrastructure/src/main/java/com/zcloud/primeport/plan/mjDevice/TwoCarUtil.java @@ -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 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); } }