From cf3d293fad1da2b85c4fb39535a52f3be84d087c Mon Sep 17 00:00:00 2001 From: zhangxiongfeng Date: Thu, 6 Aug 2026 16:16:21 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=B4=E6=97=B6=E8=BD=A6=E8=BE=86=E5=AE=A1?= =?UTF-8?q?=E6=89=B9=E4=BF=AE=E6=94=B9=EF=BC=8C=E4=B8=B4=E6=97=B6=E8=BD=A6?= =?UTF-8?q?=E8=BE=86=E5=88=9B=E5=BB=BA=E4=B8=8Dbug=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../command/DaHuaVehicleSyncExe.java | 53 +++++++++++++++++-- .../primeport/command/VehicleBlackAddExe.java | 12 ++++- .../command/VehicleBlackRemoveExe.java | 21 ++++++-- .../service/VehicleApplyServiceImpl.java | 25 +++++++-- .../primeport/domain/model/VehicleApplyE.java | 4 +- .../gatewayimpl/DaHuaGatewayImpl.java | 2 - .../dataobject/VehicleApplyDO.java | 2 + .../primeport/plan/mjDevice/CarDockUtil.java | 6 +-- 8 files changed, 105 insertions(+), 20 deletions(-) diff --git a/web-app/src/main/java/com/zcloud/primeport/command/DaHuaVehicleSyncExe.java b/web-app/src/main/java/com/zcloud/primeport/command/DaHuaVehicleSyncExe.java index 0436132..bfb1ab0 100644 --- a/web-app/src/main/java/com/zcloud/primeport/command/DaHuaVehicleSyncExe.java +++ b/web-app/src/main/java/com/zcloud/primeport/command/DaHuaVehicleSyncExe.java @@ -34,12 +34,36 @@ public class DaHuaVehicleSyncExe { } log.info("同步大华车辆: vehicleApplyId={}, licenceNo={}, vehicleBelongType={}", vehicleApplyId, vehicle.getLicenceNo(), vehicle.getVehicleBelongType()); + if (isRelatedPartyVehicle(vehicle)) { log.info("识别为相关方车辆, 走addCar接口"); syncAddedVehicle(vehicle); + return; + } + + String idcard = vehicle.getLsUserIdcard(); + String decodedIdcard = null; + if (idcard != null && !idcard.isEmpty()) { + try { + decodedIdcard = Base64.decodeToString(idcard); + } catch (Exception e) { + log.warn("身份证base64解码失败: {}", e.getMessage()); + decodedIdcard = idcard; + } + } + + if (decodedIdcard != null && !decodedIdcard.isEmpty()) { + log.info("车辆有身份证号, userDahuaId={}", vehicle.getUserDahuaId()); + if (vehicle.getUserDahuaId() != null) { + log.info("userDahuaId有值, 走addCar接口, ownerId={}", vehicle.getUserDahuaId()); + syncAddedVehicleWithOwnerId(vehicle); + } else { + log.info("userDahuaId没值, 走saveTempVehicle接口"); + syncTempVehicle(vehicle); + } } else { - log.info("识别为非相关方车辆(vehicleBelongType={}), 走saveTempVehicle接口", vehicle.getVehicleBelongType()); - syncTempVehicle(vehicle); + log.info("车辆无身份证号, 走addCar接口"); + syncAddedVehicle(vehicle); } } @@ -49,7 +73,9 @@ public class DaHuaVehicleSyncExe { } List carNumList = new ArrayList<>(); for (VehicleApplyE vehicle : vehicles) { - if (isRelatedPartyVehicle(vehicle)) { + if (vehicle != null && vehicle.getLicenceNo() != null) { + log.info("同步删除大华车辆: licenceNo={}, vehicleBelongType={}", + vehicle.getLicenceNo(), vehicle.getVehicleBelongType()); carNumList.add(vehicle.getLicenceNo()); } } @@ -62,11 +88,26 @@ public class DaHuaVehicleSyncExe { checkResult(daHuaGateway.addCar(buildCarCmd(vehicle)), "新增大华车辆失败"); } + private void syncAddedVehicleWithOwnerId(VehicleApplyE vehicle) { + DaHuaCarAddCmd cmd = buildCarCmd(vehicle); + cmd.setOwnerId(vehicle.getUserDahuaId()); + checkResult(daHuaGateway.addCar(cmd), "新增大华车辆失败"); + } + private void syncTempVehicle(VehicleApplyE vehicle) { log.info("同步临时车辆到大华平台: licenceNo={}, vehicleApplyId={}", vehicle.getLicenceNo(), vehicle.getId()); - Map result = daHuaGateway.saveTempVehicle(buildTempVehicleCmd(vehicle)); + DaHuaTempVehicleSaveCmd cmd = buildTempVehicleCmd(vehicle); + Long personId = cmd.getId(); + Map result = daHuaGateway.saveTempVehicle(cmd); checkResult(result, "同步临时车辆到大华失败"); - log.info("临时车辆同步成功: licenceNo={}", vehicle.getLicenceNo()); + log.info("临时车辆同步成功: licenceNo={}, personId={}", vehicle.getLicenceNo(), personId); + if (personId != null) { + VehicleApplyE updateVehicle = new VehicleApplyE(); + updateVehicle.setId(vehicle.getId()); + updateVehicle.setUserDahuaId(personId); + vehicleApplyGateway.update(updateVehicle); + log.info("保存大华人员ID成功: vehicleApplyId={}, userDahuaId={}", vehicle.getId(), personId); + } } private DaHuaCarAddCmd buildCarCmd(VehicleApplyE vehicle) { @@ -81,6 +122,8 @@ public class DaHuaVehicleSyncExe { private DaHuaTempVehicleSaveCmd buildTempVehicleCmd(VehicleApplyE vehicle) { DaHuaTempVehicleSaveCmd cmd = new DaHuaTempVehicleSaveCmd(); + Long personId = daHuaGateway.generatePersonId(); + cmd.setId(personId); cmd.setName(vehicle.getEmployeeVehicleUserName()); String idcard = vehicle.getLsUserIdcard(); if (idcard != null && !idcard.isEmpty()) { diff --git a/web-app/src/main/java/com/zcloud/primeport/command/VehicleBlackAddExe.java b/web-app/src/main/java/com/zcloud/primeport/command/VehicleBlackAddExe.java index 51a7382..3e6234f 100644 --- a/web-app/src/main/java/com/zcloud/primeport/command/VehicleBlackAddExe.java +++ b/web-app/src/main/java/com/zcloud/primeport/command/VehicleBlackAddExe.java @@ -1,6 +1,7 @@ package com.zcloud.primeport.command; import com.alibaba.cola.exception.BizException; +import com.zcloud.primeport.domain.gateway.DaHuaGateway; import com.zcloud.primeport.domain.gateway.VehicleApplyGateway; import com.zcloud.primeport.domain.gateway.VehicleBlackGateway; import com.zcloud.primeport.domain.model.VehicleApplyE; @@ -8,10 +9,13 @@ import com.zcloud.primeport.domain.model.VehicleBlackE; import com.zcloud.primeport.dto.VehicleBlackAddCmd; import com.zcloud.primeport.plan.mjDevice.CarDockUtil; import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; +import java.util.Collections; + /** * web-app @@ -21,10 +25,12 @@ import org.springframework.transaction.annotation.Transactional; */ @Component @AllArgsConstructor +@Slf4j public class VehicleBlackAddExe { private final VehicleBlackGateway vehicleBlackGateway; private final VehicleApplyGateway vehicleApplyGateway; private final CarDockUtil carDockUtil; + private final DaHuaGateway daHuaGateway; @Transactional(rollbackFor = Exception.class) public boolean execute(VehicleBlackAddCmd cmd) { @@ -38,7 +44,10 @@ public class VehicleBlackAddExe { vehicleApplyE.setLicenceNo(cmd.getLicenceNo()); vehicleApplyGateway.updateBlackFlag(vehicleApplyE); carDockUtil.executeBlackSave(examTypeE); + daHuaGateway.deleteCar(Collections.singletonList(cmd.getLicenceNo())); + log.info("拉黑车辆同步大华删除: licenceNo={}", cmd.getLicenceNo()); } catch (Exception e) { + log.error("拉黑车辆同步大华失败: licenceNo={}", cmd.getLicenceNo(), e); throw new RuntimeException(e); } if (!res) { @@ -46,5 +55,4 @@ public class VehicleBlackAddExe { } return true; } -} - +} \ No newline at end of file diff --git a/web-app/src/main/java/com/zcloud/primeport/command/VehicleBlackRemoveExe.java b/web-app/src/main/java/com/zcloud/primeport/command/VehicleBlackRemoveExe.java index 18a8d37..16fd0a6 100644 --- a/web-app/src/main/java/com/zcloud/primeport/command/VehicleBlackRemoveExe.java +++ b/web-app/src/main/java/com/zcloud/primeport/command/VehicleBlackRemoveExe.java @@ -1,12 +1,16 @@ package com.zcloud.primeport.command; import com.alibaba.cola.exception.BizException; +import com.zcloud.gbscommon.dahua.cmd.DaHuaCarAddCmd; +import com.zcloud.primeport.domain.gateway.DaHuaGateway; import com.zcloud.primeport.domain.gateway.VehicleApplyGateway; import com.zcloud.primeport.domain.gateway.VehicleBlackGateway; import com.zcloud.primeport.domain.gateway.VehicleViolationsGateway; import com.zcloud.primeport.domain.model.VehicleBlackE; import com.zcloud.primeport.plan.mjDevice.CarDockUtil; +import com.zcloud.primeport.plan.mjDevice.dto.CarEnum; import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; @@ -19,20 +23,32 @@ import org.springframework.transaction.annotation.Transactional; */ @Component @AllArgsConstructor +@Slf4j public class VehicleBlackRemoveExe { private final VehicleBlackGateway vehicleBlackGateway; private final VehicleApplyGateway vehicleApplyGateway; private final VehicleViolationsGateway vehicleViolationsGateway; private final CarDockUtil carDockUtil; + private final DaHuaGateway daHuaGateway; @Transactional(rollbackFor = Exception.class) public boolean execute(Long id) { VehicleBlackE infoById = vehicleBlackGateway.getInfoById(id); boolean res = vehicleBlackGateway.deletedVehicleBlackById(id); - // 把这个车牌的违规记录变成已处理. vehicleViolationsGateway.updateVehicleViolationsStatusByLicenceNo(infoById.getLicenceNo(), 1); vehicleApplyGateway.updateEvehicleBlockedByLicenceNo(infoById.getLicenceNo(),2); carDockUtil.executeBlackRemove(infoById); + try { + DaHuaCarAddCmd dahuaCmd = new DaHuaCarAddCmd(); + dahuaCmd.setCarNum(infoById.getLicenceNo()); + dahuaCmd.setCarNumColor(CarEnum.getMenuKeyByPath(infoById.getLicenceType())); + dahuaCmd.setDepartmentId(1L); + dahuaCmd.setService("evo-thirdParty"); + daHuaGateway.addCar(dahuaCmd); + log.info("解除拉黑同步大华添加车辆: licenceNo={}", infoById.getLicenceNo()); + } catch (Exception e) { + log.error("解除拉黑同步大华失败: licenceNo={}", infoById.getLicenceNo(), e); + } if (!res) { throw new BizException("删除失败"); } @@ -47,5 +63,4 @@ public class VehicleBlackRemoveExe { } return true; } -} - +} \ No newline at end of file diff --git a/web-app/src/main/java/com/zcloud/primeport/service/VehicleApplyServiceImpl.java b/web-app/src/main/java/com/zcloud/primeport/service/VehicleApplyServiceImpl.java index 388acfd..60a0725 100644 --- a/web-app/src/main/java/com/zcloud/primeport/service/VehicleApplyServiceImpl.java +++ b/web-app/src/main/java/com/zcloud/primeport/service/VehicleApplyServiceImpl.java @@ -11,7 +11,9 @@ import com.zcloud.primeport.command.VehicleApplyRemoveExe; import com.zcloud.primeport.command.VehicleApplyUpdateExe; import com.zcloud.primeport.command.query.VehicleApplyQueryExe; import com.zcloud.primeport.domain.enums.AuditEnum; +import com.zcloud.primeport.domain.gateway.DaHuaGateway; import com.zcloud.primeport.domain.model.VehicleApplyE; +import com.zcloud.gbscommon.dahua.cmd.DaHuaCarAddCmd; import com.zcloud.primeport.dto.*; import com.zcloud.primeport.dto.clientobject.AppCountCO; import com.zcloud.primeport.dto.clientobject.FgsVehicleCountCo; @@ -21,7 +23,9 @@ import com.zcloud.primeport.persistence.dataobject.VehicleApplyDO; import com.zcloud.primeport.persistence.dataobject.VehicleBlackDO; import com.zcloud.primeport.persistence.repository.VehicleApplyRepository; import com.zcloud.primeport.persistence.repository.VehicleBlackRepository; +import com.zcloud.primeport.plan.mjDevice.dto.CarEnum; import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; @@ -38,6 +42,7 @@ import java.util.Map; */ @Service @AllArgsConstructor +@Slf4j public class VehicleApplyServiceImpl implements VehicleApplyServiceI { private final VehicleApplyAddExe vehicleApplyAddExe; private final VehicleApplyUpdateExe vehicleApplyUpdateExe; @@ -45,6 +50,7 @@ public class VehicleApplyServiceImpl implements VehicleApplyServiceI { private final VehicleApplyQueryExe vehicleApplyQueryExe; private final VehicleApplyRepository vehicleApplyRepository; private final VehicleBlackRepository blackRepository; + private final DaHuaGateway daHuaGateway; @Override public PageResponse listPage(VehicleApplyPageQry qry) { @@ -116,11 +122,25 @@ public class VehicleApplyServiceImpl implements VehicleApplyServiceI { vehicleApplyDO.setExpiredExpiration("2"); vehicleApplyDO.setRemarks(cmd.getCheckDepartmentName()); vehicleApplyDO.setVehicleBelongType(cmd.getVehicleBelongType()); -// vehicleApplyDO.setApplyTime(DateUtil.date2Str(new Date())); BeanUtils.copyProperties(item, vehicleApplyDO); objects.add(vehicleApplyDO); }); vehicleApplyRepository.saveBatch(objects); + + for (VehicleApplyInspectAddCmd.InspectCar item : inspectCarList) { + try { + DaHuaCarAddCmd dahuaCmd = new DaHuaCarAddCmd(); + dahuaCmd.setCarNum(item.getLicenceNo()); + dahuaCmd.setCarNumColor(CarEnum.getMenuKeyByPath(item.getLicenceType())); + dahuaCmd.setDepartmentId(1L); + dahuaCmd.setDepartmentName(cmd.getCheckDepartmentName()); + dahuaCmd.setService("evo-thirdParty"); + Map result = daHuaGateway.addCar(dahuaCmd); + log.info("检查部门车辆同步大华: licenceNo={}, result={}", item.getLicenceNo(), result); + } catch (Exception e) { + log.error("检查部门车辆同步大华失败: licenceNo={}", item.getLicenceNo(), e); + } + } } @Override @@ -170,5 +190,4 @@ public class VehicleApplyServiceImpl implements VehicleApplyServiceI { public MultiResponse getAppCount() { return vehicleApplyQueryExe.getAppCount(); } -} - +} \ No newline at end of file diff --git a/web-domain/src/main/java/com/zcloud/primeport/domain/model/VehicleApplyE.java b/web-domain/src/main/java/com/zcloud/primeport/domain/model/VehicleApplyE.java index 7d44f77..64c5a0f 100644 --- a/web-domain/src/main/java/com/zcloud/primeport/domain/model/VehicleApplyE.java +++ b/web-domain/src/main/java/com/zcloud/primeport/domain/model/VehicleApplyE.java @@ -84,5 +84,5 @@ public class VehicleApplyE extends BaseE { private String auditDeptName; private Long auditUserId; private String auditUserName; -} - + private Long userDahuaId; +} \ No newline at end of file diff --git a/web-infrastructure/src/main/java/com/zcloud/primeport/gatewayimpl/DaHuaGatewayImpl.java b/web-infrastructure/src/main/java/com/zcloud/primeport/gatewayimpl/DaHuaGatewayImpl.java index 8dc4e4c..cca1eb9 100644 --- a/web-infrastructure/src/main/java/com/zcloud/primeport/gatewayimpl/DaHuaGatewayImpl.java +++ b/web-infrastructure/src/main/java/com/zcloud/primeport/gatewayimpl/DaHuaGatewayImpl.java @@ -1011,7 +1011,6 @@ public class DaHuaGatewayImpl implements DaHuaGateway { } if (cmd.getId() == null) { Long personId = generatePersonId(); - System.out.println("大华临时车辆全量保存自动生成人员ID: " + personId); cmd.setId(personId); } if (cmd.getService() == null || cmd.getService().trim().isEmpty()) { @@ -1032,7 +1031,6 @@ public class DaHuaGatewayImpl implements DaHuaGateway { GeneralResponse response = daHuaPersonApi.saveTempVehicleAudit(body); String responseJson = JSONUtil.toJsonStr(response); log.info("大华临时车辆全量保存返回结果: {}", responseJson); - System.out.println("大华临时车辆全量保存返回结果: " + responseJson); if (response == null) { log.error("大华临时车辆全量保存失败: response为null"); resultMap.put("passed", false); diff --git a/web-infrastructure/src/main/java/com/zcloud/primeport/persistence/dataobject/VehicleApplyDO.java b/web-infrastructure/src/main/java/com/zcloud/primeport/persistence/dataobject/VehicleApplyDO.java index ecafb17..2da3e14 100644 --- a/web-infrastructure/src/main/java/com/zcloud/primeport/persistence/dataobject/VehicleApplyDO.java +++ b/web-infrastructure/src/main/java/com/zcloud/primeport/persistence/dataobject/VehicleApplyDO.java @@ -146,4 +146,6 @@ public class VehicleApplyDO extends BaseDO { private String belongType; @TableField(exist = false) private int waitAuditCount; + @ApiModelProperty(value = "大华人员ID") + private Long userDahuaId; } \ No newline at end of file diff --git a/web-infrastructure/src/main/java/com/zcloud/primeport/plan/mjDevice/CarDockUtil.java b/web-infrastructure/src/main/java/com/zcloud/primeport/plan/mjDevice/CarDockUtil.java index c94a071..ee539de 100644 --- a/web-infrastructure/src/main/java/com/zcloud/primeport/plan/mjDevice/CarDockUtil.java +++ b/web-infrastructure/src/main/java/com/zcloud/primeport/plan/mjDevice/CarDockUtil.java @@ -81,7 +81,7 @@ public class CarDockUtil { OneLevelCarBlackDto oneLevelCarBlackDto = new OneLevelCarBlackDto(); oneLevelCarBlackDto.setTruckNo(examTypeE.getLicenceNo()); oneLevelCarBlackDto.setTruckTypCod(CarEnum.getMenuKeyByPath(examTypeE.getVehicleType())); - oneLevelCarBlackDto.setTruckCardColor(CarEnum.getMenuKeyByPath(examTypeE.getLicenceNo())); + oneLevelCarBlackDto.setTruckCardColor(CarEnum.getMenuKeyByPath(examTypeE.getLicenceType())); oneLevelCarBlackDto.setRecTim(DateUtil.date2Str(new Date())); oneLevelCarBlackDto.setRecNam(AuthContext.getCurrentUser().getName()); oneLevelCarUtil.blackVehicleSave(oneLevelCarBlackDto); @@ -90,7 +90,7 @@ public class CarDockUtil { OneLevelCarBlackDto oneLevelCarBlackDto = new OneLevelCarBlackDto(); oneLevelCarBlackDto.setTruckNo(examTypeE.getLicenceNo()); oneLevelCarBlackDto.setTruckTypCod(CarEnum.getMenuKeyByPath(examTypeE.getVehicleType())); - oneLevelCarBlackDto.setTruckCardColor(CarEnum.getMenuKeyByPath(examTypeE.getLicenceNo())); + oneLevelCarBlackDto.setTruckCardColor(CarEnum.getMenuKeyByPath(examTypeE.getLicenceType())); oneLevelCarBlackDto.setRecTim(DateUtil.date2Str(new Date())); oneLevelCarBlackDto.setRecNam(AuthContext.getCurrentUser().getName()); oneLevelCarUtil.blackVehicleRemove(oneLevelCarBlackDto); @@ -104,4 +104,4 @@ public class CarDockUtil { } } -} +} \ No newline at end of file