| | |
| | | import com.doumee.core.haikang.model.param.request.event.acs.EventAcsInfoRequest; |
| | | import com.doumee.core.haikang.model.param.request.event.acs.EventAcsRequest; |
| | | import com.doumee.core.haikang.model.param.request.event.acs.EventDeviceDataRequest; |
| | | import com.doumee.core.haikang.model.param.request.event.parks.EventParkInfoRequest; |
| | | import com.doumee.core.haikang.model.param.request.event.parks.EventParkRequest; |
| | | import com.doumee.core.haikang.model.param.request.event.parks.*; |
| | | import com.doumee.core.haikang.model.param.request.event.visit.*; |
| | | import com.doumee.core.utils.Constants; |
| | | import com.doumee.core.utils.DESUtil; |
| | |
| | | private VisitsJoinMapper visitsMapper; |
| | | @Autowired |
| | | private RetentionMapper retentionMapper; |
| | | @Autowired |
| | | private PlatformMapper platformMapper; |
| | | @Autowired |
| | | private PlatformDeviceMapper platformDeviceMapper; |
| | | private PlatformJobMapper platformJobMapper; |
| | | private PlatformLogMapper platformLogMapper; |
| | | /** |
| | | * 海康门禁事件推送 |
| | | * @param param |
| | |
| | | return null; |
| | | |
| | | } |
| | | |
| | | /** |
| | | * 海康访客事件推送 |
| | | * @param param |
| | |
| | | interfaceLogMapper.insert(hkMonitoryLogDO); |
| | | } |
| | | |
| | | /** |
| | | * 处理月台工作状态事件订阅后推送数据逻辑逻辑 |
| | | * @param param |
| | | * @param response |
| | | * @return |
| | | */ |
| | | @Override |
| | | public String dealPlatformStatusEvent(EventPlatformRequest param, HttpServletResponse response){ |
| | | log.info("【海康月台工作状态事件推送】========开始=========:\n"+JSONObject.toJSONString(param)); |
| | | String result = null; |
| | | try { |
| | | if(param == null || param.getParams() == null || param.getParams().getEvents()==null){ |
| | | return null; |
| | | } |
| | | //门禁事件集合 |
| | | List<EventPlatformInfoRequest> events = param.getParams().getEvents(); |
| | | List<Platform> list = new ArrayList<>(); |
| | | for(EventPlatformInfoRequest request : events){ |
| | | List<EventPlatformDataRequest> dataList = request.getData(); |
| | | if(dataList ==null || dataList.size()==0){ |
| | | continue; |
| | | } |
| | | Integer workStatus = 0; |
| | | for(EventPlatformDataRequest data : dataList){ |
| | | if( data.getHPWorkingStatus() ==null || data.getHPWorkingStatus().size() ==0){ |
| | | continue;//如何推送状态集合为空,不处理跳过 |
| | | } |
| | | PlatformDevice model = platformDeviceMapper.selectOne(new QueryWrapper<PlatformDevice>().lambda() |
| | | .eq(PlatformDevice::getDeviceId,request.getSrcIndex()) |
| | | .eq(PlatformDevice::getIsdeleted,Constants.ZERO) |
| | | .last("limit 1")); |
| | | if(model ==null){ |
| | | continue;//监控点未同步,跳过处理 |
| | | |
| | | } |
| | | //各车道车辆状态 |
| | | for(EventPlatformStatusInfoRequest status : data.getHPWorkingStatus()){ |
| | | |
| | | |
| | | } |
| | | break;//只处理第一个数据状态 |
| | | } |
| | | } |
| | | result = "成功"; |
| | | log.error("【海康月台工作状态事件推送】========成功======="); |
| | | }catch (Exception e) { |
| | | result = "失败"+e.getMessage(); |
| | | log.error("【海康月台工作状态事件推送】========失败=======:\n" + e.getMessage()); |
| | | }finally { |
| | | saveInterfaceLog(param,"/business/hksync/push/platform/workstatus",result,false);//不计日志 |
| | | } |
| | | return null; |
| | | } |
| | | /** |
| | | * 处理月台车辆状态事件订阅后推送数据逻辑逻辑 |
| | | * @param param |
| | | * @param response |
| | | * @return |
| | | */ |
| | | @Override |
| | | public String dealPlatformCarsEvent(EventPlatformCarsRequest param, HttpServletResponse response){ |
| | | log.info("【海康月台车辆状态事件推送】========开始=========:\n"+JSONObject.toJSONString(param)); |
| | | String result = null; |
| | | try { |
| | | if(param == null || param.getParams() == null || param.getParams().getEvents()==null){ |
| | | return null; |
| | | } |
| | | //门禁事件集合 |
| | | List<EventPlatformCarsInfoRequest> events = param.getParams().getEvents(); |
| | | for(EventPlatformCarsInfoRequest request : events){ |
| | | if( request.getData() ==null || request.getData().size()==0){ |
| | | continue; |
| | | } |
| | | Integer workStatus = 0; |
| | | for(EventPlatformCarsDataRequest data : request.getData()){ |
| | | if( data.getHPVehicleStatus() ==null || data.getHPVehicleStatus().size() ==0){ |
| | | continue;//如何推送状态集合为空,不处理跳过 |
| | | } |
| | | PlatformDevice model = platformDeviceMapper.selectOne(new QueryWrapper<PlatformDevice>().lambda() |
| | | .eq(PlatformDevice::getDeviceId,request.getSrcIndex()) |
| | | .eq(PlatformDevice::getIsdeleted,Constants.ZERO) |
| | | .last("limit 1")); |
| | | if(model ==null){ |
| | | continue;//监控点未同步,跳过处理 |
| | | |
| | | } |
| | | //各车道车辆状态 |
| | | for(EventPlatformCarsStatusInfoRequest status : data.getHPVehicleStatus()){ |
| | | if(StringUtils.isBlank(status.getPlateNo())){ |
| | | continue;//如果车辆信息为空,不处理直接跳过 |
| | | } |
| | | PlatformJob job = platformJobMapper.selectOne(new QueryWrapper<PlatformJob>().lambda() |
| | | .eq(StringUtils.equals(status.getStockStatus(),"front"),PlatformJob::getCarCodeFront,status.getPlateNo() )//前车牌号 |
| | | .eq(!StringUtils.equals(status.getStockStatus(),"front"),PlatformJob::getCarCodeBack,status.getPlateNo() )//后车牌号 |
| | | .eq(PlatformJob::getIsdeleted,Constants.ZERO ) |
| | | .last("limit 1 ")); |
| | | PlatformJob update = new PlatformJob(); |
| | | update.setId(job.getId()); |
| | | update.setEditDate(new Date()); |
| | | if(StringUtils.equals(status.getMotionStatus(),"leave")){ |
| | | //如果是车辆离开 |
| | | if(job ==null && !Constants.equalsInteger(job.getStatus(),Constants.PlatformJobStatus.WORKING.getKey())){ |
| | | continue;//如果没查到对应的作业或者作业并非作业中,不做业务处理 |
| | | } |
| | | //如果是正在作业的状态,标记作业已完成 |
| | | update.setStatus(Constants.PlatformJobStatus.DONE.getKey());//作业已完成 |
| | | update.setDoneDate(update.getEditDate()); |
| | | |
| | | }else if(StringUtils.equals(status.getMotionStatus(),"enter")){ |
| | | //如果是车辆进入 |
| | | if(job ==null || !Constants.equalsInteger(job.getStatus(),Constants.PlatformJobStatus.CALLED.getKey())){ |
| | | //说明车辆进错月台 或者还未叫号状态,发起警告 |
| | | dealCarsInErrorPlatformBiz(job,status); |
| | | } |
| | | update.setStatus(Constants.PlatformJobStatus.WORKING.getKey());//开始作业 |
| | | }else{ |
| | | continue;//其他状态不处理,跳过 |
| | | } |
| | | platformJobMapper.updateById(update);//更新作业状态 |
| | | dealPlatformJobLogBiz(update,status);//记录作业日志 |
| | | } |
| | | break;//只处理第一个数据状态 |
| | | } |
| | | } |
| | | result = "成功"; |
| | | log.error("【海康月台车辆状态事件推送】========成功======="); |
| | | }catch (Exception e) { |
| | | result = "失败"+e.getMessage(); |
| | | log.error("【海康月台车辆状态事件推送】========失败=======:\n" + e.getMessage()); |
| | | }finally { |
| | | saveInterfaceLog(param,"/business/hksync/push/platform/workstatus",result,false);//不计日志 |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | /** |
| | | * 记录月台作业日志 |
| | | * @param job |
| | | * @param status |
| | | */ |
| | | private void dealPlatformJobLogBiz(PlatformJob job,EventPlatformCarsStatusInfoRequest status) { |
| | | PlatformLog log = new PlatformLog(); |
| | | log.setIsdeleted(Constants.ZERO); |
| | | log.setCreateDate(new Date()); |
| | | log.setEditDate(log.getCreateDate()); |
| | | log.setJobId(job.getId()); |
| | | log.setObjId(job.getId()+""); |
| | | if(Constants.equalsInteger(job.getStatus(),Constants.PlatformJobStatus.DONE.getKey())){ |
| | | //如果是作业完成 |
| | | // log.setObjType(Constants.LOg); |
| | | //查询最后一次开始作业的日志 |
| | | PlatformLog lastBeginPlatform = platformLogMapper.selectOne(new QueryWrapper<PlatformLog>().lambda() |
| | | .eq(PlatformLog::getIsdeleted,Constants.ZERO) |
| | | .eq(PlatformLog::getObjType,Constants.PlatformJobStatus.WORKING.getKey()) |
| | | .eq(PlatformLog::getJobId,job.getJobId()) |
| | | .orderByDesc(PlatformLog::getCreateDate) |
| | | .last(" limit 1"); |
| | | |
| | | }else{ |
| | | //如果是作业中 |
| | | log.setParam1(DateUtil.getDate(lastBeginPlatform.getCreateDate(),"yyyy-MM-dd HH:mm:ss")); |
| | | // log.setObjType(Constants.Jobl); |
| | | } |
| | | |
| | | platformLogMapper.insert(log); |
| | | } |
| | | |
| | | /** |
| | | * 处理车辆进入错误月台业务逻辑 |
| | | * @param model (月台设备关联信息) |
| | | * @param status |
| | | */ |
| | | private void dealCarsInErrorPlatformBiz( PlatformJob model,EventPlatformCarsStatusInfoRequest status) { |
| | | //TODO-----------------处理车辆进入错误月台业务逻辑 |
| | | } |
| | | } |