|  |  | 
 |  |  | import com.alibaba.fastjson.JSONObject; | 
 |  |  | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | 
 |  |  | import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; | 
 |  |  | import com.doumee.biz.system.SystemDictDataBiz; | 
 |  |  | import com.doumee.config.DataSyncConfig; | 
 |  |  | import com.doumee.config.SpringContextUtil; | 
 |  |  | import com.doumee.core.exception.BusinessException; | 
 |  |  | import com.doumee.core.haikang.model.HKConstants; | 
 |  |  | import com.doumee.core.haikang.model.param.BaseResponse; | 
 |  |  | import com.doumee.core.haikang.model.param.request.*; | 
 |  |  | 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.utils.Constants; | 
 |  |  | import com.doumee.core.utils.DESUtil; | 
 |  |  | import com.doumee.core.utils.DateUtil; | 
 |  |  | import com.doumee.core.utils.Utils; | 
 |  |  | import com.doumee.dao.business.*; | 
 |  |  | import com.doumee.dao.business.dao.MemberMapper; | 
 |  |  | import com.doumee.dao.business.join.VisitsJoinMapper; | 
 |  |  | import com.doumee.dao.business.model.*; | 
 |  |  | import com.doumee.dao.system.model.SystemUser; | 
 |  |  | import com.doumee.service.business.DeviceEventService; | 
 |  |  | import com.doumee.service.business.InterfaceLogService; | 
 |  |  | import com.doumee.service.business.MemberService; | 
 |  |  | import com.github.yulichang.interfaces.MPJBaseJoin; | 
 |  |  | import com.doumee.dao.business.model.Member; | 
 |  |  | import com.doumee.dao.web.reqeust.SavePlatformWarnEventDTO; | 
 |  |  | import com.doumee.service.business.impl.PlatformWarnEventServiceImpl; | 
 |  |  | import com.doumee.service.business.third.TmsService; | 
 |  |  | import com.doumee.service.business.third.model.request.TmsOrderInfoRequest; | 
 |  |  | import com.doumee.service.business.third.model.response.TmsOrderInfoResponse; | 
 |  |  | import com.github.yulichang.wrapper.MPJLambdaWrapper; | 
 |  |  | import com.hikvision.artemis.sdk.config.ArtemisConfig; | 
 |  |  | import lombok.extern.slf4j.Slf4j; | 
 |  |  | import org.apache.commons.lang3.StringUtils; | 
 |  |  | import org.checkerframework.checker.units.qual.C; | 
 |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
 |  |  | import org.springframework.stereotype.Service; | 
 |  |  | import org.springframework.transaction.annotation.Transactional; | 
 |  |  | import org.yaml.snakeyaml.scanner.Constant; | 
 |  |  | import org.springframework.util.CollectionUtils; | 
 |  |  |  | 
 |  |  | import javax.servlet.http.HttpServletResponse; | 
 |  |  | import java.util.ArrayList; | 
 |  |  | import java.util.Date; | 
 |  |  | import java.util.List; | 
 |  |  | import java.util.*; | 
 |  |  | import java.util.stream.Collectors; | 
 |  |  |  | 
 |  |  | /** | 
 |  |  |  * 访客权限组信息表Service实现 | 
 |  |  | 
 |  |  | @Slf4j | 
 |  |  | public class HkSyncPushServiceImpl extends HkSyncBaseServiceImpl { | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private InoutDayCountMapper inoutDayCountMapper; | 
 |  |  |     @Autowired | 
 |  |  |     private InterfaceLogMapper interfaceLogMapper; | 
 |  |  |     @Autowired | 
 |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private PlatformMapper platformMapper; | 
 |  |  |     @Autowired | 
 |  |  |     private SystemDictDataBiz systemDictDataBiz; | 
 |  |  |     @Autowired | 
 |  |  |     private PlatformDeviceMapper platformDeviceMapper; | 
 |  |  |     @Autowired | 
 |  |  |     private PlatformBroadcastLogMapper platformBroadcastLogMapper; | 
 |  |  |     @Autowired | 
 |  |  |     private PlatformJobMapper platformJobMapper; | 
 |  |  |     @Autowired | 
 |  |  |     private TmsService tmsService; | 
 |  |  |     @Autowired | 
 |  |  |     private PlatformWmsDetailMapper platformWmsDetailMapper; | 
 |  |  |     @Autowired | 
 |  |  |     private PlatformEventMapper platformEventMapper; | 
 |  |  |     @Autowired | 
 |  |  |     private PlatformLogMapper platformLogMapper; | 
 |  |  |     @Autowired | 
 |  |  |     private PlatformWarnEventServiceImpl platformWarnEventService; | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 海康门禁事件推送 | 
 |  |  |      * @param param | 
 |  |  | 
 |  |  |             List<DeviceEvent> list = new ArrayList<>(); | 
 |  |  |             List<Integer> delRetentionLis = new ArrayList<>(); | 
 |  |  |             List<Retention> retentionList = new ArrayList<>(); | 
 |  |  |             InoutDayCount inoutDayCount = new InoutDayCount(); | 
 |  |  |             for(EventAcsInfoRequest request : events){ | 
 |  |  |                 EventDeviceDataRequest model = request.getData(); | 
 |  |  |                 if(model ==null){ | 
 |  |  |                     continue; | 
 |  |  |                 } | 
 |  |  |                 //根据推送人员编码,处理在场、离场人员数据记录 | 
 |  |  |                 dealMemberDataByRequest(request,delRetentionLis,retentionList); | 
 |  |  |                 dealMemberDataByRequest(request,delRetentionLis,retentionList,inoutDayCount); | 
 |  |  |                 //封装门禁事件信息表对象 | 
 |  |  |                 list.add(getDeviceEventModelByRequest(request)); | 
 |  |  |             } | 
 |  |  | 
 |  |  |                 //再插入最新的在厂人员 | 
 |  |  |                 retentionMapper.insert(retentionList); | 
 |  |  |             } | 
 |  |  |             log.error("【海康门禁事件推送】========成功======="); | 
 |  |  |             dealInoutDayCountBiz(inoutDayCount); | 
 |  |  |             log.info("【海康门禁事件推送】========成功======="); | 
 |  |  |         }catch (Exception e) { | 
 |  |  |             e.printStackTrace(); | 
 |  |  |             log.error("【海康门禁事件推送】========失败=======:\n" + e.getMessage()); | 
 |  |  |         }finally { | 
 |  |  |             saveInterfaceLog(param,"/business/hksync/push/acs",result,false);//不计日志 | 
 |  |  | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     private void dealInoutDayCountBiz(InoutDayCount param) { | 
 |  |  |         if(param == null){ | 
 |  |  |             param = new InoutDayCount(); | 
 |  |  |         } | 
 |  |  |         param.setTimeInfo(Utils.Date.getStart(new Date())); | 
 |  |  |         InoutDayCount model = inoutDayCountMapper.selectOne(new QueryWrapper<InoutDayCount>().lambda() | 
 |  |  |                 .eq(InoutDayCount::getTimeInfo,param.getTimeInfo()) | 
 |  |  |                 .eq(InoutDayCount::getIsdeleted,Constants.ZERO) | 
 |  |  |                 .last("limit 1")); | 
 |  |  |         log.error("============================inoutDayCountMapper:"+JSONObject.toJSONString(param)); | 
 |  |  |         if(model == null){ | 
 |  |  |             param.setIsdeleted(Constants.ZERO); | 
 |  |  |             param.setCreateDate(new Date()); | 
 |  |  |             param.setEditDate(new Date()); | 
 |  |  |             inoutDayCountMapper.insert(param); | 
 |  |  |         }else{ | 
 |  |  |             inoutDayCountMapper.update(null,new UpdateWrapper<InoutDayCount>().lambda() | 
 |  |  |                     .eq(InoutDayCount::getId,model.getId() ) | 
 |  |  |                     .set(InoutDayCount::getEditDate,new Date() ) | 
 |  |  |                     .setSql(param.getInCarNum()!=null,"IN_CAR_NUM = ifnull(IN_CAR_NUM,0)+"+param.getInCarNum() ) | 
 |  |  |                     .setSql(param.getOutCarNum()!=null,"OUT_CAR_NUM = ifnull(OUT_CAR_NUM,0)+"+param.getOutCarNum() ) | 
 |  |  |                     .setSql(param.getInMemberNum()!=null,"IN_MEMBER_NUM = ifnull(IN_MEMBER_NUM,0)+"+param.getInMemberNum() ) | 
 |  |  |                     .setSql(param.getOutMemberNum()!=null,"OUT_MEMBER_NUM = ifnull(OUT_MEMBER_NUM,0)+"+param.getOutMemberNum() ) | 
 |  |  |                     .setSql(param.getInVisitorNum()!=null,"IN_VISITOR_NUM = ifnull(IN_VISITOR_NUM,0)+"+param.getInVisitorNum() ) | 
 |  |  |                     .setSql(param.getOutVisitorNum()!=null,"OUT_VISITOR_NUM = ifnull(OUT_VISITOR_NUM,0)+"+param.getOutVisitorNum() ) | 
 |  |  |                     .setSql(param.getSigninVisitorNum()!=null,"SIGNIN_VISITOR_NUM = ifnull(SIGNIN_VISITOR_NUM,0)+"+param.getSigninVisitorNum() ) | 
 |  |  |                     .setSql(param.getLeaveVisitorNum()!=null,"LEAVE_VISITOR_NUM = ifnull(LEAVE_VISITOR_NUM,0)+"+param.getLeaveVisitorNum() ) | 
 |  |  |                     .setSql(param.getInOtherMemberNum()!=null,"IN_OTHER_MEMBER_NUM = ifnull(IN_OTHER_MEMBER_NUM,0)+"+param.getInOtherMemberNum() ) | 
 |  |  |                     .setSql(param.getOutOtherMemberNum()!=null,"OUT_OTHER_MEMBER_NUM = ifnull(OUT_OTHER_MEMBER_NUM,0)+"+param.getOutOtherMemberNum() ) | 
 |  |  |                     .setSql(param.getInSelfMemberNum()!=null,"IN_SELF_MEMBER_NUM = ifnull(IN_SELF_MEMBER_NUM,0)+"+param.getInSelfMemberNum() ) | 
 |  |  |                     .setSql(param.getOutSelfMemberNum()!=null,"OUT_SELF_MEMBER_NUM = ifnull(OUT_SELF_MEMBER_NUM,0)+"+param.getOutSelfMemberNum() ) | 
 |  |  |             ); | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 根据推送人员编码,处理在场、离场人员数据记录 | 
 |  |  |      * @param request | 
 |  |  |      * @param delRetentionLis | 
 |  |  |      * @param retentionList | 
 |  |  |      */ | 
 |  |  |     private void dealMemberDataByRequest(EventAcsInfoRequest request, List<Integer> delRetentionLis, List<Retention> retentionList) { | 
 |  |  |     private void dealMemberDataByRequest(EventAcsInfoRequest request, List<Integer> delRetentionLis, List<Retention> retentionList,InoutDayCount inoutDayCount) { | 
 |  |  |         //海康人员编码 | 
 |  |  |         String userNo = request.getData().getExtEventPersonNo(); | 
 |  |  |         if(StringUtils.isNotBlank(userNo)){ | 
 |  |  |             Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda().eq(Member::getHkId,userNo).last("limit 1")); | 
 |  |  |             if(member !=null){ | 
 |  |  |                 //如果人员信息存在,则删除之前的所有进场数据(无论此次推送是进厂还是出场推送事件) | 
 |  |  |                 Device d = deviceMapper.selectOne(new QueryWrapper<Device>().lambda() | 
 |  |  |                         .eq(Device::getDoorId,request.getSrcIndex()) | 
 |  |  |                         .eq(Device::getIsdeleted,Constants.ZERO) | 
 |  |  |                         .last("limit 1" )); | 
 |  |  |                 delRetentionLis.add(member.getId()); | 
 |  |  |                 if(d!=null && !(Constants.equalsInteger(d.getIsEntrance(),Constants.ONE) && Constants.formatIntegerNum(request.getData().getExtEventInOut()) != Constants.ONE)){ | 
 |  |  |             Member member = memberMapper.selectJoinOne(Member.class,new MPJLambdaWrapper<Member>() | 
 |  |  |                     .selectAll(Member.class) | 
 |  |  |                     .selectAs(Company::getType,Member::getCompanyType) | 
 |  |  |                     .leftJoin(Company.class,Company::getId,Member::getCompanyId) | 
 |  |  |                     .eq(Member::getHkId,userNo) | 
 |  |  |                     .eq(Member::getIsdeleted,Constants.ZERO) | 
 |  |  |                     .last("limit 1")); | 
 |  |  |             //如果人员信息存在,则删除之前的所有进场数据(无论此次推送是进厂还是出场推送事件) | 
 |  |  |             Device d = deviceMapper.selectOne(new QueryWrapper<Device>().lambda() | 
 |  |  |                     .eq(Device::getDoorId,request.getSrcIndex()) | 
 |  |  |                     .eq(Device::getIsdeleted,Constants.ZERO) | 
 |  |  |                     .last("limit 1" )); | 
 |  |  |             if(d!=null && Constants.equalsInteger(d.getIsEntrance(),Constants.ONE)){ | 
 |  |  |                 if(Constants.formatIntegerNum(request.getData().getExtEventInOut()) != Constants.ONE){ | 
 |  |  |                     //如果是进门,录入人员的在场数据记录 | 
 |  |  |                     retentionList.add(getRetentionModelByRequest(member,request)); | 
 |  |  |                     inoutDayCount.setInMemberNum(Constants.formatIntegerNum(inoutDayCount.getInMemberNum())+1);//入场人次 | 
 |  |  |                 }else{ | 
 |  |  |                     inoutDayCount.setOutMemberNum(Constants.formatIntegerNum(inoutDayCount.getOutMemberNum())+1);//离场人次 | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |             if(member !=null){ | 
 |  |  |                 if(d!=null && Constants.equalsInteger(d.getIsEntrance(),Constants.ONE)){ | 
 |  |  |                     delRetentionLis.add(member.getId()); | 
 |  |  |                     if( Constants.formatIntegerNum(request.getData().getExtEventInOut()) == Constants.ONE){ | 
 |  |  |                         //如果是进门,录入人员的在场数据记录 | 
 |  |  |                         retentionList.add(getRetentionModelByRequest(member,request)); | 
 |  |  |                         if(Constants.equalsInteger(member.getCompanyType(),Constants.ONE)){ | 
 |  |  |                             inoutDayCount.setInSelfMemberNum(Constants.formatIntegerNum(inoutDayCount.getInSelfMemberNum())+1);//内部人员入场人次 | 
 |  |  |                         }else{ | 
 |  |  |                             inoutDayCount.setInOtherMemberNum(Constants.formatIntegerNum(inoutDayCount.getInOtherMemberNum())+1);//相关方入场人次 | 
 |  |  |                         } | 
 |  |  |                     }else{ | 
 |  |  |                         if(Constants.equalsInteger(member.getCompanyType(),Constants.ONE)){ | 
 |  |  |                             inoutDayCount.setOutSelfMemberNum(Constants.formatIntegerNum(inoutDayCount.getOutSelfMemberNum())+1);//内部人员出场人次 | 
 |  |  |                         }else{ | 
 |  |  |                             inoutDayCount.setOutOtherMemberNum(Constants.formatIntegerNum(inoutDayCount.getOutOtherMemberNum())+1);//相关方出场人次 | 
 |  |  |                         } | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  | 
 |  |  |         retention.setMemberId(member.getId()); | 
 |  |  |         retention.setDeviceName(request.getSrcName()); | 
 |  |  |         retention.setDeviceIndex(request.getSrcIndex()); | 
 |  |  |  | 
 |  |  |         return retention; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | 
 |  |  |                 //再插入最新的在厂人员 | 
 |  |  |                 retentionMapper.insert(retentionList); | 
 |  |  |             } | 
 |  |  |             log.error("【海康访客事件推送】========成功======="); | 
 |  |  |             log.info("【海康访客事件推送】========成功======="); | 
 |  |  |         }catch (Exception e){ | 
 |  |  |  | 
 |  |  |             log.error("【海康访客事件推送】========失败=======:\n"+e.getMessage()); | 
 |  |  | 
 |  |  |             List<VisitEvent> list = new ArrayList<>(); | 
 |  |  |             List<Integer> delRetentionLis = new ArrayList<>(); | 
 |  |  |             List<Retention> retentionList = new ArrayList<>(); | 
 |  |  |             InoutDayCount inoutDayCount = new InoutDayCount(); | 
 |  |  |             for(EventVisitIccmInfoRequest request : events){ | 
 |  |  |                 if(request.getData() ==null || request.getData().getVisitorInvoices() ==null){ | 
 |  |  |                     continue; | 
 |  |  | 
 |  |  |                     continue; | 
 |  |  |                 } | 
 |  |  |                 //海康访客记录编码 | 
 |  |  |                 dealVisitDataByRequstIccm(request,delRetentionLis,retentionList); | 
 |  |  |                 dealVisitDataByRequstIccm(request,delRetentionLis,retentionList,inoutDayCount); | 
 |  |  |                 list.add(getVisitEventModelByRequestIccm(request,request.getData().getVisitorInformationList().get(0))); | 
 |  |  |             } | 
 |  |  |             if(list.size()>0){ | 
 |  |  | 
 |  |  |                 //再插入最新的在厂人员 | 
 |  |  |                 retentionMapper.insert(retentionList); | 
 |  |  |             } | 
 |  |  |             log.error("【海康访客事件推送】========成功======="); | 
 |  |  |             dealInoutDayCountBiz(inoutDayCount); | 
 |  |  |             log.info("【海康访客事件推送】========成功======="); | 
 |  |  |         }catch (Exception e){ | 
 |  |  |             log.error("【海康访客事件推送】========失败=======:\n"+e.getMessage()); | 
 |  |  |         } | 
 |  |  |         saveInterfaceLog(param,"/business/hksync/push/visitIccm",result,true); | 
 |  |  |         return  null; | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      *  根据访客推送访客记录编码,处理访客记录、在场人员等信息 | 
 |  |  |      */ | 
 |  |  |     private void dealVisitDataByRequstIccm(EventVisitIccmInfoRequest request, List<Integer> delRetentionLis, List<Retention> retentionList ) { | 
 |  |  |  | 
 |  |  |     private void dealVisitDataByRequstIccm(EventVisitIccmInfoRequest request, List<Integer> delRetentionLis, List<Retention> retentionList,  InoutDayCount inoutDayCount) { | 
 |  |  |         EventVisitIccmDataRequest model = request.getData(); | 
 |  |  |         EventVisitIccmInvoiceParamRequest data =  request.getData().getVisitorInvoices(); | 
 |  |  |         MPJLambdaWrapper<Visits> queryWrapper = new MPJLambdaWrapper<>(); | 
 |  |  | 
 |  |  |         queryWrapper.last("limit 1"); | 
 |  |  |         Visits visits = visitsMapper.selectJoinOne(Visits.class,queryWrapper); | 
 |  |  |         if(visits !=null){ | 
 |  |  |             //如果人员信息存在,则删除之前的所有进场数据(无论此次推送是进厂还是出场推送事件) | 
 |  |  |             delRetentionLis.add(visits.getMemberId()); | 
 |  |  |             if(dataSyncConfig.getOrgUserDataOrigin() == DataSyncConfig.origin.hk){ | 
 |  |  |                 //如果是伊利大屏项目,不做处理 | 
 |  |  |                 return; | 
 |  |  | 
 |  |  |             updateVistis.setId(visits.getId()); | 
 |  |  |             if (Constants.formatIntegerNum(request.getEventType()) == HKConstants.EventTypes.VISIT_SIGN_ICCM_IN.getKey()) { | 
 |  |  |                 //如果是访客登记,录入人员的在场数据记录 | 
 |  |  |                 retentionList.add(getRetentionModelByVisitRequest(visits, request.getHappenTime(),request.getSrcType())); | 
 |  |  |                 //retentionList.add(getRetentionModelByVisitRequest(visits, request.getHappenTime(),request.getSrcType())); | 
 |  |  |                 //来访时间 | 
 |  |  |                 updateVistis.setStatus(Constants.VisitStatus.signin); | 
 |  |  |                 updateVistis.setInDate(DateUtil.getISO8601DateByStr(data.getBeginTime())); | 
 |  |  |                 updateVistis.setOutDate(DateUtil.getISO8601DateByStr(data.getFinishTime())); | 
 |  |  |                 if(Constants.equalsInteger(visits.getStatus(),Constants.VisitStatus.xfSuccess)){ | 
 |  |  |                     inoutDayCount.setSigninVisitorNum(Constants.formatIntegerNum(inoutDayCount.getSigninVisitorNum())+1); | 
 |  |  |                     updateVistis.setStatus(Constants.VisitStatus.signin); | 
 |  |  |                     updateVistis.setInDate(DateUtil.getISO8601DateByStr(data.getBeginTime())); | 
 |  |  |                     updateVistis.setOutDate(DateUtil.getISO8601DateByStr(data.getFinishTime())); | 
 |  |  |                 } | 
 |  |  |                 //更新最新来访时间 | 
 |  |  |                 Member member = new Member(); | 
 |  |  |                 member.setLastVisitDate(updateVistis.getInDate()); | 
 |  |  |                 member.setId(visits.getMemberId()); | 
 |  |  |                 memberMapper.updateById(member); | 
 |  |  |             }else  if (Constants.formatIntegerNum(request.getEventType()) == HKConstants.EventTypes.VISIT_SIGN_ICCM_OUT.getKey())  { | 
 |  |  |             }else if (Constants.formatIntegerNum(request.getEventType()) == HKConstants.EventTypes.VISIT_SIGN_ICCM_OUT.getKey())  { | 
 |  |  |                 //如果是访客签离事件 | 
 |  |  |                 updateVistis.setStatus(Constants.VisitStatus.signout); | 
 |  |  |                 updateVistis.setInDate(DateUtil.getISO8601DateByStr(data.getBeginTime())); | 
 |  |  |                 updateVistis.setOutDate(DateUtil.getISO8601DateByStr(data.getFinishTime())); | 
 |  |  |                 updateVistis.setOutType(Constants.ZERO); | 
 |  |  |                 updateVistis.setOutInfo("访客正常签离"); | 
 |  |  |                 if(Constants.equalsInteger(visits.getStatus(),Constants.VisitStatus.signin)){ | 
 |  |  |                     inoutDayCount.setLeaveVisitorNum(Constants.formatIntegerNum(inoutDayCount.getLeaveVisitorNum())+1); | 
 |  |  |                     updateVistis.setStatus(Constants.VisitStatus.signout); | 
 |  |  |                     updateVistis.setInDate(DateUtil.getISO8601DateByStr(data.getBeginTime())); | 
 |  |  |                     updateVistis.setOutDate(DateUtil.getISO8601DateByStr(data.getFinishTime())); | 
 |  |  |                     updateVistis.setOutType(Constants.ZERO); | 
 |  |  |                     updateVistis.setOutInfo("访客正常签离"); | 
 |  |  |                 } | 
 |  |  |                 delRetentionLis.add(visits.getMemberId()); | 
 |  |  |             }else{ | 
 |  |  |                 //如果人员信息存在,切是访客通行,则删除之前的所有进场数据(无论此次推送是进厂还是出场推送事件) | 
 |  |  |                 delRetentionLis.add(visits.getMemberId()); | 
 |  |  |                 //如果是访客通行 | 
 |  |  |                 if(request.getData()!=null&&request.getData().getParamValues()!=null && | 
 |  |  |                         StringUtils.equals(request.getData().getParamValues().getInOrOut(),"0")){ | 
 |  |  |                     //如果是访客登记,录入人员的在场数据记录 | 
 |  |  |                     Retention r = getRetentionModelByVisitRequest(visits, request.getHappenTime(),request.getSrcType()); | 
 |  |  |                     r.setCarNo(request.getData().getParamValues().getPlateNos()); | 
 |  |  |                     r.setAccessType(request.getData().getParamValues().getAccessType()); | 
 |  |  |                     r.setDeviceName(request.getData().getParamValues().getSrcName()); | 
 |  |  |                     r.setDeviceIndex(request.getData().getParamValues().getSrcIndex()); | 
 |  |  |                     retentionList.add(r); | 
 |  |  |                     inoutDayCount.setInVisitorNum(Constants.formatIntegerNum(inoutDayCount.getInVisitorNum())+1); | 
 |  |  |                 } | 
 |  |  |                 if(request.getData()!=null&&request.getData().getParamValues()!=null && | 
 |  |  |                          !StringUtils.equals(request.getData().getParamValues().getInOrOut(),"0")){ | 
 |  |  |                     inoutDayCount.setOutVisitorNum(Constants.formatIntegerNum(inoutDayCount.getOutVisitorNum())+1); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |             updateVistis.setEditDate(new Date()); | 
 |  |  |             //更新访客来访或者签离时间信息 | 
 |  |  |             visitsMapper.updateById(updateVistis) ; | 
 |  |  |  | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |     private Retention getRetentionModelByVisitRequest(Visits visits, String happentTime,String srcType) { | 
 |  |  |         Retention retention = new Retention(); | 
 |  |  |         retention.setIsdeleted(Constants.ZERO); | 
 |  |  |         retention.setCreateDate(DateUtil.getISO8601DateByStr(happentTime)); | 
 |  |  |         retention.setCreateDate(DateUtil.getISO8601DateByStr2(happentTime)); | 
 |  |  |         retention.setCreateDate(retention.getCreateDate() == null?new Date():retention.getCreateDate()); | 
 |  |  |         retention.setClasses(visits.getClasses()); | 
 |  |  |         retention.setCode(visits.getCode()); | 
 |  |  |         retention.setIdcardNo(visits.getIdcardNo()); | 
 |  |  | 
 |  |  |         retention.setImgurl(visits.getImgurl()); | 
 |  |  |         retention.setPhone(visits.getPhone()); | 
 |  |  |         retention.setMemberId(visits.getMemberId()); | 
 |  |  | //        retention.setDeviceName(request.getSrcName()); | 
 |  |  | //        retention.setDeviceIndex(request.getSrcIndex()); | 
 |  |  |  | 
 |  |  |         return retention; | 
 |  |  |     } | 
 |  |  |     private VisitEvent getVisitEventModelByRequestIccm(EventVisitIccmInfoRequest request,EventVisitIccmDetailParamRequest detail) { | 
 |  |  | 
 |  |  |         if(event.getCreateDate() == null){ | 
 |  |  |             event.setCreateDate(new Date()); | 
 |  |  |         } | 
 |  |  |         if (Constants.formatIntegerNum(request.getEventType()) == HKConstants.EventTypes.VISIT_SIGN_ICCM_PASS.getKey())  { | 
 |  |  |             //如果是访客通行事件,进入进出事件 | 
 |  |  |             if(request.getData()!=null&&request.getData().getParamValues()!=null && | 
 |  |  |                     StringUtils.equals(request.getData().getParamValues().getInOrOut(),"0")){ | 
 |  |  |                 event.setInOrOut("0");//进 | 
 |  |  |             }else{ | 
 |  |  |                 event.setInOrOut("1");//出 | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         event.setVisitorWorkUint(detail.getUnit()); | 
 |  |  |         event.setVisitorId(detail.getVisitorId()); | 
 |  |  |         event.setVisitorCode(detail.getAppointmentCode()); | 
 |  |  | 
 |  |  |         event.setStartTime(request.getData().getVisitorInvoices().getBeginTime()); | 
 |  |  |         event.setSrcType(request.getSrcType()); | 
 |  |  |         event.setSrcParentIndex(request.getSrcParentIndex()); | 
 |  |  |         event.setSrcName(request.getSrcName()); | 
 |  |  |         event.setSrcName((request.getData()!=null &&request.getData().getParamValues()!=null)? | 
 |  |  |                 request.getData().getParamValues().getSrcName():request.getSrcName()); | 
 |  |  |         event.setSrcIndex(request.getSrcIndex()); | 
 |  |  |         event.setSex(detail.getSex()); | 
 |  |  |         event.setPurpose(request.getData().getVisitorInvoices().getVisitReason()); | 
 |  |  | 
 |  |  |         event.setPhotoUrl(getHkImgUrl(detail.getFacePic())); | 
 |  |  |         event.setPersonName(detail.getVisitorName()); | 
 |  |  |         event.setCarNo(detail.getPlateNo()); | 
 |  |  |         event.setRemark(JSONObject.toJSONString(request)); | 
 |  |  |         event.setInvoicesNo(request.getData().getVisitorInvoices().getInvoicesNo());//访客单号 | 
 |  |  |         event.setIdType(detail.getCertType()); | 
 |  |  |         String idnum = detail.getCertNo(); | 
 |  |  | 
 |  |  |             List<CarEvent> list = new ArrayList<>(); | 
 |  |  |             List<Retention> retentionList = new ArrayList<>(); | 
 |  |  |             List<String> delRetentionList = new ArrayList<>(); | 
 |  |  |             InoutDayCount inoutDayCount = new InoutDayCount(); | 
 |  |  |             for(EventParkInfoRequest request : events){ | 
 |  |  |                 if(request.getData() ==null ||StringUtils.isBlank(request.getData().getPlateNo())){ | 
 |  |  |                     continue; | 
 |  |  |                 } | 
 |  |  |                 //封装事件信息表对象 | 
 |  |  |                 list.add(getParkEventModelByRequest(request,delRetentionList,retentionList)); | 
 |  |  |                 list.add(getParkEventModelByRequest(request,delRetentionList,retentionList,inoutDayCount)); | 
 |  |  |             } | 
 |  |  |             if(list.size()>0){ | 
 |  |  |                 //插入门禁记录 | 
 |  |  | 
 |  |  |                 //再插入最新的在厂人员 | 
 |  |  |                 retentionMapper.insert(retentionList); | 
 |  |  |             } | 
 |  |  |             log.error("【海康停车场事件推送】========成功======="); | 
 |  |  |             dealInoutDayCountBiz(inoutDayCount); | 
 |  |  |             log.info("【海康停车场事件推送】========成功======="); | 
 |  |  |         }catch (Exception e){ | 
 |  |  |  | 
 |  |  |             e.printStackTrace(); | 
 |  |  |             log.error("【海康停车场事件推送】========失败=======:\n"+e.getMessage()); | 
 |  |  |         } | 
 |  |  |         saveInterfaceLog(param,"/business/hksync/push/parks",result,false); | 
 |  |  | 
 |  |  |      * @param request | 
 |  |  |      * @return | 
 |  |  |      */ | 
 |  |  |     private CarEvent getParkEventModelByRequest(EventParkInfoRequest request, List<String> delRetentionList , List<Retention> retentionList ) { | 
 |  |  |     private CarEvent getParkEventModelByRequest(EventParkInfoRequest request, List<String> delRetentionList , List<Retention> retentionList,InoutDayCount inoutDayCount ) { | 
 |  |  |         CarEvent event = new CarEvent(); | 
 |  |  |         event.setIsdeleted(Constants.ZERO); | 
 |  |  |         event.setCreateDate(DateUtil.getISO8601DateByStr(request.getHappenTime())); | 
 |  |  | 
 |  |  |         event.setEventCmd(request.getData().getEventCmd()); | 
 |  |  |         event.setCardNo(request.getData().getCardNo()); | 
 |  |  |         event.setCarAttributeName(request.getData().getCarAttributeName()); | 
 |  |  |  | 
 |  |  |         event.setCarType(Constants.RetentionCarType.unknown);//默认未登记车辆 | 
 |  |  |         if(request.getData().getInResult()!=null && request.getData().getInResult().getRlsResult() !=null ){ | 
 |  |  |             //放行方式 | 
 |  |  |             event.setReleaseWay(request.getData().getInResult().getRlsResult().getReleaseWay()); | 
 |  |  | 
 |  |  |             event.setReleaseResult(request.getData().getInResult().getRlsResult().getReleaseResult()); | 
 |  |  |             event.setReleaseResultEx(request.getData().getInResult().getRlsResult().getReleaseResultEx()); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         if(request.getData().getPicUrl()!=null){ | 
 |  |  |             //车辆和和车牌照片 | 
 |  |  |             event.setVehiclePicUrl(getHkImgUrl(request.getData().getPicUrl().getVehiclePicUrl())); | 
 |  |  |             event.setPlatePicUrl(getHkImgUrl(request.getData().getPicUrl().getPlatePicUrl())); | 
 |  |  |         } | 
 |  |  |         if(StringUtils.isNotBlank(event.getPlateNos())){ | 
 |  |  |             Cars carModel = carsMapper.selectJoinOne(Cars.class,new MPJLambdaWrapper<Cars>() | 
 |  |  |                             .selectAll(Cars.class ) | 
 |  |  |                             .selectAs(Company::getType,Cars::getCompanyType) | 
 |  |  |                             .leftJoin(Company.class,Company::getId,Cars::getGroupId) | 
 |  |  |                             .eq(Cars::getCode,event.getPlateNos()) | 
 |  |  |                             .eq(Cars::getIsdeleted,Constants.ZERO) | 
 |  |  |                             .last(" limit 1")); | 
 |  |  |             if(carModel!=null){ | 
 |  |  |                 //0安泰公务车 1安泰自有物流车 2其它 | 
 |  |  |                 event.setMemberId(carModel.getMemberId()); | 
 |  |  |                 event.setCompanyId(carModel.getGroupId()); | 
 |  |  |                 if(Constants.equalsInteger(carModel.getType(),Constants.ONE)){ | 
 |  |  |                     event.setCarType(Constants.RetentionCarType.selfTruck); | 
 |  |  |                 }else { | 
 |  |  |                     if(Constants.equalsInteger(carModel.getCompanyType(),Constants.ONE)){ | 
 |  |  |                         event.setCarType(Constants.RetentionCarType.internal);//内部车辆 | 
 |  |  |                     }else{ | 
 |  |  |                         event.setCarType(Constants.RetentionCarType.relation);//相关方车辆 | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |             PlatformJob carTypeJob = platformJobMapper.selectOne(new QueryWrapper<PlatformJob>().lambda() | 
 |  |  |                             .eq(PlatformJob::getCarCodeFront,event.getPlateNos()) | 
 |  |  |                             .eq(PlatformJob::getIsdeleted,Constants.ZERO) | 
 |  |  |                             .orderByAsc(PlatformJob::getCreateDate) | 
 |  |  |                             .last(" limit 1")); | 
 |  |  |             if(carTypeJob!=null){ | 
 |  |  |                 //作业类型 0自有车卸货 1自有车装货 2外协车卸货 3外协车装货 4市公司外协车卸货 | 
 |  |  |                 if(Constants.equalsInteger(carTypeJob.getType(),Constants.FOUR)){ | 
 |  |  |                     event.setCarType(Constants.RetentionCarType.cityComTruck);//市公司车辆 | 
 |  |  |                 }else if(Constants.equalsInteger(carTypeJob.getType(),Constants.TWO) | 
 |  |  |                         || Constants.equalsInteger(carTypeJob.getType(),Constants.THREE)){ | 
 |  |  |                     event.setCarType(Constants.RetentionCarType.outTruck);//外协车 | 
 |  |  |                 }else{ | 
 |  |  |                     event.setCarType(Constants.RetentionCarType.selfTruck);//自有车 | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |             ParkBook cars = parkBookMapper.selectOne(new QueryWrapper<ParkBook>().lambda() | 
 |  |  |                     .eq(ParkBook::getCarCode,event.getPlateNos()) | 
 |  |  |                             .eq(ParkBook::getIsdeleted,Constants.ZERO ) | 
 |  |  |                     .last("limit 1" )); | 
 |  |  |             if(cars!=null){ | 
 |  |  |                 event.setMemberId(cars.getMemberId()); | 
 |  |  |                 //自有车  查询当前是否有待签到的任务 | 
 |  |  |                 if(carsMapper.selectCount(new QueryWrapper<Cars>() | 
 |  |  |                         .lambda().eq(Cars::getCode,event.getPlateNos()) | 
 |  |  |                         .eq(Cars::getType,Constants.ONE) | 
 |  |  |                         .eq(Cars::getIsdeleted,Constants.ZERO) | 
 |  |  |                 )>Constants.ZERO){ | 
 |  |  |                     //查询车辆当前是否存在进行中的任务 | 
 |  |  |                     if( platformJobMapper.selectCount(new QueryWrapper<PlatformJob>().lambda() | 
 |  |  |                             .eq(PlatformJob::getCarCodeFront,event.getPlateNos()) | 
 |  |  |                             .eq(PlatformJob::getIsdeleted,Constants.ZERO) | 
 |  |  |                             .in(PlatformJob::getStatus, | 
 |  |  |                                     Constants.PlatformJobStatus.IN_WAIT.getKey(), | 
 |  |  |                                     Constants.PlatformJobStatus.CALLED.getKey(), | 
 |  |  |                                     Constants.PlatformJobStatus.WORKING.getKey(), | 
 |  |  |                                     Constants.PlatformJobStatus.TRANSFERING.getKey(), | 
 |  |  |                                     Constants.PlatformJobStatus.EXCEPTION.getKey() | 
 |  |  |                             ) | 
 |  |  |                     )==Constants.ZERO){//如果没进行中任务 | 
 |  |  |                         PlatformJob platformJob = platformJobMapper.selectOne(new QueryWrapper<PlatformJob>().lambda() | 
 |  |  |                                 .eq(PlatformJob::getCarCodeFront,event.getPlateNos()) | 
 |  |  |                                 .eq(PlatformJob::getIsdeleted,Constants.ZERO) | 
 |  |  |                                 .in(PlatformJob::getStatus, | 
 |  |  |                                         Constants.PlatformJobStatus.WAIT_CONFIRM.getKey(), | 
 |  |  |                                         Constants.PlatformJobStatus.WART_SIGN_IN.getKey() | 
 |  |  |                                 ) | 
 |  |  |                                 .orderByAsc(PlatformJob::getCreateDate) | 
 |  |  |                                 .last(" limit 1") | 
 |  |  |                         ); | 
 |  |  |                         if(Objects.nonNull(platformJob)){ | 
 |  |  |                             if(Constants.equalsInteger(platformJob.getType(),Constants.ONE)){ | 
 |  |  |                                 //如果是自有车装货自动签到 | 
 |  |  |                                 jobAutoSignBiz(platformJob); | 
 |  |  |                             }else  if(Constants.equalsInteger(platformJob.getType(),Constants.ZERO)){ | 
 |  |  |                                 //如果是自有车卸货 查询TMS合同状态,决定是否自动签到 | 
 |  |  |                                 checkTmsContractStatusBiz(platformJob); | 
 |  |  |                             } | 
 |  |  |  | 
 |  |  |                         } | 
 |  |  |                     } | 
 |  |  |                 }; | 
 |  |  |             }else{ | 
 |  |  |                 Visits visits =  visitsMapper.selectOne(new QueryWrapper<Visits>().lambda() | 
 |  |  |                         .eq(Visits::getCarNos,event.getPlateNos()) | 
 |  |  | 
 |  |  |                 if(visits!=null){ | 
 |  |  |                     //最近使用该车的申请人(已到达) | 
 |  |  |                     event.setMemberId(visits.getMemberId()); | 
 |  |  |                     event.setCarType(Constants.RetentionCarType.visitor); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |             if(Constants.formatIntegerNum(request.getEventType()) == HKConstants.EventTypes.PARK_PASS_IN.getKey()){ | 
 |  |  |                 //如果是入厂放行 | 
 |  |  |                 delRetentionList.add(event.getPlateNos()); | 
 |  |  |                 retentionList.add(getRetentionModelByParkRequest(request)); | 
 |  |  |                 retentionList.add(getRetentionModelByParkRequest(request,event)); | 
 |  |  |                 inoutDayCount.setInCarNum(Constants.formatIntegerNum(inoutDayCount.getInCarNum())+1); | 
 |  |  |             }else if(Constants.formatIntegerNum(request.getEventType()) == HKConstants.EventTypes.PARK_PASS_OUT.getKey()){ | 
 |  |  |                 //如果是出场放行 | 
 |  |  |                 delRetentionList.add(event.getPlateNos()); | 
 |  |  |                 inoutDayCount.setOutCarNum(Constants.formatIntegerNum(inoutDayCount.getOutCarNum())+1); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         return event; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * ;如果是卸货任务,需要通过TMS提供的“2.2合同列表接口”接口查询车辆对应的合同状态是否为在途状态(对应orderStatus值为3/4/5/6), | 
 |  |  |      * 如果是自动签到,否则不自动签到;如果一个车辆对应多个合同号,则取运单下任一合同查询对应在途信息 | 
 |  |  |      * @param platformJob | 
 |  |  |      */ | 
 |  |  |     private void checkTmsContractStatusBiz(PlatformJob platformJob) { | 
 |  |  |         PlatformWmsDetail detail = platformWmsDetailMapper.selectOne(new QueryWrapper<PlatformWmsDetail>().lambda() | 
 |  |  |                 .eq(PlatformWmsDetail::getIsdeleted, Constants.ZERO) | 
 |  |  |                 .eq(PlatformWmsDetail::getJobId, platformJob.getId()) | 
 |  |  |                 .isNotNull(PlatformWmsDetail::getContractNum) | 
 |  |  |                 .last("limit 1") | 
 |  |  |         ); | 
 |  |  |         if(detail!=null && StringUtils.isNotBlank(detail.getContractNum())){ | 
 |  |  |             TmsOrderInfoRequest param = new TmsOrderInfoRequest(); | 
 |  |  |             param.setContractNumber(detail.getContractNum()); | 
 |  |  |             TmsOrderInfoResponse response = tmsService.orderInfo(param); | 
 |  |  |             if(response!=null &&( StringUtils.equals(response.getOrderStatus(),"3")  ) | 
 |  |  |                 ||StringUtils.equals(response.getOrderStatus(),"4") | 
 |  |  |                 ||StringUtils.equals(response.getOrderStatus(),"5") | 
 |  |  |                 ||StringUtils.equals(response.getOrderStatus(),"6")){ | 
 |  |  |                 //如果合同在途,则自动签到 | 
 |  |  |                 jobAutoSignBiz(platformJob); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         return event; | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     private Retention getRetentionModelByParkRequest(EventParkInfoRequest request) { | 
 |  |  |     private void jobAutoSignBiz(PlatformJob platformJob) { | 
 |  |  |         platformJob.setStatus(Constants.PlatformJobStatus.WAIT_CALL.getKey()); | 
 |  |  |         platformJob.setArriveDate(new Date()); | 
 |  |  |         platformJob.setSingType(Constants.TWO); | 
 |  |  |         platformJob.setSignDate(new Date()); | 
 |  |  |         List<PlatformJob> signList = platformJobMapper.selectList(new QueryWrapper<PlatformJob>().lambda().apply(" DATE(SIGN_DATE) = DATE(NOW()) and sign_date is not null  ")); | 
 |  |  |         if(CollectionUtils.isEmpty(signList)){ | 
 |  |  |             platformJob.setSignNum(Constants.ONE); | 
 |  |  |         } else{ | 
 |  |  |             int maxNumber = Collections.max(signList.stream().map(i->i.getSignNum()).collect(Collectors.toList())); | 
 |  |  |             platformJob.setSignNum(maxNumber + Constants.ONE); | 
 |  |  |         } | 
 |  |  |         platformJobMapper.updateById(platformJob); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     private Retention getRetentionModelByParkRequest(EventParkInfoRequest request,CarEvent event) { | 
 |  |  |         Retention retention = new Retention(); | 
 |  |  |         retention.setIsdeleted(Constants.ZERO); | 
 |  |  |         retention.setCreateDate(DateUtil.getISO8601DateByStr(request.getHappenTime())); | 
 |  |  |         retention.setCarNo(request.getData().getPlateNo()); | 
 |  |  |         retention.setType(Constants.THREE); | 
 |  |  |         retention.setMemberId(event.getMemberId()); | 
 |  |  |         retention.setCarType(event.getCarType()); | 
 |  |  |         retention.setCompanyId(event.getCompanyId()); | 
 |  |  | //        retention.setDeviceName(request.getSrcName()); | 
 |  |  | //        retention.setDeviceIndex(request.getSrcIndex()); | 
 |  |  |  | 
 |  |  |         return retention; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | 
 |  |  |                     } | 
 |  |  |             } | 
 |  |  |             result = "成功"; | 
 |  |  |             log.error("【海康月台工作状态事件推送】========成功======="); | 
 |  |  |             log.info("【海康月台工作状态事件推送】========成功======="); | 
 |  |  |         }catch (Exception e) { | 
 |  |  |             result = "失败"+e.getMessage(); | 
 |  |  |             log.error("【海康月台工作状态事件推送】========失败=======:\n" + e.getMessage()); | 
 |  |  | 
 |  |  |             List<EventPlatformCarsInfoRequest> events  = param.getParams().getEvents(); | 
 |  |  |             List<PlatformEvent> eventList = new ArrayList<>(); | 
 |  |  |             for(EventPlatformCarsInfoRequest request : events){ | 
 |  |  |                 if( request.getData() ==null ||  request.getData().size()==0){ | 
 |  |  |                 if( request.getData() ==null  ){ | 
 |  |  |                     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()){ | 
 |  |  |                         eventList.add(initPlatformEventModel(request,data,status));//封装事件(已月台通道为维度) | 
 |  |  |                         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 ) | 
 |  |  |                 EventPlatformCarsDataRequest data = request.getData(); | 
 |  |  |                 if( data.getHPVehicleStatus() ==null  ){ | 
 |  |  |                     continue;//如何推送状态集合为空,不处理跳过 | 
 |  |  |                 } | 
 |  |  |                 //各车道车辆状态 | 
 |  |  |                 EventPlatformCarsStatusInfoRequest status = data.getHPVehicleStatus(); | 
 |  |  |                 PlatformEvent event = initPlatformEventModel(request,data,status); | 
 |  |  |                 if(StringUtils.isBlank(status.getPlateNo())){ | 
 |  |  |                     eventList.add(event);//封装事件(已月台通道为维度) | 
 |  |  |                     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){ | 
 |  |  |                     eventList.add(event);//封装事件(已月台通道为维度) | 
 |  |  |                     continue;//监控点未同步,跳过处理 | 
 |  |  |                 } | 
 |  |  |                 event.setPlatformId(model.getPlatformId());//月台编码 | 
 |  |  |                 eventList.add(event);//封装事件(已月台通道为维度) | 
 |  |  |                 //截掉第一个颜色汉字,去掉“挂”字 | 
 |  |  |                 status.setPlateNo(status.getPlateNo().substring(1,status.getPlateNo().length()).replace("挂","")); | 
 |  |  |                 PlatformJob job = platformJobMapper.selectJoinOne(PlatformJob.class, new MPJLambdaWrapper<PlatformJob>() | 
 |  |  |                         .selectAll(PlatformJob.class) | 
 |  |  |                         .selectAs(Platform::getName,PlatformJob::getPlatformName) | 
 |  |  |                         .selectAs(Platform::getLedContent,PlatformJob::getLedContent) | 
 |  |  |                         .leftJoin(Platform.class,Platform::getId,PlatformJob::getPlatformId) | 
 |  |  | //                        .eq(!StringUtils.equals(status.getStockStatus(),"front"),PlatformJob::getCarCodeBack,status.getPlateNo() )//后车牌号 | 
 |  |  | //                        .eq(StringUtils.equals(status.getStockStatus(),"front"),PlatformJob::getCarCodeFront,status.getPlateNo() )//前车牌号 | 
 |  |  |                         .eq(PlatformJob::getIsdeleted,Constants.ZERO ) | 
 |  |  |                         .eq(PlatformJob::getPlatformId,model.getPlatformId() ) | 
 |  |  |                         .orderByDesc(PlatformJob::getCallDate) | 
 |  |  |                         .last("limit 1 ")); | 
 |  |  |                 if(job == null){ | 
 |  |  |                     if(StringUtils.equals(status.getMotionStatus(),"enter")){ | 
 |  |  |                         //如果月台当前没作业,直接提示车辆停错 | 
 |  |  |                         Platform platform = platformMapper.selectJoinOne(Platform.class, new MPJLambdaWrapper<Platform>() | 
 |  |  |                                 .selectAll(Platform.class) | 
 |  |  |                                 .eq(Platform::getIsdeleted,Constants.ZERO ) | 
 |  |  |                                 .eq(PlatformJob::getId,model.getPlatformId() ) | 
 |  |  |                                 .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;//如果没查到对应的作业或者作业并非作业中,不做业务处理 | 
 |  |  |                             } | 
 |  |  |                             if(Constants.equalsInteger(job.getType(), Constants.THREE) || Constants.equalsInteger(job.getType(), Constants.TWO)){ | 
 |  |  |                                 //如果是wms推送的外协车辆外协车辆 | 
 |  |  |                                if(platformWmsDetailMapper.selectCount(new QueryWrapper<PlatformWmsDetail>().lambda() | 
 |  |  |                                        .eq(PlatformWmsDetail::getIsdeleted,Constants.ZERO) | 
 |  |  |                                        .eq(PlatformWmsDetail::getJobId,job.getId()) | 
 |  |  |                                        .ne(PlatformWmsDetail::getLockStatus,Constants.ONE)) >0){ | 
 |  |  |                                    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); | 
 |  |  |                             } | 
 |  |  |                             if(job.getStartDate() == null){ | 
 |  |  |                                 update.setStartDate(update.getEditDate()); | 
 |  |  |                             } | 
 |  |  |                             update.setStatus(Constants.PlatformJobStatus.WORKING.getKey());//开始作业 | 
 |  |  |                         }else{ | 
 |  |  |                             continue;//其他状态不处理,跳过 | 
 |  |  |                         if(platform!=null){ | 
 |  |  |                             dealCarsAndPlatformErrorBiz(platform,status); | 
 |  |  |                         } | 
 |  |  |                     } | 
 |  |  |                     continue;//如果作业为空,跳过处理 | 
 |  |  |                 } | 
 |  |  |                 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;//如果没查到对应的作业或者作业并非作业中,不做业务处理 | 
 |  |  |                     } | 
 |  |  |                     if(Constants.equalsInteger(job.getType(), Constants.THREE) || Constants.equalsInteger(job.getType(), Constants.TWO)){ | 
 |  |  |                         //如果是wms推送的外协车辆外协车辆 | 
 |  |  |                        if(platformWmsDetailMapper.selectCount(new QueryWrapper<PlatformWmsDetail>().lambda() | 
 |  |  |                                .eq(PlatformWmsDetail::getIsdeleted,Constants.ZERO) | 
 |  |  |                                .eq(PlatformWmsDetail::getJobId,job.getId()) | 
 |  |  |                                .ne(PlatformWmsDetail::getLockStatus,Constants.ONE)) >0){ | 
 |  |  |                            continue;//如果外协任务作业,合同号有未上锁的情况,不做自动完成作业逻辑处理,跳过不处理 | 
 |  |  |                        } | 
 |  |  |                     } | 
 |  |  |                     //如果是正在作业的状态,标记作业已完成 | 
 |  |  |                     update.setStatus(Constants.PlatformJobStatus.DONE.getKey());//作业已完成 | 
 |  |  |                     update.setDoneDate(update.getEditDate());*/ | 
 |  |  |                     if(Constants.equalsInteger(job.getStatus(),Constants.PlatformJobStatus.DONE.getKey()) || | 
 |  |  |                             Constants.equalsInteger(job.getStatus(),Constants.PlatformJobStatus.TRANSFERING.getKey()) || | 
 |  |  |                             Constants.equalsInteger(job.getStatus(),Constants.PlatformJobStatus.EXCEPTION.getKey()) || | 
 |  |  |                             Constants.equalsInteger(job.getStatus(),Constants.PlatformJobStatus.AUTHED_LEAVE.getKey())){ | 
 |  |  |                         if(((StringUtils.equals(status.getStockStatus(),"front") && StringUtils.equals(job.getCarCodeFront(),status.getPlateNo())) | 
 |  |  |                                 ||(!StringUtils.equals(status.getStockStatus(),"front") && StringUtils.equals(job.getCarCodeBack(),status.getPlateNo())) | 
 |  |  |                         )){ | 
 |  |  |                             //说明车辆进错月台 或者还未叫号状态,发起警告 | 
 |  |  | //                          dealCarsInErrorPlatformBiz(job,status); | 
 |  |  |                             if(Constants.equalsInteger(job.getStatus(),Constants.PlatformJobStatus.DONE.getKey())  || | 
 |  |  |                                     Constants.equalsInteger(job.getStatus(),Constants.PlatformJobStatus.AUTHED_LEAVE.getKey())){ | 
 |  |  |                                 update.setInOut(Constants.ZERO);//车辆已经离开 | 
 |  |  |                                 platformJobMapper.updateById(update); | 
 |  |  |                             } | 
 |  |  |                             dealPlatformContentForLeave(job); | 
 |  |  |                          } | 
 |  |  |                     } | 
 |  |  |                 }else  if(StringUtils.equals(status.getMotionStatus(),"enter")){ | 
 |  |  |                     //如果是车辆进入 | 
 |  |  |                     if(Constants.equalsInteger(job.getStatus(),Constants.PlatformJobStatus.CALLED.getKey())){ | 
 |  |  |                         if(!((StringUtils.equals(status.getStockStatus(),"front") && StringUtils.equals(job.getCarCodeFront(),status.getPlateNo())) | 
 |  |  |                                 ||(!StringUtils.equals(status.getStockStatus(),"front") && StringUtils.equals(job.getCarCodeBack(),status.getPlateNo())) | 
 |  |  |                         )){ | 
 |  |  |                             //说明车辆进错月台 或者还未叫号状态,发起警告 | 
 |  |  |                             dealCarsInErrorPlatformBiz(job,status); | 
 |  |  |                         }else{ | 
 |  |  |                             //车辆已经进入 | 
 |  |  |                             update.setInOut(Constants.ONE);//车辆已经进入 | 
 |  |  |                             platformJobMapper.updateById(update); | 
 |  |  |                         } | 
 |  |  |                     } | 
 |  |  |                     /* | 
 |  |  |                     if(job.getStartDate() == null){ | 
 |  |  |                         update.setStartDate(update.getEditDate()); | 
 |  |  |                     } | 
 |  |  |                     update.setStatus(Constants.PlatformJobStatus.WORKING.getKey());//开始作业 | 
 |  |  |                     */ | 
 |  |  |                 }else{ | 
 |  |  |                     continue;//其他状态不处理,跳过 | 
 |  |  |                 } | 
 |  |  |                         //暂时不做相关自动完成作业业务处理 | 
 |  |  | //                        dealPlatformJobLogBiz(update,status);//记录作业日志 | 
 |  |  |                     } | 
 |  |  |                     break;//只处理第一个数据状态 | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |             if(eventList.size()>0){ | 
 |  |  |                 //生成事件 | 
 |  |  |                 platformEventMapper.insert(eventList); | 
 |  |  |             } | 
 |  |  |             result = "成功"; | 
 |  |  |             log.error("【海康月台车辆状态事件推送】========成功======="); | 
 |  |  |             log.info("【海康月台车辆状态事件推送】========成功======="); | 
 |  |  |         }catch (Exception e) { | 
 |  |  |             result = "失败"+e.getMessage(); | 
 |  |  |             log.error("【海康月台车辆状态事件推送】========失败=======:\n" + e.getMessage()); | 
 |  |  | 
 |  |  |             saveInterfaceLog(param,"/business/hksync/push/platform/workstatus",result,false);//不计日志 | 
 |  |  |         } | 
 |  |  |         return  null; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 月台车辆离开 设置月台文案为“空闲中 文案” | 
 |  |  |      * @param model | 
 |  |  |      */ | 
 |  |  |     private void dealPlatformContentForLeave(PlatformJob model) { | 
 |  |  |         List<PlatformDevice> deviceList = platformDeviceMapper.selectList(new QueryWrapper<PlatformDevice>().lambda() | 
 |  |  |                 .eq(PlatformDevice::getType, Constants.ZERO) | 
 |  |  |                 .eq(PlatformDevice::getPlatformId,model.getPlatformId()) | 
 |  |  |                 .eq(PlatformDevice::getIsdeleted,Constants.ZERO)); | 
 |  |  |         if(deviceList ==null || deviceList.size() == 0){ | 
 |  |  |             return; | 
 |  |  |         } | 
 |  |  |         int speed = 13; | 
 |  |  |         try { | 
 |  |  |             speed = Integer.parseInt(systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.LED_CONTENT_SPEED).getCode()); | 
 |  |  |         }catch (Exception e){ | 
 |  |  |         } | 
 |  |  |         String content = StringUtils.defaultString(model.getLedContent(), Constants.PlatformLedContent.IDEL_CONTNET.getInfo()); | 
 |  |  |         List<PlatformBroadcastLog> logList = new ArrayList<>(); | 
 |  |  |         for(PlatformDevice device : deviceList){ | 
 |  |  |             if(StringUtils.isBlank(device.getHkId())){ | 
 |  |  |                 continue; | 
 |  |  |             } | 
 |  |  |             PlatformBroadcastLog log = dealLedContentBiz(model.getId(),device.getHkNo(),device.getName(),content,speed,1); | 
 |  |  |             logList.add(log); | 
 |  |  |         } | 
 |  |  |         if(logList.size()>0){ | 
 |  |  |             platformBroadcastLogMapper.insert(logList); | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     private PlatformEvent initPlatformEventModel(EventPlatformCarsInfoRequest request, EventPlatformCarsDataRequest data, EventPlatformCarsStatusInfoRequest status) { | 
 |  |  | 
 |  |  |                     .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);//更新上一次作业的完成时间和作业时长 | 
 |  |  | 
 |  |  |      * @param status | 
 |  |  |      */ | 
 |  |  |     private void dealCarsInErrorPlatformBiz( PlatformJob model,EventPlatformCarsStatusInfoRequest status) { | 
 |  |  |         //TODO-----------------处理车辆进入错误月台业务逻辑 | 
 |  |  |         //处理车辆进入错误月台业务逻辑 | 
 |  |  |         SavePlatformWarnEventDTO savePlatformWarnEventDTO = new SavePlatformWarnEventDTO(); | 
 |  |  |         savePlatformWarnEventDTO.setPlatformJobId(model.getId()); | 
 |  |  |         savePlatformWarnEventDTO.setPlatformId(model.getPlatformId()); | 
 |  |  |         savePlatformWarnEventDTO.setCarCode(model.getCarCodeFront()); | 
 |  |  |         savePlatformWarnEventDTO.setEventType(Constants.PlatformWarnEvent.STOP_ERROR.getKey()); | 
 |  |  |         platformWarnEventService.savePlatformWarnEvent(savePlatformWarnEventDTO); | 
 |  |  |  | 
 |  |  |         int speed = 13; | 
 |  |  |         try { | 
 |  |  |             speed = Integer.parseInt(systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.LED_CONTENT_SPEED).getCode()); | 
 |  |  |         }catch (Exception e){ | 
 |  |  |  | 
 |  |  |         } | 
 |  |  |         List<PlatformDevice> deviceList = platformDeviceMapper.selectList(new QueryWrapper<PlatformDevice>().lambda() | 
 |  |  |                 .eq(PlatformDevice::getPlatformId,model.getPlatformId()) | 
 |  |  |                 .eq(PlatformDevice::getIsdeleted,Constants.ZERO)); | 
 |  |  |         if(deviceList ==null || deviceList.size() == 0){ | 
 |  |  |             return; | 
 |  |  |         } | 
 |  |  |         String content ="车辆"+model.getCarCodeFront()+"停错月台了"; | 
 |  |  |         String content =Constants.PlatformLedContent.WRONG_IN.getInfo(); | 
 |  |  |         content = content.replace("${param2}",model.getPlatformName()); | 
 |  |  |         content = content.replace("${param}",status.getPlateNo()); | 
 |  |  |         List<String> broadcastList = new ArrayList<>(); | 
 |  |  |         List<String> ledList = new ArrayList<>(); | 
 |  |  |         String bNames = ""; | 
 |  |  |         List<PlatformBroadcastLog> logList = new ArrayList<>(); | 
 |  |  |         for(PlatformDevice device : deviceList){ | 
 |  |  |             if(StringUtils.isNotBlank(device.getHkId())){ | 
 |  |  |             if(StringUtils.isBlank(device.getHkId())){ | 
 |  |  |                 continue; | 
 |  |  |             } | 
 |  |  |             if(Constants.equalsInteger(device.getType(),Constants.ZERO)){ | 
 |  |  |             /*if(Constants.equalsInteger(device.getType(),Constants.ZERO)){ | 
 |  |  |                 //如果是LED | 
 |  |  |                 TransparentChannelBodyRequest body = new TransparentChannelBodyRequest(); | 
 |  |  |                 TransparentChannelHeadRequest head = new TransparentChannelHeadRequest(); | 
 |  |  |                 TransparentChannelBodyParamRequest request = new TransparentChannelBodyParamRequest(); | 
 |  |  |                 TransparentChannelBodyRegionRequest regions = new TransparentChannelBodyRegionRequest(); | 
 |  |  |                 head.setAbility("cld");//固定值 | 
 |  |  |                 head.setTreatyType("haixuan_led_net");//固定值 | 
 |  |  |                 head.setDeviceIndexCode(device.getHkId()); | 
 |  |  |                 body.setMethod("ControlLedGereral");//固定值 | 
 |  |  |                 request.setIndexCode(device.getHkId()); | 
 |  |  |                 request.setOperationType(219);//固定值 | 
 |  |  |                 regions.setActionType(32); | 
 |  |  |                 regions.setContent(content); | 
 |  |  |                 regions.setRegionNo(1); | 
 |  |  |                 regions.setRegionType(14); | 
 |  |  |                 regions.setFontColor(1); | 
 |  |  |                 regions.setCircleTimes(1);//循环次数 | 
 |  |  |                 regions.setFontSize(32);// | 
 |  |  |                 regions.setStayTime(1);//单位?? | 
 |  |  |                 regions.setRegionLeftTopXPos(0); | 
 |  |  |                 regions.setRegionLeftTopYPos(0); | 
 |  |  |                 regions.setRegionRightBottomXPos(255); | 
 |  |  |                 regions.setRegionRightBottomYPos(31); | 
 |  |  |                 request.setRegions(new ArrayList<>()); | 
 |  |  |                 request.getRegions().add(regions); | 
 |  |  |                 regions.setSpeed(13); | 
 |  |  |                 body.setParams(request); | 
 |  |  |                 HKService.transparentchannel(head,body); | 
 |  |  |             }else  if(Constants.equalsInteger(device.getType(),Constants.ZERO)){ | 
 |  |  |                 PlatformBroadcastLog log = dealLedContentBiz(model.getId(),device.getHkNo(),device.getName(),content,speed,1); | 
 |  |  |                 logList.add(log); | 
 |  |  |                 ledList.add(device.getHkId()); | 
 |  |  |             }else  */if(Constants.equalsInteger(device.getType(),Constants.TWO)){ | 
 |  |  |                 //如果是广播点 | 
 |  |  |                 bNames += device.getName()+";"; | 
 |  |  |                 broadcastList.add(device.getHkId()); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         if(broadcastList.size()>0){ | 
 |  |  |             CustomBroadcastRequest request = new CustomBroadcastRequest(); | 
 |  |  |             request.setAudioPointIndexCode(broadcastList); | 
 |  |  |             request.setPlayDuration(15);//单位秒 | 
 |  |  |             request.setBroadCastMode("tts"); | 
 |  |  |             request.setPriority(1); | 
 |  |  |             request.setState(1);//播放/停止标识 1-播放,0-停止 | 
 |  |  |             request.setPlayTtsContent(content); | 
 |  |  |             HKService.customBroadcast(request); | 
 |  |  |             PlatformBroadcastLog log = dealBroadcastBiz(model,broadcastList,bNames,Constants.PlatformBroadcastContent.WRONG_IN.getInfo().replace("${param}",status.getPlateNo())); | 
 |  |  |             logList.add(log); | 
 |  |  |         } | 
 |  |  |         if(logList.size()>0){ | 
 |  |  |             platformBroadcastLogMapper.insert(logList); | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |     private void dealCarsAndPlatformErrorBiz( Platform model, EventPlatformCarsStatusInfoRequest status) { | 
 |  |  |         //处理车辆进入错误月台业务逻辑 | 
 |  |  |         SavePlatformWarnEventDTO savePlatformWarnEventDTO = new SavePlatformWarnEventDTO(); | 
 |  |  |         savePlatformWarnEventDTO.setPlatformJobId(model.getId()); | 
 |  |  |         savePlatformWarnEventDTO.setPlatformId(model.getId()); | 
 |  |  |         savePlatformWarnEventDTO.setCarCode(status.getPlateNo()); | 
 |  |  |         savePlatformWarnEventDTO.setEventType(Constants.PlatformWarnEvent.STOP_ERROR.getKey()); | 
 |  |  |         platformWarnEventService.savePlatformWarnEvent(savePlatformWarnEventDTO); | 
 |  |  |  | 
 |  |  |         int speed = 13; | 
 |  |  |         try { | 
 |  |  |             speed = Integer.parseInt(systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.LED_CONTENT_SPEED).getCode()); | 
 |  |  |         }catch (Exception e){ | 
 |  |  |  | 
 |  |  |         } | 
 |  |  |         List<PlatformDevice> deviceList = platformDeviceMapper.selectList(new QueryWrapper<PlatformDevice>().lambda() | 
 |  |  |                 .eq(PlatformDevice::getPlatformId,model.getId()) | 
 |  |  |                 .eq(PlatformDevice::getIsdeleted,Constants.ZERO)); | 
 |  |  |         if(deviceList ==null || deviceList.size() == 0){ | 
 |  |  |             return; | 
 |  |  |         } | 
 |  |  |         String content =Constants.PlatformLedContent.WRONG_IN.getInfo(); | 
 |  |  |         content = content.replace("${param2}",model.getName()); | 
 |  |  |         content = content.replace("${param}",status.getPlateNo()); | 
 |  |  |         List<String> broadcastList = new ArrayList<>(); | 
 |  |  |         List<String> ledList = new ArrayList<>(); | 
 |  |  |         String bNames = ""; | 
 |  |  |         List<PlatformBroadcastLog> logList = new ArrayList<>(); | 
 |  |  |         for(PlatformDevice device : deviceList){ | 
 |  |  |             if(StringUtils.isBlank(device.getHkId())){ | 
 |  |  |                 continue; | 
 |  |  |             } | 
 |  |  |             if(Constants.equalsInteger(device.getType(),Constants.TWO)){ | 
 |  |  |                 //如果是广播点 | 
 |  |  |                 bNames += device.getName()+";"; | 
 |  |  |                 broadcastList.add(device.getHkId()); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         if(broadcastList.size()>0){ | 
 |  |  |             PlatformJob job = new PlatformJob(); | 
 |  |  |             job.setId(-1); | 
 |  |  |             job.setCarCodeFront(status.getPlateNo()); | 
 |  |  |             job.setPlatformId(model.getId()); | 
 |  |  |             PlatformBroadcastLog log = dealBroadcastBiz(job,broadcastList,bNames,Constants.PlatformBroadcastContent.WRONG_IN.getInfo().replace("${param}",status.getPlateNo())); | 
 |  |  |             logList.add(log); | 
 |  |  |         } | 
 |  |  |         if(logList.size()>0){ | 
 |  |  |             platformBroadcastLogMapper.insert(logList); | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 广播通知 | 
 |  |  |      * @param model | 
 |  |  |      * @param broadcastList | 
 |  |  |      * @param bNames | 
 |  |  |      * @param content1 | 
 |  |  |      * @return | 
 |  |  |      */ | 
 |  |  |     public static PlatformBroadcastLog dealBroadcastBiz(PlatformJob model, List<String> broadcastList,String bNames , String content1) { | 
 |  |  |         PlatformBroadcastLog log = new PlatformBroadcastLog(); | 
 |  |  |         content1 = content1.replace("${param}",model.getCarCodeFront()); | 
 |  |  |         log.setObjId(model.getId().toString()); | 
 |  |  |         log.setCreateDate(new Date()); | 
 |  |  |         log.setBizType(Constants.ONE); | 
 |  |  |         log.setHkDate(new Date()); | 
 |  |  |         log.setObjType(Constants.ONE); | 
 |  |  |         log.setInfo(content1); | 
 |  |  |         log.setRemark(bNames); | 
 |  |  |         log.setNum(Constants.ONE); | 
 |  |  |         log.setIds(String.join(",",broadcastList)); | 
 |  |  |         CustomBroadcastRequest request = new CustomBroadcastRequest(); | 
 |  |  |         request.setAudioPointIndexCode(broadcastList); | 
 |  |  |         request.setPlayDuration(15);//单位秒 | 
 |  |  |         request.setBroadCastMode("tts"); | 
 |  |  |         request.setPriority(1); | 
 |  |  |         request.setState(1);//播放/停止标识 1-播放,0-停止 | 
 |  |  |         request.setPlayTtsContent(content1); | 
 |  |  |         BaseResponse response =  HKService.customBroadcast(request); | 
 |  |  |         if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){ | 
 |  |  |             log.setHkInfo("请求失败:"+JSONObject.toJSONString(response)); | 
 |  |  |             log.setHkStatus(Constants.THREE); | 
 |  |  |         }else{ | 
 |  |  |             log.setHkInfo("请求成功"); | 
 |  |  |             log.setHkStatus(Constants.TWO); | 
 |  |  |         } | 
 |  |  |         log.setDeviceType(Constants.ZERO); | 
 |  |  |         log.setName("发送广播播报内容"); | 
 |  |  |         return  log; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public static PlatformBroadcastLog dealLedContentBiz(Integer platformId,String hkNo,String hkName, String content,int speed,int color) { | 
 |  |  |         PlatformBroadcastLog log = new PlatformBroadcastLog(); | 
 |  |  |         log.setCreateDate(new Date()); | 
 |  |  |         log.setBizType(Constants.ONE); | 
 |  |  |         log.setHkDate(new Date()); | 
 |  |  |         log.setObjType(Constants.ONE); | 
 |  |  |         log.setIds(hkNo); | 
 |  |  |         log.setRemark(hkName); | 
 |  |  |         log.setInfo(content); | 
 |  |  |         log.setNum(Constants.ONE); | 
 |  |  |         log.setObjId(platformId.toString()); | 
 |  |  |  | 
 |  |  |         TransparentChannelBodyRequest body = new TransparentChannelBodyRequest(); | 
 |  |  |         TransparentChannelHeadRequest head = new TransparentChannelHeadRequest(); | 
 |  |  |         TransparentChannelBodyParamRequest request = new TransparentChannelBodyParamRequest(); | 
 |  |  |         TransparentChannelBodyRegionRequest regions = new TransparentChannelBodyRegionRequest(); | 
 |  |  |         head.setAbility("cld");//固定值 | 
 |  |  |         head.setTreatyType("haixuan_led_net");//固定值 | 
 |  |  |         head.setDeviceIndexCode(hkNo); | 
 |  |  |         body.setMethod("ControlLedGereral");//固定值 | 
 |  |  |         request.setIndexCode(hkNo); | 
 |  |  |         request.setOperationType(219);//固定值 | 
 |  |  |         regions.setActionType(32); | 
 |  |  |         regions.setContent(content); | 
 |  |  |         regions.setRegionNo(1); | 
 |  |  |         regions.setRegionType(14); | 
 |  |  |         regions.setFontColor(color>0?color:1); | 
 |  |  |         regions.setCircleTimes(1);//循环次数 | 
 |  |  |         regions.setFontSize(32);// | 
 |  |  |         regions.setStayTime(1);//单位?? | 
 |  |  |         regions.setRegionLeftTopXPos(0); | 
 |  |  |         regions.setRegionLeftTopYPos(0); | 
 |  |  |         regions.setRegionRightBottomXPos(255); | 
 |  |  |         regions.setRegionRightBottomYPos(31); | 
 |  |  |         request.setRegions(new ArrayList<>()); | 
 |  |  |         request.getRegions().add(regions); | 
 |  |  |         regions.setSpeed(speed>0?speed:13); | 
 |  |  |         body.setParams(request); | 
 |  |  |         BaseResponse response =  HKService.transparentchannel(head,body); | 
 |  |  |         if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){ | 
 |  |  |             log.setHkInfo("请求失败:"+JSONObject.toJSONString(response)); | 
 |  |  |             log.setHkStatus(Constants.THREE); | 
 |  |  |         }else{ | 
 |  |  |             log.setHkInfo("请求成功"); | 
 |  |  |             log.setHkStatus(Constants.TWO); | 
 |  |  |         } | 
 |  |  |         log.setDeviceType(Constants.ONE); | 
 |  |  |         log.setName("设置LED屏显内容"); | 
 |  |  |         return log; | 
 |  |  |     } | 
 |  |  | } |