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 a5f4e7f..c3d28bf 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 @@ -5,39 +5,38 @@ import com.zcloud.primeport.domain.enums.VehicleBelongTypeEnum; import com.zcloud.primeport.domain.gateway.DaHuaGateway; import com.zcloud.primeport.domain.gateway.VehicleApplyGateway; import com.zcloud.gbscommon.dahua.cmd.DaHuaCarAddCmd; +import com.zcloud.gbscommon.dahua.cmd.DaHuaTempVehicleSaveCmd; import com.zcloud.primeport.domain.model.VehicleApplyE; import com.zcloud.primeport.plan.mjDevice.dto.CarEnum; import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.Map; -/** - * 相关方车辆同步大华平台。 - */ @Component @AllArgsConstructor +@Slf4j public class DaHuaVehicleSyncExe { private final DaHuaGateway daHuaGateway; private final VehicleApplyGateway vehicleApplyGateway; - /** - * 相关方车辆审核通过后,同步新增大华车辆。 - */ public void syncApprovedVehicle(Long vehicleApplyId) { VehicleApplyE vehicle = vehicleApplyGateway.getById(vehicleApplyId); - if (!isRelatedPartyVehicle(vehicle)) { + if (vehicle == null) { return; } - syncAddedVehicle(vehicle); + if (isRelatedPartyVehicle(vehicle)) { + syncAddedVehicle(vehicle); + } else if (isTempVehicle(vehicle)) { + syncTempVehicle(vehicle); + } } - /** - * 删除相关方车辆时,同步删除对应的大华车辆。 - */ public void syncDeletedVehicles(List vehicles) { if (vehicles == null || vehicles.isEmpty()) { return; @@ -57,22 +56,54 @@ public class DaHuaVehicleSyncExe { checkResult(daHuaGateway.addCar(buildCarCmd(vehicle)), "新增大华车辆失败"); } + private void syncTempVehicle(VehicleApplyE vehicle) { + log.info("同步临时车辆到大华平台: licenceNo={}, vehicleApplyId={}", vehicle.getLicenceNo(), vehicle.getId()); + Map result = daHuaGateway.saveTempVehicle(buildTempVehicleCmd(vehicle)); + checkResult(result, "同步临时车辆到大华失败"); + log.info("临时车辆同步成功: licenceNo={}", vehicle.getLicenceNo()); + } + private DaHuaCarAddCmd buildCarCmd(VehicleApplyE vehicle) { DaHuaCarAddCmd cmd = new DaHuaCarAddCmd(); cmd.setCarNum(vehicle.getLicenceNo()); cmd.setCarNumColor(CarEnum.getMenuKeyByPath(vehicle.getLicenceType())); - // 大华车辆类型与本地字典不一致,该字段可选,不能直接透传本地 vehicleType。 cmd.setDepartmentId(1L); cmd.setDepartmentName(vehicle.getVehicleDepartmentName()); cmd.setService("evo-thirdParty"); return cmd; } + private DaHuaTempVehicleSaveCmd buildTempVehicleCmd(VehicleApplyE vehicle) { + DaHuaTempVehicleSaveCmd cmd = new DaHuaTempVehicleSaveCmd(); + cmd.setName(vehicle.getEmployeeVehicleUserName()); + cmd.setCode(vehicle.getLsUserIdcard()); + cmd.setPaperNumber(vehicle.getLsUserIdcard()); + cmd.setPhone(vehicle.getLsUserPhone()); + cmd.setService("evo-thirdParty"); + cmd.setValidStartTime(vehicle.getVisitStartTime()); + cmd.setValidEndTime(vehicle.getVisitEndTime()); + if (vehicle.getVehicleCorpId() != null) { + cmd.setDepartmentId(vehicle.getVehicleCorpId()); + } + DaHuaTempVehicleSaveCmd.CarItem carItem = new DaHuaTempVehicleSaveCmd.CarItem(); + carItem.setCarNum(vehicle.getLicenceNo()); + carItem.setCarNumColor(CarEnum.getMenuKeyByPath(vehicle.getLicenceType())); + carItem.setDepartmentId(vehicle.getVehicleCorpId()); + carItem.setDepartmentName(vehicle.getVehicleDepartmentName()); + cmd.setCars(Collections.singletonList(carItem)); + return cmd; + } + private boolean isRelatedPartyVehicle(VehicleApplyE vehicle) { return vehicle != null && VehicleBelongTypeEnum.XGF_VEHICLES.getCode().equals(vehicle.getVehicleBelongType()); } + private boolean isTempVehicle(VehicleApplyE vehicle) { + return vehicle != null + && VehicleBelongTypeEnum.TEMP_VEHICLES.getCode().equals(vehicle.getVehicleBelongType()); + } + private void checkResult(Map result, String message) { if (result == null || !Boolean.TRUE.equals(result.get("passed"))) { Object errorMessage = result == null ? null : result.get("errMsg");