|  |  |  | 
|---|
|  |  |  | 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.business.model.Member; | 
|---|
|  |  |  | import com.doumee.dao.web.reqeust.SavePlatformWarnEventDTO; | 
|---|
|  |  |  | import com.doumee.service.business.VisitsService; | 
|---|
|  |  |  | 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 lombok.extern.slf4j.Slf4j; | 
|---|
|  |  |  | import org.apache.commons.lang3.StringUtils; | 
|---|
|  |  |  | import org.springframework.beans.BeanUtils; | 
|---|
|  |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
|---|
|  |  |  | import org.springframework.stereotype.Service; | 
|---|
|  |  |  | import org.springframework.transaction.annotation.Transactional; | 
|---|
|  |  |  | 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 CarEventMapper carEventMapper; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private CategoryMapper categoryMapper; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private VisitEventMapper visitEventMapper; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private VisitsJoinMapper visitsMapper; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private RetentionMapper retentionMapper; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private InoutRecordMapper inoutRecordMapper; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private PlatformMapper platformMapper; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private PlatformJobMapper platformJobMapper; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private TmsService tmsService; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private VisitsService visitsService; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private PlatformWmsDetailMapper platformWmsDetailMapper; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private PlatformEventMapper platformEventMapper; | 
|---|
|  |  |  | 
|---|
|  |  |  | private PlatformLogMapper platformLogMapper; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private PlatformWarnEventServiceImpl platformWarnEventService; | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 海康门禁事件推送 | 
|---|
|  |  |  | * @param param | 
|---|
|  |  |  | 
|---|
|  |  |  | List<DeviceEvent> list = new ArrayList<>(); | 
|---|
|  |  |  | List<Integer> delRetentionLis = new ArrayList<>(); | 
|---|
|  |  |  | List<Retention> retentionList = new ArrayList<>(); | 
|---|
|  |  |  | List<InoutRecord> inoutRecordList = 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,inoutRecordList); | 
|---|
|  |  |  | //封装门禁事件信息表对象 | 
|---|
|  |  |  | list.add(getDeviceEventModelByRequest(request)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | if(delRetentionLis.size()>0){ | 
|---|
|  |  |  | //先删除原有的在场人员(内部人员) | 
|---|
|  |  |  | retentionMapper.delete(new UpdateWrapper<Retention>().lambda() | 
|---|
|  |  |  | .eq(Retention::getType,Constants.memberType.internal) | 
|---|
|  |  |  | //                        .eq(Retention::getType,Constants.memberType.internal) | 
|---|
|  |  |  | .in(Retention::getMemberId,delRetentionLis)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(retentionList.size()>0){ | 
|---|
|  |  |  | //再插入最新的在厂人员 | 
|---|
|  |  |  | retentionMapper.insert(retentionList); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(inoutRecordList.size()>0){ | 
|---|
|  |  |  | //再插入最新的在厂人员 | 
|---|
|  |  |  | inoutRecordMapper.insert(inoutRecordList); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 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 | 
|---|
|  |  |  | ,List<InoutRecord> inoutRecordList) { | 
|---|
|  |  |  | //海康人员编码 | 
|---|
|  |  |  | 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::getCompanyNamePath,Member::getCompanyNamePath) | 
|---|
|  |  |  | .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" )); | 
|---|
|  |  |  | InoutRecord record = new InoutRecord(); | 
|---|
|  |  |  | record.setCreateDate(DateUtil.getISO8601DateByStr2(request.getHappenTime())); | 
|---|
|  |  |  | record.setTimeInfo(Utils.Date.getStart(record.getCreateDate())); | 
|---|
|  |  |  | record.setType(Constants.ONE);//人员 | 
|---|
|  |  |  | record.setDeviceName(request.getSrcName()); | 
|---|
|  |  |  | record.setMemberType(Constants.RetentionMemberType.fk);//默认为未知人员(访客) | 
|---|
|  |  |  | record.setIsdeleted(Constants.ZERO); | 
|---|
|  |  |  | record.setHkEventId(request.getEventId()); | 
|---|
|  |  |  | record.setHkId(userNo); | 
|---|
|  |  |  | if(d!=null && Constants.equalsInteger(d.getIsEntrance(),Constants.ONE)){ | 
|---|
|  |  |  | if(Constants.formatIntegerNum(request.getData().getExtEventInOut()) == Constants.ONE){ | 
|---|
|  |  |  | //如果是进门,录入人员的在场数据记录 | 
|---|
|  |  |  | retentionList.add(getRetentionModelByRequest(member,request)); | 
|---|
|  |  |  | record.setInOrOut(Constants.ZERO); | 
|---|
|  |  |  | inoutDayCount.setInMemberNum(Constants.formatIntegerNum(inoutDayCount.getInMemberNum())+1);//入场人次 | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | //如果是出门 | 
|---|
|  |  |  | record.setInOrOut(Constants.ONE); | 
|---|
|  |  |  | inoutDayCount.setOutMemberNum(Constants.formatIntegerNum(inoutDayCount.getOutMemberNum())+1);//离场人次 | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(member !=null){ | 
|---|
|  |  |  | record.setMemberId(member.getId()); | 
|---|
|  |  |  | record.setMemberName(member.getName()); | 
|---|
|  |  |  | record.setMemberPhone(member.getPhone()); | 
|---|
|  |  |  | record.setObjId(member.getId()); | 
|---|
|  |  |  | record.setObjType(Constants.ONE); | 
|---|
|  |  |  | record.setCompanyId(member.getCompanyId()); | 
|---|
|  |  |  | record.setCompanyName(member.getCompanyNamePath()); | 
|---|
|  |  |  | if(d!=null && Constants.equalsInteger(d.getIsEntrance(),Constants.ONE)){ | 
|---|
|  |  |  | delRetentionLis.add(member.getId()); | 
|---|
|  |  |  | if( Constants.formatIntegerNum(request.getData().getExtEventInOut()) == Constants.ONE){ | 
|---|
|  |  |  | //如果是进门,录入人员的在场数据记录 | 
|---|
|  |  |  | if(Constants.equalsInteger(member.getCompanyType(),Constants.ONE)){ | 
|---|
|  |  |  | record.setMemberType(Constants.RetentionMemberType.internalMember); | 
|---|
|  |  |  | inoutDayCount.setInSelfMemberNum(Constants.formatIntegerNum(inoutDayCount.getInSelfMemberNum())+1);//内部人员入场人次 | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | record.setMemberType(Constants.RetentionMemberType.relMember); | 
|---|
|  |  |  | inoutDayCount.setInOtherMemberNum(Constants.formatIntegerNum(inoutDayCount.getInOtherMemberNum())+1);//相关方入场人次 | 
|---|
|  |  |  | } | 
|---|
|  |  |  | retentionList.add(getRetentionModelByRequest(member,request,record.getMemberType())); | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | if(Constants.equalsInteger(member.getCompanyType(),Constants.ONE)){ | 
|---|
|  |  |  | record.setMemberType(Constants.RetentionMemberType.internalMember); | 
|---|
|  |  |  | inoutDayCount.setOutSelfMemberNum(Constants.formatIntegerNum(inoutDayCount.getOutSelfMemberNum())+1);//内部人员出场人次 | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | record.setMemberType(Constants.RetentionMemberType.relMember); | 
|---|
|  |  |  | inoutDayCount.setOutOtherMemberNum(Constants.formatIntegerNum(inoutDayCount.getOutOtherMemberNum())+1);//相关方出场人次 | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(record.getMemberType()!=null){ | 
|---|
|  |  |  | inoutRecordList.add(record); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | * @param request | 
|---|
|  |  |  | * @return | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | private Retention getRetentionModelByRequest(Member member, EventAcsInfoRequest request) { | 
|---|
|  |  |  | private Retention getRetentionModelByRequest(Member member, EventAcsInfoRequest request,int memberType) { | 
|---|
|  |  |  | Retention retention = new Retention(); | 
|---|
|  |  |  | retention.setIsdeleted(Constants.ZERO); | 
|---|
|  |  |  | retention.setCreateDate(DateUtil.getISO8601DateByStr(request.getHappenTime())); | 
|---|
|  |  |  | 
|---|
|  |  |  | retention.setIdcardDecode(member.getIdcardDecode()); | 
|---|
|  |  |  | retention.setName(member.getName()); | 
|---|
|  |  |  | retention.setBirthday(member.getBirthday()); | 
|---|
|  |  |  | retention.setType(member.getType()); | 
|---|
|  |  |  | retention.setType(memberType); | 
|---|
|  |  |  | retention.setCompanyId(member.getCompanyId()); | 
|---|
|  |  |  | retention.setCompanyName(member.getCompanyName()); | 
|---|
|  |  |  | retention.setEventCode(request.getData().getExtEventCode()+""); | 
|---|
|  |  |  | 
|---|
|  |  |  | retention.setMemberId(member.getId()); | 
|---|
|  |  |  | retention.setDeviceName(request.getSrcName()); | 
|---|
|  |  |  | retention.setDeviceIndex(request.getSrcIndex()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return retention; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | List<VisitEvent> list = new ArrayList<>(); | 
|---|
|  |  |  | List<Integer> delRetentionLis = new ArrayList<>(); | 
|---|
|  |  |  | List<Retention> retentionList = new ArrayList<>(); | 
|---|
|  |  |  | List<InoutRecord> inoutRecordList = 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,inoutRecordList); | 
|---|
|  |  |  | list.add(getVisitEventModelByRequestIccm(request,request.getData().getVisitorInformationList().get(0))); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(list.size()>0){ | 
|---|
|  |  |  | 
|---|
|  |  |  | //再插入最新的在厂人员 | 
|---|
|  |  |  | retentionMapper.insert(retentionList); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(inoutRecordList.size()>0){ | 
|---|
|  |  |  | //批量插入人员出入记录 | 
|---|
|  |  |  | inoutRecordMapper.insert(inoutRecordList); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 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 | 
|---|
|  |  |  | ,List<InoutRecord> inoutRecordList) { | 
|---|
|  |  |  | 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("访客正常签离"); | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | 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  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)? | 
|---|
|  |  |  | request.getData().getParamValues().getSrcName():request.getSrcName()); | 
|---|
|  |  |  | record.setCreateDate(DateUtil.getISO8601DateByStr2(request.getHappenTime())); | 
|---|
|  |  |  | record.setTimeInfo(Utils.Date.getStart(record.getCreateDate())); | 
|---|
|  |  |  | record.setType(Constants.ONE);//人员 | 
|---|
|  |  |  | record.setMemberType(Constants.RetentionMemberType.fk); | 
|---|
|  |  |  | record.setIsdeleted(Constants.ZERO); | 
|---|
|  |  |  | record.setMemberName(visits.getName()); | 
|---|
|  |  |  | record.setObjId(visits.getId()); | 
|---|
|  |  |  | record.setMemberId(visits.getMemberId()); | 
|---|
|  |  |  | record.setObjType(Constants.TWO); | 
|---|
|  |  |  | record.setMemberPhone(visits.getPhone()); | 
|---|
|  |  |  | record.setCompanyName(visits.getCompanyName()); | 
|---|
|  |  |  | record.setInOrOut(Constants.ZERO); | 
|---|
|  |  |  | record.setHkEventId(request.getEventId()); | 
|---|
|  |  |  | record.setHkId(visits.getHkId()); | 
|---|
|  |  |  | record.setDeviceName((request.getData()!=null &&request.getData().getParamValues()!=null)? | 
|---|
|  |  |  | request.getData().getParamValues().getSrcName():request.getSrcName()); | 
|---|
|  |  |  | //如果是访客通行 | 
|---|
|  |  |  | 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); | 
|---|
|  |  |  | record.setInOrOut(Constants.ZERO);//进入园区 | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(request.getData()!=null&&request.getData().getParamValues()!=null && | 
|---|
|  |  |  | !StringUtils.equals(request.getData().getParamValues().getInOrOut(),"0")){ | 
|---|
|  |  |  | inoutDayCount.setOutVisitorNum(Constants.formatIntegerNum(inoutDayCount.getOutVisitorNum())+1); | 
|---|
|  |  |  | record.setInOrOut(Constants.ONE);//离园 | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if( request.getData().getParamValues()!=null | 
|---|
|  |  |  | && StringUtils.isNotBlank(request.getData().getParamValues().getPlateNos()) | 
|---|
|  |  |  | && StringUtils.isNotBlank(request.getData().getParamValues().getParkIndex())) { | 
|---|
|  |  |  | //如果是停车场事件,记录车辆类型 | 
|---|
|  |  |  | Category category = null; | 
|---|
|  |  |  | record.setCarCode(request.getData().getParamValues().getPlateNos()); | 
|---|
|  |  |  | if (StringUtils.isNotBlank(record.getCarCode())) { | 
|---|
|  |  |  | category = categoryMapper.selectJoinOne(Category.class, new MPJLambdaWrapper<Category>() | 
|---|
|  |  |  | .selectAll(Category.class) | 
|---|
|  |  |  | .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) | 
|---|
|  |  |  | .last("limit 1")); | 
|---|
|  |  |  | if (category == null) { | 
|---|
|  |  |  | category = new Category(); | 
|---|
|  |  |  | category.setName("访客车辆"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | category.setParentName(StringUtils.defaultString(category.getParentName(), "访客车辆")); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | record.setCarBizType(Constants.RetentionCarType.fkCar); | 
|---|
|  |  |  | record.setCategoryId(category.getId()); | 
|---|
|  |  |  | record.setDeviceName(request.getData().getParamValues().getGateName()); | 
|---|
|  |  |  | record.setCategoryName(category.getName()); | 
|---|
|  |  |  | record.setCategoryParentId(category.getParentId()); | 
|---|
|  |  |  | record.setCategoryParentName(category.getParentName()); | 
|---|
|  |  |  | if (Constants.equalsInteger(record.getInOrOut(), Constants.ONE)) { | 
|---|
|  |  |  | record.setRemark("访客跟随车辆离园并自动签离"); | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | //访客申请自动签离 | 
|---|
|  |  |  | visitsService.visitLevelForCarOut(visits); | 
|---|
|  |  |  | } catch (Exception e) { | 
|---|
|  |  |  | log.error("访客跟随车辆出园自动签离失败:===========" + e.getMessage()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | inoutRecordList.add(record);//进出记录 | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 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()); | 
|---|
|  |  |  | if(StringUtils.isBlank(event.getSrcName())){ | 
|---|
|  |  |  | event.setSrcName((request.getData()!=null &&request.getData().getParamValues()!=null)? | 
|---|
|  |  |  | request.getData().getParamValues().getGateName()+ request.getData().getParamValues().getParkIndex():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<>(); | 
|---|
|  |  |  | List<Retention> delMemberRetentionList = new ArrayList<>(); | 
|---|
|  |  |  | InoutDayCount inoutDayCount = new InoutDayCount(); | 
|---|
|  |  |  | List<InoutRecord> inoutRecordList = new ArrayList<>(); | 
|---|
|  |  |  | 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,delMemberRetentionList,inoutDayCount,inoutRecordList)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(list.size()>0){ | 
|---|
|  |  |  | //插入门禁记录 | 
|---|
|  |  |  | carEventMapper.insert(list); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(delRetentionList.size()>0){ | 
|---|
|  |  |  | //先删除原有的在场人员(内部人员) | 
|---|
|  |  |  | //先删除原有的在场车辆人员(内部人员) | 
|---|
|  |  |  | retentionMapper.delete(new UpdateWrapper<Retention>().lambda() | 
|---|
|  |  |  | .eq(Retention::getType,Constants.THREE) | 
|---|
|  |  |  | .in(Retention::getCarNo,delRetentionList)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(delMemberRetentionList.size()>0){ | 
|---|
|  |  |  | //先删除原有的在场人员(内部人员、相关方和访客) | 
|---|
|  |  |  | List<Integer> memberList = new ArrayList<>(); | 
|---|
|  |  |  | for(Retention m :delMemberRetentionList){ | 
|---|
|  |  |  | if(m.getMemberId()!=null){ | 
|---|
|  |  |  | //跟随车辆入场的member存在的数据立场 | 
|---|
|  |  |  | retentionMapper.delete(new UpdateWrapper<Retention>().lambda() | 
|---|
|  |  |  | .in(Retention::getType,Constants.RetentionMemberType.internalMember | 
|---|
|  |  |  | ,Constants.RetentionMemberType.relMember | 
|---|
|  |  |  | ,Constants.RetentionMemberType.fk | 
|---|
|  |  |  | ,Constants.RetentionMemberType.driver) | 
|---|
|  |  |  | .eq(Retention::getMemberId,m.getMemberId())); | 
|---|
|  |  |  | }else  if(m.getCarNo()!=null){ | 
|---|
|  |  |  | //跟随车辆入场的用户信息 | 
|---|
|  |  |  | retentionMapper.delete(new UpdateWrapper<Retention>().lambda() | 
|---|
|  |  |  | .in(Retention::getType,Constants.RetentionMemberType.internalMember | 
|---|
|  |  |  | ,Constants.RetentionMemberType.relMember | 
|---|
|  |  |  | ,Constants.RetentionMemberType.fk | 
|---|
|  |  |  | ,Constants.RetentionMemberType.driver) | 
|---|
|  |  |  | .eq(Retention::getCarNo,m.getCarNo())); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(retentionList.size()>0){ | 
|---|
|  |  |  | //再插入最新的在厂人员 | 
|---|
|  |  |  | retentionMapper.insert(retentionList); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(inoutRecordList.size()>0){ | 
|---|
|  |  |  | //再插入最新的人车出入明细 | 
|---|
|  |  |  | inoutRecordMapper.insert(inoutRecordList); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 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 | 
|---|
|  |  |  | , List<Retention> delMemberRetentionList | 
|---|
|  |  |  | , InoutDayCount inoutDayCount | 
|---|
|  |  |  | , List<InoutRecord> inoutRecordList) { | 
|---|
|  |  |  | CarEvent event =initCarEventModelByRequest(request); | 
|---|
|  |  |  | if(StringUtils.isNotBlank(event.getPlateNos())){ | 
|---|
|  |  |  | //标记车辆进出记录 | 
|---|
|  |  |  | List<Category> categoryList = categoryMapper.selectJoinList(Category.class, new MPJLambdaWrapper<Category>() | 
|---|
|  |  |  | .selectAll(Category.class) | 
|---|
|  |  |  | .select("t4.name",Category::getParentName) | 
|---|
|  |  |  | .leftJoin("category t4 on t.parent_id=t4.id") | 
|---|
|  |  |  | .eq(Category::getIsdeleted,Constants.ZERO) | 
|---|
|  |  |  | .isNotNull(Category::getBizType));//查询所有带有业务类型的车辆分类编码 | 
|---|
|  |  |  | List<Visits> visitsList = null; | 
|---|
|  |  |  | InoutRecord carrecord = new InoutRecord(); | 
|---|
|  |  |  | carrecord.setCreateDate(DateUtil.getISO8601DateByStr2(request.getHappenTime())); | 
|---|
|  |  |  | carrecord.setTimeInfo(Utils.Date.getStart(carrecord.getCreateDate())); | 
|---|
|  |  |  | carrecord.setType(Constants.ZERO);//车辆 | 
|---|
|  |  |  | carrecord.setIsdeleted(Constants.ZERO); | 
|---|
|  |  |  | carrecord.setObjType(Constants.ZERO); | 
|---|
|  |  |  | carrecord.setDeviceName(request.getData().getGateName()+request.getData().getRoadwayName());//停车场和出入口 | 
|---|
|  |  |  | carrecord.setHkEventId(request.getEventId()); | 
|---|
|  |  |  | carrecord.setCarCode(event.getPlateNos()); | 
|---|
|  |  |  | Cars carModel = carsMapper.selectJoinOne(Cars.class,new MPJLambdaWrapper<Cars>() | 
|---|
|  |  |  | .selectAll(Cars.class ) | 
|---|
|  |  |  | .selectAs(Company::getType,Cars::getCompanyType) | 
|---|
|  |  |  | .selectAs(Member::getName,Cars::getMemberName) | 
|---|
|  |  |  | .selectAs(Member::getIdcardDecode,Cars::getIdcardDecode) | 
|---|
|  |  |  | .selectAs(Member::getCode,Cars::getMemberCode) | 
|---|
|  |  |  | .selectAs(Member::getFaceImg,Cars::getFaceImg) | 
|---|
|  |  |  | .selectAs(Member::getIdcardNo,Cars::getIdcardNo) | 
|---|
|  |  |  | .selectAs(Member::getName,Cars::getMemberName) | 
|---|
|  |  |  | .selectAs(Member::getPhone,Cars::getMemberPhone) | 
|---|
|  |  |  | .selectAs(Company::getCompanyNamePath,Cars::getCompanyName) | 
|---|
|  |  |  | .selectAs(Category::getBizType,Cars::getBizType) | 
|---|
|  |  |  | .selectAs(Category::getName,Cars::getCateName) | 
|---|
|  |  |  | .select("t4.id",Cars::getCatePId) | 
|---|
|  |  |  | .select("t4.name",Cars::getCatePName) | 
|---|
|  |  |  | .leftJoin(Company.class,Company::getId,Cars::getGroupId) | 
|---|
|  |  |  | .leftJoin(Member.class,Member::getId,Cars::getMemberId) | 
|---|
|  |  |  | .leftJoin(Category.class,Category::getId,Cars::getCateId) | 
|---|
|  |  |  | .leftJoin("category t4 on t3.parent_id=t4.id") | 
|---|
|  |  |  | .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()); | 
|---|
|  |  |  | //-----------------20250429改造----start--------------- | 
|---|
|  |  |  | event.setCarType(carModel.getBizType()==null?Constants.RetentionCarType.self : carModel.getBizType());//车辆业务类型 | 
|---|
|  |  |  | carrecord.setObjType(Constants.FOUR); | 
|---|
|  |  |  | carrecord.setMemberName(carModel.getMemberName());//司机 | 
|---|
|  |  |  | carrecord.setMemberPhone(carModel.getMemberPhone());//司机 | 
|---|
|  |  |  | carrecord.setObjId(carModel.getId()); | 
|---|
|  |  |  | carrecord.setMemberId(carModel.getMemberId()); | 
|---|
|  |  |  | carrecord.setObjType(Constants.ZERO); | 
|---|
|  |  |  | carrecord.setFaceImg(carModel.getFaceImg()); | 
|---|
|  |  |  | carrecord.setIdcardDecode(carModel.getIdcardDecode()); | 
|---|
|  |  |  | carrecord.setIdcardNo(carModel.getIdcardNo()); | 
|---|
|  |  |  | carrecord.setMemberCode(carModel.getMemberCode()); | 
|---|
|  |  |  | carrecord.setCompanyId(carModel.getGroupId()); | 
|---|
|  |  |  | carrecord.setCompanyName(carModel.getCompanyName()); | 
|---|
|  |  |  | carrecord.setCategoryId(carModel.getCateId()); | 
|---|
|  |  |  | carrecord.setCategoryName(carModel.getCateName()); | 
|---|
|  |  |  | carrecord.setCategoryParentId(carModel.getCatePId()); | 
|---|
|  |  |  | carrecord.setCategoryParentName(StringUtils.defaultString(carModel.getCatePName(),carModel.getCateName())); | 
|---|
|  |  |  | carrecord.setType( Constants.RetentionMemberType.car);//只是车辆的记录 | 
|---|
|  |  |  | if(carModel.getMemberId()!=null){ | 
|---|
|  |  |  | if(Constants.equalsInteger(carModel.getCompanyType(),Constants.ONE)){ | 
|---|
|  |  |  | //内部组织 | 
|---|
|  |  |  | carrecord.setMemberType(Constants.RetentionMemberType.internalMember); | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | //相关方组织 | 
|---|
|  |  |  | carrecord.setMemberType( Constants.RetentionMemberType.relMember); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //              carrecord.setMemberPhone(carTypeJob.getDrivierPhone()); | 
|---|
|  |  |  | //-----------------20250429改造----end--------------- | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(event.getCarType() ==null || event.getCarType().equals(Constants.RetentionCarType.other)){//如果为识别到车型 | 
|---|
|  |  |  | PlatformJob carTypeJob = platformJobMapper.selectJoinOne(PlatformJob.class, | 
|---|
|  |  |  | new MPJLambdaWrapper<PlatformJob>(). selectAll(PlatformJob.class) | 
|---|
|  |  |  | .selectAs(PlatformGroup::getType,PlatformJob::getGroupType) | 
|---|
|  |  |  | .leftJoin(PlatformGroup.class,PlatformGroup::getId,PlatformJob::getPlatformGroupId) | 
|---|
|  |  |  | .eq(PlatformJob::getCarCodeFront,event.getPlateNos()) | 
|---|
|  |  |  | .eq(PlatformJob::getIsdeleted,Constants.ZERO) | 
|---|
|  |  |  | .orderByAsc(PlatformJob::getCreateDate) | 
|---|
|  |  |  | .last(" limit 1")); | 
|---|
|  |  |  | if(carTypeJob!=null ) { | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 如果非固定车辆,检查是否货运车辆 | 
|---|
|  |  |  | * 货运车辆优先级: | 
|---|
|  |  |  | * 1、安泰自有车:货运车辆-安泰物流货运车辆(固定车辆上面已处理,此处不考虑) | 
|---|
|  |  |  | * 2、wms推送的物流车辆(非自有车):货运车辆-外协运输车辆  对应grouptype为:安泰物流卸货 2 | 
|---|
|  |  |  | * 3、安泰的预约入园车辆:货运车辆-加工烟卸货车辆  对应grouptype为0安泰物流卸货 2市公司卸货 | 
|---|
|  |  |  | * 4、市公司的预约入园车辆:货运车辆-市公司卸货车辆 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | carrecord.setMemberName(carTypeJob.getDriverName());//司机 | 
|---|
|  |  |  | carrecord.setMemberPhone(carTypeJob.getDrivierPhone());//司机 | 
|---|
|  |  |  | carrecord.setObjId(carTypeJob.getId()); | 
|---|
|  |  |  | carrecord.setMemberId(carTypeJob.getDriverId());//司机编码 | 
|---|
|  |  |  | carrecord.setObjType(Constants.FOUR); | 
|---|
|  |  |  | carrecord.setCompanyId(carTypeJob.getCompanyId()); | 
|---|
|  |  |  | carrecord.setCompanyName(carTypeJob.getCompanyNamePath()); | 
|---|
|  |  |  | carrecord.setType(Constants.RetentionMemberType.car); | 
|---|
|  |  |  | if(carTypeJob.getDriverName()!=null || StringUtils.isNotBlank(carTypeJob.getDrivierPhone())){ | 
|---|
|  |  |  | //货运司机(如果司机手机号或者姓名不为空) | 
|---|
|  |  |  | carrecord.setMemberType(Constants.RetentionMemberType.driver); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | Category category  = null; | 
|---|
|  |  |  | String tempName = ""; | 
|---|
|  |  |  | String tempPName = ""; | 
|---|
|  |  |  | //如果非固定车辆,则查询是否货运车辆 作业类型 0自有车卸货 1自有车装货 2外协车卸货 3外协车装货 4市公司外协车卸货 | 
|---|
|  |  |  | if(Constants.equalsInteger(carTypeJob.getOrigin(),Constants.ONE)){ | 
|---|
|  |  |  | //如果是推送的wms非自有车 | 
|---|
|  |  |  | event.setCarType(Constants.RetentionCarType.wxysCar);//外协车 | 
|---|
|  |  |  | tempName = "外协运输车辆"; | 
|---|
|  |  |  | tempPName = "货运车辆"; | 
|---|
|  |  |  | }else  if(Constants.equalsInteger(carTypeJob.getType(),Constants.FOUR)){ | 
|---|
|  |  |  | if(Constants.equalsInteger(carTypeJob.getGroupType(),Constants.TWO)){ | 
|---|
|  |  |  | ///安泰的预约入园车辆:货运车辆-加工烟卸货车辆 | 
|---|
|  |  |  | tempName = "加工烟卸货车辆"; | 
|---|
|  |  |  | tempPName = "货运车辆"; | 
|---|
|  |  |  | event.setCarType(Constants.RetentionCarType.jgyxhCar);//加工烟卸货车辆 | 
|---|
|  |  |  | }else  if(Constants.equalsInteger(carTypeJob.getGroupType(),Constants.TWO)){ | 
|---|
|  |  |  | //市公司的预约入园车辆:货运车辆-市公司卸货车辆 | 
|---|
|  |  |  | tempName = "市公司卸货车辆"; | 
|---|
|  |  |  | tempPName = "货运车辆"; | 
|---|
|  |  |  | event.setCarType(Constants.RetentionCarType.sgsxhCar);//市公司卸货车辆 | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | category =findCategoryByBizType(event.getCarType(),tempName,tempPName,categoryList); | 
|---|
|  |  |  | carrecord.setCategoryId(category.getId()); | 
|---|
|  |  |  | carrecord.setCategoryName(category.getName()); | 
|---|
|  |  |  | carrecord.setCategoryParentName(category.getParentName()); | 
|---|
|  |  |  | carrecord.setCategoryParentId(category.getParentId()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(Constants.formatIntegerNum(request.getEventType()) == HKConstants.EventTypes.PARK_PASS_IN.getKey()){ | 
|---|
|  |  |  | //处理自有车自动签到业务 | 
|---|
|  |  |  | dealSelTruckAutoSignBiz(request,event); | 
|---|
|  |  |  | //如果是入厂放行 | 
|---|
|  |  |  | delRetentionList.add(event.getPlateNos()); | 
|---|
|  |  |  | Retention dm = new Retention(); | 
|---|
|  |  |  | dm.setMemberId(event.getMemberId()); | 
|---|
|  |  |  | dm.setPhone(carrecord.getMemberPhone()); | 
|---|
|  |  |  | dm.setCarNo(event.getPlateNos()); | 
|---|
|  |  |  | delMemberRetentionList.add(dm); | 
|---|
|  |  |  | retentionList.add(getRetentionModelByParkRequest(request,event,carrecord));//在厂车辆信息 | 
|---|
|  |  |  | inoutDayCount.setInCarNum(Constants.formatIntegerNum(inoutDayCount.getInCarNum())+1); | 
|---|
|  |  |  | carrecord.setInOrOut(Constants.ZERO); | 
|---|
|  |  |  | }else if(Constants.formatIntegerNum(request.getEventType()) == HKConstants.EventTypes.PARK_PASS_OUT.getKey()){ | 
|---|
|  |  |  | //如果是出场放行 | 
|---|
|  |  |  | delRetentionList.add(event.getPlateNos()); | 
|---|
|  |  |  | Retention dm = new Retention(); | 
|---|
|  |  |  | dm.setMemberId(event.getMemberId()); | 
|---|
|  |  |  | dm.setPhone(carrecord.getMemberPhone()); | 
|---|
|  |  |  | dm.setCarNo(event.getPlateNos()); | 
|---|
|  |  |  | delMemberRetentionList.add(dm); | 
|---|
|  |  |  | inoutDayCount.setOutCarNum(Constants.formatIntegerNum(inoutDayCount.getOutCarNum())+1); | 
|---|
|  |  |  | carrecord.setInOrOut(Constants.ONE); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //车辆进入记录对应业务类型 | 
|---|
|  |  |  | if( isCarInOrOutEvent(request) &&( event.getCarType() ==null || event.getCarType().equals(Constants.RetentionCarType.other))){ | 
|---|
|  |  |  | //如果未识别到车型,不是固定车 也不是货运车辆,则检查是否是访客车 | 
|---|
|  |  |  | visitsList =  visitsMapper.selectList(new QueryWrapper<Visits>().lambda() | 
|---|
|  |  |  | .eq(Visits::getCarNos,event.getPlateNos()) | 
|---|
|  |  |  | .eq(Visits::getIsdeleted,Constants.ZERO ) | 
|---|
|  |  |  | .in(Visits::getStatus,Constants.VisitStatus.signin)//最近一个已到达或者已签离 | 
|---|
|  |  |  | .isNull(Visits::getParentId) | 
|---|
|  |  |  | .orderByDesc(Visits::getId) | 
|---|
|  |  |  | //                        .last("limit 1" ) | 
|---|
|  |  |  | ); | 
|---|
|  |  |  | if(visitsList!=null && visitsList.size()>0){ | 
|---|
|  |  |  | //最近使用该车的申请人(已到达) | 
|---|
|  |  |  | event.setMemberId(visitsList.get(0).getMemberId()); | 
|---|
|  |  |  | event.setCarType(Constants.RetentionCarType.fkCar); | 
|---|
|  |  |  | int index =0; | 
|---|
|  |  |  | carrecord.setCarBizType(Constants.RetentionCarType.fkCar); | 
|---|
|  |  |  | 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()); | 
|---|
|  |  |  | dm.setCarNo(event.getPlateNos()); | 
|---|
|  |  |  | delMemberRetentionList.add(dm); | 
|---|
|  |  |  | //                            delMemberRetentionList.add(event.getMemberId()); | 
|---|
|  |  |  | InoutRecord copyObj = new InoutRecord(); | 
|---|
|  |  |  | BeanUtils.copyProperties(carrecord,copyObj); | 
|---|
|  |  |  | copyObj.setMemberId(v.getMemberId()); | 
|---|
|  |  |  | copyObj.setMemberName(v.getName()); | 
|---|
|  |  |  | copyObj.setMemberPhone(v.getPhone()); | 
|---|
|  |  |  | copyObj.setCompanyName(v.getCompanyName()); | 
|---|
|  |  |  | copyObj.setType(Constants.ONE); | 
|---|
|  |  |  | copyObj.setRemark("访客跟随车辆【"+carrecord.getCarCode()+"】离园"); | 
|---|
|  |  |  | copyObj.setCarCode(index>0?null:carrecord.getCarCode()); | 
|---|
|  |  |  | copyObj.setMemberType(Constants.RetentionMemberType.fk); | 
|---|
|  |  |  | inoutRecordList.add(copyObj); | 
|---|
|  |  |  | index++; | 
|---|
|  |  |  | if(Constants.equalsInteger(carrecord.getInOrOut(),Constants.ONE)){ | 
|---|
|  |  |  | //如果是车辆出园区 统计访客进入数 | 
|---|
|  |  |  | inoutDayCount.setOutVisitorNum(Constants.formatIntegerNum(inoutDayCount.getOutVisitorNum())+1); | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | //访客申请自动签离 | 
|---|
|  |  |  | visitsService.visitLevelForCarOut(v); | 
|---|
|  |  |  | //统计签离数 | 
|---|
|  |  |  | inoutDayCount.setLeaveVisitorNum(Constants.formatIntegerNum(inoutDayCount.getLeaveVisitorNum())+1); | 
|---|
|  |  |  | }catch (Exception e){ | 
|---|
|  |  |  | log.error("访客跟随车辆出园自动签离失败:==========="+e.getMessage()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | //如果是进入园区,访客录入在园人员记录 | 
|---|
|  |  |  | retentionList.add(getRetentionModelByRequest(copyObj,request)); | 
|---|
|  |  |  | //统计访客出行数 | 
|---|
|  |  |  | inoutDayCount.setInVisitorNum(Constants.formatIntegerNum(inoutDayCount.getInVisitorNum())+1); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //                    } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(isCarInOrOutEvent(request) && event.getCarType() !=null && !event.getCarType().equals(Constants.RetentionCarType.fkCar)){ | 
|---|
|  |  |  | //录入非访客类型车辆进出记录 | 
|---|
|  |  |  | dealNotFkCarMemberBiz(event,request,carrecord,retentionList,inoutDayCount,inoutRecordList); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return event; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private boolean isCarInOrOutEvent(EventParkInfoRequest request) { | 
|---|
|  |  |  | if(Constants.formatIntegerNum(request.getEventType()) == HKConstants.EventTypes.PARK_PASS_IN.getKey() || | 
|---|
|  |  |  | Constants.formatIntegerNum(request.getEventType()) == HKConstants.EventTypes.PARK_PASS_OUT.getKey()){ | 
|---|
|  |  |  | return  true; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return  false; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private void dealNotFkCarMemberBiz( CarEvent event ,EventParkInfoRequest request, InoutRecord carrecord,List<Retention> retentionList,InoutDayCount inoutDayCount,List<InoutRecord> inoutRecordList) { | 
|---|
|  |  |  | //录入非访客类型车辆进出记录 | 
|---|
|  |  |  | carrecord.setCarBizType(event.getCarType()==null?Constants.RetentionCarType.other:event.getCarType()); | 
|---|
|  |  |  | if(carrecord.getMemberId()!=null | 
|---|
|  |  |  | && (Constants.equalsInteger(carrecord.getMemberType(),Constants.RetentionMemberType.internalMember) | 
|---|
|  |  |  | ||Constants.equalsInteger(carrecord.getMemberType(),Constants.RetentionMemberType.relMember) | 
|---|
|  |  |  | ||Constants.equalsInteger(carrecord.getMemberType(),Constants.RetentionMemberType.driver))){ | 
|---|
|  |  |  | if( Constants.equalsInteger(carrecord.getInOrOut(),Constants.ZERO)) { | 
|---|
|  |  |  | //如果是进入 | 
|---|
|  |  |  | retentionList.add(getRetentionModelByRequest(carrecord,request)); | 
|---|
|  |  |  | if(Constants.equalsInteger(carrecord.getMemberType(),Constants.RetentionMemberType.relMember)){ | 
|---|
|  |  |  | //如果是相关方人员,统计今日累计数 | 
|---|
|  |  |  | inoutDayCount.setInOtherMemberNum(Constants.formatIntegerNum(inoutDayCount.getInOtherMemberNum())+1); | 
|---|
|  |  |  | }else if(Constants.equalsInteger(carrecord.getMemberType(),Constants.RetentionMemberType.internalMember)){ | 
|---|
|  |  |  | //如果是内部人员,统计今日累计数 | 
|---|
|  |  |  | inoutDayCount.setInSelfMemberNum(Constants.formatIntegerNum(inoutDayCount.getInSelfMemberNum())+1); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //统计今日入园总人次 | 
|---|
|  |  |  | inoutDayCount.setInMemberNum(Constants.formatIntegerNum(inoutDayCount.getInMemberNum())+1); | 
|---|
|  |  |  | }else if( Constants.equalsInteger(carrecord.getInOrOut(),Constants.ONE)) { | 
|---|
|  |  |  | //如果是出园区 | 
|---|
|  |  |  | if(Constants.equalsInteger(carrecord.getMemberType(),Constants.RetentionMemberType.relMember)){ | 
|---|
|  |  |  | //如果是相关方,统计今日累计数 | 
|---|
|  |  |  | inoutDayCount.setOutOtherMemberNum(Constants.formatIntegerNum(inoutDayCount.getOutOtherMemberNum())+1); | 
|---|
|  |  |  | }else if(Constants.equalsInteger(carrecord.getMemberType(),Constants.RetentionMemberType.internalMember)){ | 
|---|
|  |  |  | //如果是内部人员,统计今日累计数 | 
|---|
|  |  |  | inoutDayCount.setOutSelfMemberNum(Constants.formatIntegerNum(inoutDayCount.getOutSelfMemberNum())+1); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //统计今日出园总人次 | 
|---|
|  |  |  | inoutDayCount.setOutMemberNum(Constants.formatIntegerNum(inoutDayCount.getOutMemberNum())+1); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(Constants.equalsInteger(carrecord.getCarBizType(),Constants.RetentionCarType.other)){ | 
|---|
|  |  |  | carrecord.setCategoryName("未知车辆");//默认未知车辆 | 
|---|
|  |  |  | carrecord.setCategoryParentName("未知车辆");//默认未知车辆 | 
|---|
|  |  |  | } | 
|---|
|  |  |  | inoutRecordList.add(carrecord);//录入车辆以及携带人员的入园明细记录(非访客) | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private Category findCategoryByBizType(Integer carType,String tempname, String pName,List<Category> categoryList) { | 
|---|
|  |  |  | if(categoryList!=null){ | 
|---|
|  |  |  | for(Category category :categoryList){ | 
|---|
|  |  |  | if(Constants.equalsInteger(carType,category.getBizType())){ | 
|---|
|  |  |  | if(StringUtils.isBlank(category.getParentName() )){ | 
|---|
|  |  |  | category.setParentName(category.getName()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return category; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | Category category  = new Category(); | 
|---|
|  |  |  | category.setName(tempname); | 
|---|
|  |  |  | category.setParentName(pName); | 
|---|
|  |  |  | return null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private void dealSelTruckAutoSignBiz(EventParkInfoRequest request, CarEvent event) { | 
|---|
|  |  |  | ParkBook cars = parkBookMapper.selectOne(new QueryWrapper<ParkBook>().lambda() | 
|---|
|  |  |  | .eq(ParkBook::getCarCode,event.getPlateNos()) | 
|---|
|  |  |  | .eq(ParkBook::getHkStatus,Constants.ONE ) | 
|---|
|  |  |  | .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.WAIT_CALL.getKey(), | 
|---|
|  |  |  | Constants.PlatformJobStatus.WORKING.getKey(), | 
|---|
|  |  |  | Constants.PlatformJobStatus.TRANSFERING.getKey(), | 
|---|
|  |  |  | Constants.PlatformJobStatus.OVER_NUMBER.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); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private CarEvent initCarEventModelByRequest(EventParkInfoRequest request) { | 
|---|
|  |  |  | CarEvent event = new CarEvent(); | 
|---|
|  |  |  | event.setIsdeleted(Constants.ZERO); | 
|---|
|  |  |  | event.setCreateDate(DateUtil.getISO8601DateByStr(request.getHappenTime())); | 
|---|
|  |  |  | 
|---|
|  |  |  | event.setSrcName(request.getSrcName()); | 
|---|
|  |  |  | event.setSrcIndex(request.getSrcIndex()); | 
|---|
|  |  |  | event.setRoadwayType(request.getData().getRoadwayType()); | 
|---|
|  |  |  | event.setRoadwayName(request.getData().getRoadwayName()); | 
|---|
|  |  |  | event.setRoadwayIndex(request.getData().getRoadwayIndex()); | 
|---|
|  |  |  | event.setPlateType(request.getData().getPlateType()); | 
|---|
|  |  |  | event.setTimeout(request.getTimeout()); | 
|---|
|  |  |  | 
|---|
|  |  |  | event.setInoutType(request.getData().getInoutType()); | 
|---|
|  |  |  | event.setHappenTime(request.getHappenTime()); | 
|---|
|  |  |  | event.setGateName(request.getData().getGateName()); | 
|---|
|  |  |  | event.setRoadwayName(request.getData().getRoadwayName()); | 
|---|
|  |  |  | event.setGateIndex(request.getData().getGateIndex()); | 
|---|
|  |  |  | event.setEventType(request.getEventType()); | 
|---|
|  |  |  | event.setEventIndex(request.getData().getEventIndex()); | 
|---|
|  |  |  | event.setEventCmd(request.getData().getEventCmd()); | 
|---|
|  |  |  | event.setCardNo(request.getData().getCardNo()); | 
|---|
|  |  |  | event.setCarAttributeName(request.getData().getCarAttributeName()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | event.setCarType(Constants.RetentionCarType.other);//默认未登记车辆 | 
|---|
|  |  |  | if(request.getData().getInResult()!=null && request.getData().getInResult().getRlsResult() !=null ){ | 
|---|
|  |  |  | //放行方式 | 
|---|
|  |  |  | event.setReleaseWay(request.getData().getInResult().getRlsResult().getReleaseWay()); | 
|---|
|  |  |  | 
|---|
|  |  |  | event.setVehiclePicUrl(getHkImgUrl(request.getData().getPicUrl().getVehiclePicUrl())); | 
|---|
|  |  |  | event.setPlatePicUrl(getHkImgUrl(request.getData().getPicUrl().getPlatePicUrl())); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(StringUtils.isNotBlank(event.getPlateNos())){ | 
|---|
|  |  |  | 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()); | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | Visits visits =  visitsMapper.selectOne(new QueryWrapper<Visits>().lambda() | 
|---|
|  |  |  | .eq(Visits::getCarNos,event.getPlateNos()) | 
|---|
|  |  |  | .eq(Visits::getIsdeleted,Constants.ZERO ) | 
|---|
|  |  |  | .in(Visits::getStatus,Constants.VisitStatus.signin,Constants.VisitStatus.signout)//最近一个已到达或者已签离 | 
|---|
|  |  |  | .isNull(Visits::getParentId) | 
|---|
|  |  |  | .orderByDesc(Visits::getId) | 
|---|
|  |  |  | .last("limit 1" )); | 
|---|
|  |  |  | if(visits!=null){ | 
|---|
|  |  |  | //最近使用该车的申请人(已到达) | 
|---|
|  |  |  | event.setMemberId(visits.getMemberId()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(Constants.formatIntegerNum(request.getEventType()) == HKConstants.EventTypes.PARK_PASS_IN.getKey()){ | 
|---|
|  |  |  | //如果是入厂放行 | 
|---|
|  |  |  | delRetentionList.add(event.getPlateNos()); | 
|---|
|  |  |  | retentionList.add(getRetentionModelByParkRequest(request)); | 
|---|
|  |  |  | }else if(Constants.formatIntegerNum(request.getEventType()) == HKConstants.EventTypes.PARK_PASS_OUT.getKey()){ | 
|---|
|  |  |  | //如果是出场放行 | 
|---|
|  |  |  | delRetentionList.add(event.getPlateNos()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return event; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private Retention getRetentionModelByParkRequest(EventParkInfoRequest request) { | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * ;如果是卸货任务,需要通过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); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 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 getRetentionModelByRequest(InoutRecord inoutRecord, EventParkInfoRequest request) { | 
|---|
|  |  |  | Retention retention = new Retention(); | 
|---|
|  |  |  | retention.setIsdeleted(Constants.ZERO); | 
|---|
|  |  |  | retention.setCreateDate(DateUtil.getISO8601DateByStr(request.getHappenTime())); | 
|---|
|  |  |  | retention.setCode(inoutRecord.getMemberCode()); | 
|---|
|  |  |  | retention.setIdcardNo(inoutRecord.getIdcardNo()); | 
|---|
|  |  |  | retention.setIdcardDecode(inoutRecord.getIdcardDecode()); | 
|---|
|  |  |  | retention.setName(inoutRecord.getMemberName()); | 
|---|
|  |  |  | retention.setType(inoutRecord.getMemberType()); | 
|---|
|  |  |  | retention.setCompanyId(inoutRecord.getCompanyId()); | 
|---|
|  |  |  | retention.setCompanyName(inoutRecord.getCompanyName()); | 
|---|
|  |  |  | retention.setEventCode(request.getEventType()+""); | 
|---|
|  |  |  | retention.setEventDate(DateUtil.getISO8601DateByStr(request.getHappenTime())); | 
|---|
|  |  |  | retention.setFaceImg(inoutRecord.getFaceImg()); | 
|---|
|  |  |  | retention.setPhone(inoutRecord.getMemberPhone()); | 
|---|
|  |  |  | retention.setMemberId(inoutRecord.getMemberId()); | 
|---|
|  |  |  | retention.setDeviceName(request.getSrcName()); | 
|---|
|  |  |  | retention.setDeviceIndex(request.getSrcIndex()); | 
|---|
|  |  |  | retention.setCarNo(inoutRecord.getCarCode()); | 
|---|
|  |  |  | retention.setDeviceName(request.getData().getGateName()+request.getData().getRoadwayName()); | 
|---|
|  |  |  | retention.setRemark("跟随车辆【"+inoutRecord.getCarCode()+"】入园区"); | 
|---|
|  |  |  | return retention; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | private Retention getRetentionModelByParkRequest(EventParkInfoRequest request,CarEvent event ,InoutRecord carrecord ) { | 
|---|
|  |  |  | 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.setCategoryId(carrecord.getCategoryId()); | 
|---|
|  |  |  | retention.setCategoryName(carrecord.getCategoryName()); | 
|---|
|  |  |  | retention.setCategoryParentId(carrecord.getCategoryParentId()); | 
|---|
|  |  |  | retention.setCategoryParentName(carrecord.getCategoryParentName()); | 
|---|
|  |  |  | retention.setDeviceName(request.getData().getGateName()+request.getData().getRoadwayName()); | 
|---|
|  |  |  | //        retention.setDeviceName(request.getSrcName()); | 
|---|
|  |  |  | //        retention.setDeviceIndex(request.getSrcIndex()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return retention; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | Integer  workStatus = 0; | 
|---|
|  |  |  | 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()){ | 
|---|
|  |  |  | 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()){ | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | result = "成功"; | 
|---|
|  |  |  | log.info("【海康月台工作状态事件推送】========成功======="); | 
|---|
|  |  |  | 
|---|
|  |  |  | 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::getCarCodeFront,status.getPlateNo() )//前车牌号 | 
|---|
|  |  |  | .eq(!StringUtils.equals(status.getStockStatus(),"front"),PlatformJob::getCarCodeBack,status.getPlateNo() )//后车牌号 | 
|---|
|  |  |  | //                        .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 ")); | 
|---|
|  |  |  | if(platform!=null){ | 
|---|
|  |  |  | dealCarsAndPlatformErrorBiz(platform,status); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | continue;//如果作业为空,跳过处理 | 
|---|
|  |  |  | } | 
|---|
|  |  |  | PlatformJob update = new PlatformJob(); | 
|---|
|  |  |  | 
|---|
|  |  |  | //如果是正在作业的状态,标记作业已完成 | 
|---|
|  |  |  | 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(job ==null || !Constants.equalsInteger(job.getStatus(),Constants.PlatformJobStatus.CALLED.getKey())){ | 
|---|
|  |  |  | //说明车辆进错月台 或者还未叫号状态,发起警告 | 
|---|
|  |  |  | dealCarsInErrorPlatformBiz(job,status); | 
|---|
|  |  |  | 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);//记录作业日志 | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(eventList.size()>0){ | 
|---|
|  |  |  | 
|---|
|  |  |  | 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) { | 
|---|
|  |  |  | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | String content =Constants.PlatformLedContent.WRONG_IN.getInfo(); | 
|---|
|  |  |  | content = content.replace("${param}",model.getPlatformName()); | 
|---|
|  |  |  | content = content.replace("${param2}",model.getCarCodeFront()); | 
|---|
|  |  |  | 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 | 
|---|
|  |  |  | PlatformBroadcastLog log = dealLedContentBiz(device.getHkNo(),device.getName(),content,speed,1); | 
|---|
|  |  |  | 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.ZERO)){ | 
|---|
|  |  |  | }else  */if(Constants.equalsInteger(device.getType(),Constants.TWO)){ | 
|---|
|  |  |  | //如果是广播点 | 
|---|
|  |  |  | bNames += device.getName()+";"; | 
|---|
|  |  |  | broadcastList.add(device.getHkId()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(broadcastList.size()>0){ | 
|---|
|  |  |  | PlatformBroadcastLog log = dealBroadcastBiz(model,broadcastList,bNames); | 
|---|
|  |  |  | 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){ | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private PlatformBroadcastLog dealBroadcastBiz(PlatformJob model, List<String> broadcastList,String bNames) { | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 广播通知 | 
|---|
|  |  |  | * @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(); | 
|---|
|  |  |  | String content1 =Constants.PlatformBroadcastContent.WRONG_IN.getInfo(); | 
|---|
|  |  |  | content1 = content1.replace("${param}",model.getCarCodeFront()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | log.setObjId(model.getId().toString()); | 
|---|
|  |  |  | log.setCreateDate(new Date()); | 
|---|
|  |  |  | log.setBizType(Constants.ONE); | 
|---|
|  |  |  | log.setHkDate(new Date()); | 
|---|
|  |  |  | 
|---|
|  |  |  | log.setHkInfo("请求成功"); | 
|---|
|  |  |  | log.setHkStatus(Constants.TWO); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | log.setDeviceType(Constants.ONE); | 
|---|
|  |  |  | log.setDeviceType(Constants.ZERO); | 
|---|
|  |  |  | log.setName("发送广播播报内容"); | 
|---|
|  |  |  | return  log; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public static PlatformBroadcastLog dealLedContentBiz(String hkNo,String hkName, String content,int speed,int color) { | 
|---|
|  |  |  | 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.setRemark(hkName); | 
|---|
|  |  |  | log.setInfo(content); | 
|---|
|  |  |  | log.setNum(Constants.ONE); | 
|---|
|  |  |  | log.setObjId(platformId.toString()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | TransparentChannelBodyRequest body = new TransparentChannelBodyRequest(); | 
|---|
|  |  |  | TransparentChannelHeadRequest head = new TransparentChannelHeadRequest(); | 
|---|