| | |
| | | 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.base.EventBaseInfoRequest; |
| | | import com.doumee.core.haikang.model.param.request.event.base.EventBaseRequest; |
| | | import com.doumee.core.haikang.model.param.request.event.parks.*; |
| | | import com.doumee.core.haikang.model.param.request.event.visit.*; |
| | | import com.doumee.core.haikang.service.HKService; |
| | |
| | | import com.doumee.dao.business.model.Member; |
| | | import com.doumee.dao.web.reqeust.SavePlatformWarnEventDTO; |
| | | import com.doumee.service.business.VisitsService; |
| | | import com.doumee.service.business.impl.JkCabinetGridServiceImpl; |
| | | import com.doumee.service.business.impl.PlatformWarnEventServiceImpl; |
| | | import com.doumee.service.business.third.TmsService; |
| | | import com.doumee.service.business.third.model.request.TmsOrderInfoRequest; |
| | |
| | | private PlatformLogMapper platformLogMapper; |
| | | @Autowired |
| | | private PlatformWarnEventServiceImpl platformWarnEventService; |
| | | @Autowired |
| | | private WarningMapper warningMapper; |
| | | @Autowired |
| | | private WarningEventMapper warningEventMapper; |
| | | @Autowired |
| | | private WarningRuleMapper warningRuleMapper; |
| | | @Autowired |
| | | private WarningPushMapper warningPushMapper; |
| | | |
| | | |
| | | |
| | |
| | | event.setExtEventAlarmOutID(request.getData().getExtEventAlarmOutID()); |
| | | event.setExtEventAlarmInID(request.getData().getExtEventAlarmInID()); |
| | | event.setExtAccessChannel(request.getData().getExtAccessChannel()); |
| | | //通道事件信息 |
| | | //通道事件信息` |
| | | if(request.getData().getExtEventCustomerNumInfo() !=null){ |
| | | event.setTotalTimes(request.getData().getExtEventCustomerNumInfo().getTotalTimes()); |
| | | event.setEntryTimes(request.getData().getExtEventCustomerNumInfo().getEntryTimes()); |
| | |
| | | log.error("【海康访客事件推送】========失败=======:\n"+e.getMessage()); |
| | | } |
| | | saveInterfaceLog(param,"/business/hksync/push/visit",result,true); |
| | | return null; |
| | | |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 海康事件推送 |
| | | * @param param |
| | | * @param response |
| | | * @return |
| | | */ |
| | | @Override |
| | | public String dealSecurityEvent(EventBaseRequest param, HttpServletResponse response, JkCabinetGridServiceImpl impl){ |
| | | log.info("【海康通用事件推送】==========开始=======:\n"+JSONObject.toJSONString(param)); |
| | | String result = null; |
| | | try { |
| | | if(param == null || param.getParams() == null || param.getParams().getEvents()==null){ |
| | | return null; |
| | | } |
| | | //门禁事件集合 |
| | | List<EventBaseInfoRequest> events = param.getParams().getEvents(); |
| | | for(EventBaseInfoRequest request : events){ |
| | | Warning warning = warningMapper.selectOne(new QueryWrapper<Warning>().lambda() |
| | | .eq(Warning::getIsdeleted,Constants.ZERO) |
| | | .eq(Warning::getCode, request.getSrcType()).last("limit 1")); |
| | | |
| | | Constants.WarningConfig warningConfig = Constants.WarningConfig.getConfig(request.getEventType()); |
| | | |
| | | if(Objects.nonNull(warning)){ |
| | | WarningEvent warningEvent = new WarningEvent(); |
| | | warningEvent.setCreateDate(new Date()); |
| | | warningEvent.setEditDate(warningEvent.getCreateDate()); |
| | | warningEvent.setIsdeleted(Constants.ZERO); |
| | | warningEvent.setTitle(warning.getName()); |
| | | warningEvent.setContent(warning.getName() +"-"+ request.getSrcName()); |
| | | warningEvent.setStatus(Constants.ZERO); |
| | | warningEvent.setEventId(request.getEventId()); |
| | | warningEvent.setEventType(request.getEventType().toString()); |
| | | warningEvent.setHappenTime(request.getHappenTime()); |
| | | warningEvent.setJsonContent(request.getData().toJSONString()); |
| | | warningEvent.setSrcIndex(request.getSrcIndex()); |
| | | warningEvent.setSrcType(request.getSrcType()); |
| | | warningEvent.setSrcName(request.getSrcName()); |
| | | warningEventMapper.insert(warningEvent); |
| | | |
| | | if(Objects.nonNull(warningConfig)){ |
| | | List<Integer> ruleIdList = impl.processWarnFront(warningConfig); |
| | | |
| | | Boolean falg = false; |
| | | if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(ruleIdList)){ |
| | | for (Integer ruleId:ruleIdList) { |
| | | WarningRule warningRule = warningRuleMapper.selectById(ruleId); |
| | | if (Objects.isNull(warningRule)) { |
| | | break; |
| | | } |
| | | List<Member> memberList = impl.getWarningRuleMemberList(warningRule); |
| | | if (com.github.xiaoymin.knife4j.core.util.CollectionUtils.isEmpty(memberList)) { |
| | | break; |
| | | } |
| | | try { |
| | | WarningPush warningPush = new WarningPush(); |
| | | warningPush.setCreateDate(new Date()); |
| | | warningPush.setIsdeleted(Constants.ZERO); |
| | | warningPush.setWarningId(warning.getId()); |
| | | warningPush.setTitle(warningConfig.getInfo()); |
| | | String content = warningEvent.getContent(); |
| | | warningPush.setContent(content); |
| | | warningPush.setStatus(Constants.ZERO); |
| | | warningPush.setPushType(Constants.ZERO); |
| | | //TODO 根据具体数据对比获取 |
| | | warningPush.setRegion( "未知位置"); |
| | | warningPush.setMemberIds( |
| | | StringUtils.join(memberList.stream().map(i -> i.getId()).collect(Collectors.toList()), ",") |
| | | ); |
| | | warningPush.setMemberIds( |
| | | StringUtils.join(memberList.stream().map(i -> i.getId()).collect(Collectors.toList()), ",") |
| | | ); |
| | | warningPush.setMemberNames(StringUtils.join(memberList.stream().map(i -> i.getName()).collect(Collectors.toList()), ",") |
| | | ); |
| | | // todo 暂时关闭 钉钉通知 |
| | | // Boolean noticeFlag = dingTalk.workInfoOANotice(Long.valueOf(systemDictDataBiz.queryByCode(Constants.DD_TALK,Constants.AGENT_ID).getCode()), |
| | | // StringUtils.join(memberList.stream().filter(i->StringUtils.isNotBlank(i.getDdId())).map(i->i.getDdId()).collect(Collectors.toList()),","), |
| | | // dingTalk.getAlarmNoticeMsg(warningPush.getRegion(),DateUtil.getCurrDateTime(),content)); |
| | | // warningPush.setStatus(noticeFlag?Constants.ONE:Constants.TWO); |
| | | warningPushMapper.insert(warningPush); |
| | | falg = true; |
| | | }catch (Exception e){ |
| | | warningEvent.setStatus(Constants.TWO); |
| | | warningEventMapper.updateById(warningEvent); |
| | | } |
| | | } |
| | | } |
| | | if(falg){ |
| | | warningEvent.setStatus(Constants.ONE); |
| | | warningEventMapper.updateById(warningEvent); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | } |
| | | log.info("【海康通用事件推送】========成功======="); |
| | | }catch (Exception e){ |
| | | |
| | | log.error("【海康通用事件推送】========失败=======:\n"+e.getMessage()); |
| | | } |
| | | saveInterfaceLog(param,"/business/hksync/push/notice",result,true); |
| | | return null; |
| | | |
| | | } |
| | |
| | | updateVistis.setOutInfo("访客正常签离"); |
| | | } |
| | | delRetentionLis.add(visits.getMemberId()); |
| | | }else{ |
| | | //如果人员信息存在,切是访客通行,则删除之前的所有进场数据(无论此次推送是进厂还是出场推送事件) |
| | | }else if(!(request.getData().getParamValues()!=null |
| | | && StringUtils.isNotBlank(request.getData().getParamValues().getPlateNos()) |
| | | && StringUtils.isNotBlank(request.getData().getParamValues().getParkIndex()))){ |
| | | //只处理访客门禁通行通行, |
| | | //如果人员信息存在,则删除之前的所有进场数据(无论此次推送是进厂还是出场推送事件) |
| | | delRetentionLis.add(visits.getMemberId()); |
| | | InoutRecord record = new InoutRecord(); |
| | | record.setDeviceName((request.getData()!=null &&request.getData().getParamValues()!=null)? |
| | |
| | | } |
| | | if( request.getData().getParamValues()!=null |
| | | && StringUtils.isNotBlank(request.getData().getParamValues().getPlateNos()) |
| | | && StringUtils.isNotBlank(request.getData().getParamValues().getParkIndex())){ |
| | | && StringUtils.isNotBlank(request.getData().getParamValues().getParkIndex())) { |
| | | //如果是停车场事件,记录车辆类型 |
| | | Category category = null; |
| | | record.setCarCode(request.getData().getParamValues().getPlateNos()); |
| | | if(StringUtils.isNotBlank(record.getCarCode())){ |
| | | if (StringUtils.isNotBlank(record.getCarCode())) { |
| | | category = categoryMapper.selectJoinOne(Category.class, new MPJLambdaWrapper<Category>() |
| | | .selectAll(Category.class) |
| | | .select("t4.name",Category::getParentName) |
| | | .select("t4.name", Category::getParentName) |
| | | .leftJoin("category t4 on t.parent_id=t4.id") |
| | | .eq(Category::getIsdeleted,Constants.ZERO) |
| | | .eq(Category::getBizType,Constants.RetentionCarType.fkCar) |
| | | .eq(Category::getIsdeleted, Constants.ZERO) |
| | | .eq(Category::getBizType, Constants.RetentionCarType.fkCar) |
| | | .last("limit 1")); |
| | | if(category ==null){ |
| | | if (category == null) { |
| | | category = new Category(); |
| | | category.setName("访客车辆"); |
| | | } |
| | | category.setParentName(StringUtils.defaultString(category.getParentName(),"访客车辆")); |
| | | category.setParentName(StringUtils.defaultString(category.getParentName(), "访客车辆")); |
| | | } |
| | | record.setCarBizType(Constants.RetentionCarType.fkCar); |
| | | record.setCategoryId(category.getId()); |
| | |
| | | record.setCategoryName(category.getName()); |
| | | record.setCategoryParentId(category.getParentId()); |
| | | record.setCategoryParentName(category.getParentName()); |
| | | if(Constants.equalsInteger(record.getInOrOut(),Constants.ONE)){ |
| | | if (Constants.equalsInteger(record.getInOrOut(), Constants.ONE)) { |
| | | record.setRemark("访客跟随车辆离园并自动签离"); |
| | | try { |
| | | //访客申请自动签离 |
| | | visitsService.visitLevelForCarOut(visits); |
| | | }catch (Exception e){ |
| | | log.error("访客跟随车辆出园自动签离失败:==========="+e.getMessage()); |
| | | } catch (Exception e) { |
| | | log.error("访客跟随车辆出园自动签离失败:===========" + e.getMessage()); |
| | | } |
| | | } |
| | | } |
| | | inoutRecordList.add(record); |
| | | inoutRecordList.add(record);//进出记录 |
| | | } |
| | | updateVistis.setEditDate(new Date()); |
| | | //更新访客来访或者签离时间信息 |
| | |
| | | String result = null; |
| | | log.info("【海康停车场事件推送】========开始=========:\n"+JSONObject.toJSONString(param)); |
| | | try { |
| | | if(param == null || param.getParams() == null || param.getParams().getEvents()==null){ |
| | | if(param == null |
| | | || param.getParams() == null |
| | | || param.getParams().getEvents()==null){ |
| | | return null; |
| | | } |
| | | //门禁事件集合 |
| | |
| | | carrecord.setCategoryParentId(category.getParentId()); |
| | | } |
| | | } |
| | | //处理自有车自动签到业务 |
| | | dealSelTruckAutoSignBiz(request,event); |
| | | if(Constants.formatIntegerNum(request.getEventType()) == HKConstants.EventTypes.PARK_PASS_IN.getKey()){ |
| | | //处理自有车自动签到业务 |
| | | dealSelTruckAutoSignBiz(request,event); |
| | | //如果是入厂放行 |
| | | delRetentionList.add(event.getPlateNos()); |
| | | Retention dm = new Retention(); |
| | |
| | | event.setCarType(Constants.RetentionCarType.fkCar); |
| | | int index =0; |
| | | carrecord.setCarBizType(Constants.RetentionCarType.fkCar); |
| | | if(1==2){ |
| | | Category category =findCategoryByBizType(Constants.RetentionCarType.fkCar,"访客车辆","访客车辆",categoryList); |
| | | carrecord.setCategoryId(category.getId()); |
| | | carrecord.setCategoryName(StringUtils.defaultString(category.getName(),"访客车辆")); |
| | | carrecord.setCategoryParentName(StringUtils.defaultString(category.getParentName(),"访客车辆")); |
| | | carrecord.setCategoryParentId(category.getParentId()); |
| | | for(Visits v :visitsList){ |
| | | Category category =findCategoryByBizType(Constants.RetentionCarType.fkCar,"访客车辆","访客车辆",categoryList); |
| | | carrecord.setCategoryId(category.getId()); |
| | | carrecord.setCategoryName(StringUtils.defaultString(category.getName(),"访客车辆")); |
| | | carrecord.setCategoryParentName(StringUtils.defaultString(category.getParentName(),"访客车辆")); |
| | | carrecord.setCategoryParentId(category.getParentId()); |
| | | for(Visits v :visitsList){ |
| | | // if(v.getEndtime()!=null && v.getEndtime().getTime() < System.currentTimeMillis()){ |
| | | Retention dm = new Retention(); |
| | | dm.setMemberId(event.getMemberId()); |
| | | dm.setPhone(carrecord.getMemberPhone()); |
| | |
| | | inoutDayCount.setInVisitorNum(Constants.formatIntegerNum(inoutDayCount.getInVisitorNum())+1); |
| | | } |
| | | } |
| | | } |
| | | // } |
| | | } |
| | | } |
| | | if(isCarInOrOutEvent(request) && event.getCarType() !=null && !event.getCarType().equals(Constants.RetentionCarType.fkCar)){ |
| | |
| | | Category category = new Category(); |
| | | category.setName(tempname); |
| | | category.setParentName(pName); |
| | | return null; |
| | | return category; |
| | | } |
| | | |
| | | private void dealSelTruckAutoSignBiz(EventParkInfoRequest request, CarEvent event) { |
| | |
| | | .in(PlatformJob::getStatus, |
| | | Constants.PlatformJobStatus.IN_WAIT.getKey(), |
| | | Constants.PlatformJobStatus.CALLED.getKey(), |
| | | Constants.PlatformJobStatus.WAIT_CALL.getKey(), |
| | | Constants.PlatformJobStatus.WORKING.getKey(), |
| | | Constants.PlatformJobStatus.TRANSFERING.getKey(), |
| | | Constants.PlatformJobStatus.OVER_NUMBER.getKey(), |
| | | Constants.PlatformJobStatus.EXCEPTION.getKey() |
| | | ) |
| | | )==Constants.ZERO){//如果没进行中任务 |
| | |
| | | return model; |
| | | } |
| | | |
| | | /** |
| | | * 记录月台作业日志 |
| | | * @param job |
| | | * @param status |
| | | */ |
| | | @Transactional |
| | | private void dealPlatformJobLogBiz(PlatformJob job,EventPlatformCarsStatusInfoRequest status) { |
| | | platformJobMapper.updateById(job);//更新作业状态 |
| | | 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.PlatformJobLogType.DONE.getKey()); |
| | | log.setTitle(Constants.PlatformJobLogType.DONE.getName()); |
| | | log.setContent(Constants.PlatformJobLogType.DONE.getInfo()); |
| | | //查询最后一次开始作业的日志 |
| | | PlatformLog lastBeginPlatform = platformLogMapper.selectOne(new QueryWrapper<PlatformLog>().lambda() |
| | | .eq(PlatformLog::getIsdeleted,Constants.ZERO) |
| | | .eq(PlatformLog::getObjType,Constants.PlatformJobLogType.WORKING.getKey()) |
| | | .eq(PlatformLog::getJobId,job.getId()) |
| | | .orderByDesc(PlatformLog::getCreateDate) |
| | | .last(" limit 1")); |
| | | String v = Long.toString(job.getDoneDate().getTime() - lastBeginPlatform.getCreateDate().getTime() / 1000) ; |
| | | lastBeginPlatform.setRemark(job.getPlatformId().toString()); |
| | | lastBeginPlatform.setParam3(v); |
| | | lastBeginPlatform.setParam2(DateUtil.getDate(lastBeginPlatform.getCreateDate(),"yyyy-MM-dd HH:mm:ss")); |
| | | platformLogMapper.updateById(lastBeginPlatform);//更新上一次作业的完成时间和作业时长 |
| | | }else{ |
| | | //如果是作业中 |
| | | log.setObjType(Constants.PlatformJobLogType.WORKING.getKey()); |
| | | log.setTitle(Constants.PlatformJobLogType.WORKING.getName()); |
| | | log.setContent(Constants.PlatformJobLogType.WORKING.getInfo()); |
| | | log.setParam1(DateUtil.getDate(log.getCreateDate(),"yyyy-MM-dd HH:mm:ss")); |
| | | } |
| | | platformLogMapper.insert(log); |
| | | } |
| | | // /** |
| | | // * 记录月台作业日志 |
| | | // * @param job |
| | | // * @param status |
| | | // */ |
| | | // @Transactional |
| | | // private void dealPlatformJobLogBiz(PlatformJob job,EventPlatformCarsStatusInfoRequest status) { |
| | | // platformJobMapper.updateById(job);//更新作业状态 |
| | | // 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.PlatformJobLogType.DONE.getKey()); |
| | | // log.setTitle(Constants.PlatformJobLogType.DONE.getName()); |
| | | // log.setContent(Constants.PlatformJobLogType.DONE.getInfo()); |
| | | // //查询最后一次开始作业的日志 |
| | | // PlatformLog lastBeginPlatform = platformLogMapper.selectOne(new QueryWrapper<PlatformLog>().lambda() |
| | | // .eq(PlatformLog::getIsdeleted,Constants.ZERO) |
| | | // .eq(PlatformLog::getObjType,Constants.PlatformJobLogType.WORKING.getKey()) |
| | | // .eq(PlatformLog::getJobId,job.getId()) |
| | | // .orderByDesc(PlatformLog::getCreateDate) |
| | | // .last(" limit 1")); |
| | | // String v = Long.toString(job.getDoneDate().getTime() - lastBeginPlatform.getCreateDate().getTime() / 1000) ; |
| | | // lastBeginPlatform.setRemark(job.getPlatformId().toString()); |
| | | // lastBeginPlatform.setParam3(v); |
| | | // lastBeginPlatform.setParam2(DateUtil.getDate(lastBeginPlatform.getCreateDate(),"yyyy-MM-dd HH:mm:ss")); |
| | | // platformLogMapper.updateById(lastBeginPlatform);//更新上一次作业的完成时间和作业时长 |
| | | // }else{ |
| | | // //如果是作业中 |
| | | // log.setObjType(Constants.PlatformJobLogType.WORKING.getKey()); |
| | | // log.setTitle(Constants.PlatformJobLogType.WORKING.getName()); |
| | | // log.setContent(Constants.PlatformJobLogType.WORKING.getInfo()); |
| | | // log.setParam1(DateUtil.getDate(log.getCreateDate(),"yyyy-MM-dd HH:mm:ss")); |
| | | // } |
| | | // platformLogMapper.insert(log); |
| | | // } |
| | | |
| | | /** |
| | | * 处理车辆进入错误月台业务逻辑 |