package com.xiaopeng.map.job.jobs; import com.xiaopeng.api.model.operation.XpElectronicFence; import com.xiaopeng.api.model.operation.XpElectronicFenceArea; import com.xiaopeng.map.job.base.AbstractJob; import lombok.extern.slf4j.Slf4j; import org.quartz.JobDataMap; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import java.util.List; /** * 直播推送定时任务 * @author Administrator * */ @Slf4j public class ElectronicEffectJob extends AbstractJob { public static final String effect = "electronicEffect_"; public static final String failure = "electronicFailure_"; @Override public void execute(JobExecutionContext context) throws JobExecutionException { JobDataMap maps = context.getMergedJobDataMap(); Long electronicId = maps.getLong("id"); Long type = maps.getLong("type"); try { if (type==1L){ // 电子围栏生效 XpElectronicFence electronicFence = xpElectronicFenceService.getById(electronicId); electronicFence.setStatus(2); xpElectronicFenceService.updateById(electronicFence); List electronicFenceAreaList = xpElectronicFenceAreaService.lambdaQuery().eq(XpElectronicFenceArea::getElectronicId, electronicId).list(); // 设置为生效 for(XpElectronicFenceArea electronicFenceArea : electronicFenceAreaList){ electronicFenceArea.setAreaStatus(1); } xpElectronicFenceAreaService.updateBatchById(electronicFenceAreaList); // 推送 FBS 到绑定车辆 try { adcFencePushService.pushFenceToVehicles(electronicId); log.info("围栏{}定时生效,已触发FBS推送", electronicId); } catch (Exception ex) { log.error("围栏{}定时生效后ADC推送失败,不影响主流程", electronicId, ex); } }else{ // 电子围栏失效 XpElectronicFence electronicFence = xpElectronicFenceService.getById(electronicId); electronicFence.setStatus(3); xpElectronicFenceService.updateById(electronicFence); List electronicFenceAreaList = xpElectronicFenceAreaService.lambdaQuery().eq(XpElectronicFenceArea::getElectronicId, electronicId).list(); // 设置为禁用 for(XpElectronicFenceArea electronicFenceArea : electronicFenceAreaList){ electronicFenceArea.setAreaStatus(2); } xpElectronicFenceAreaService.updateBatchById(electronicFenceAreaList); xpStationService.setStatusFailure(electronicId);//场站失效 // 清除绑定车辆的 FBS 数据 try { adcFencePushService.deactivateFenceForVehicles(electronicId); log.info("围栏{}定时失效,已上传占位FBS", electronicId); } catch (Exception ex) { log.error("围栏{}定时失效后FBS清除失败,不影响主流程", electronicId, ex); } } }catch(Exception e){ e.printStackTrace(); } } }