| | |
| | | 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; |
| | |
| | | @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(); |
| | |
| | | continue; |
| | | } |
| | | //根据推送人员编码,处理在场、离场人员数据记录 |
| | | dealMemberDataByRequest(request,delRetentionLis,retentionList,inoutDayCount); |
| | | dealMemberDataByRequest(request,delRetentionLis,retentionList,inoutDayCount,inoutRecordList); |
| | | //封装门禁事件信息表对象 |
| | | list.add(getDeviceEventModelByRequest(request)); |
| | | } |
| | |
| | | if(retentionList.size()>0){ |
| | | //再插入最新的在厂人员 |
| | | retentionMapper.insert(retentionList); |
| | | } |
| | | if(inoutRecordList.size()>0){ |
| | | //再插入最新的在厂人员 |
| | | inoutRecordMapper.insert(inoutRecordList); |
| | | } |
| | | dealInoutDayCountBiz(inoutDayCount); |
| | | log.info("【海康门禁事件推送】========成功======="); |
| | |
| | | * @param delRetentionLis |
| | | * @param retentionList |
| | | */ |
| | | private void dealMemberDataByRequest(EventAcsInfoRequest request, List<Integer> delRetentionLis, List<Retention> retentionList,InoutDayCount inoutDayCount) { |
| | | 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.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(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){ |
| | | if(Constants.formatIntegerNum(request.getData().getExtEventInOut()) == Constants.ONE){ |
| | | //如果是进门,录入人员的在场数据记录 |
| | | 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){ |
| | | //如果是进门,录入人员的在场数据记录 |
| | | retentionList.add(getRetentionModelByRequest(member,request)); |
| | | 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);//相关方入场人次 |
| | | } |
| | | }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); |
| | | } |
| | | } |
| | | } |
| | |
| | | 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; |
| | | } |
| | | //海康访客记录编码 |
| | | dealVisitDataByRequstIccm(request,delRetentionLis,retentionList,inoutDayCount); |
| | | 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){ |
| | |
| | | /** |
| | | * 根据访客推送访客记录编码,处理访客记录、在场人员等信息 |
| | | */ |
| | | private void dealVisitDataByRequstIccm(EventVisitIccmInfoRequest request, List<Integer> delRetentionLis, List<Retention> retentionList, InoutDayCount inoutDayCount) { |
| | | |
| | | 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<>(); |
| | |
| | | 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())); |
| | | //来访时间 |
| | | inoutDayCount.setSigninVisitorNum(Constants.formatIntegerNum(inoutDayCount.getSigninVisitorNum())+1); |
| | | 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()); |
| | |
| | | memberMapper.updateById(member); |
| | | }else if (Constants.formatIntegerNum(request.getEventType()) == HKConstants.EventTypes.VISIT_SIGN_ICCM_OUT.getKey()) { |
| | | //如果是访客签离事件 |
| | | 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("访客正常签离"); |
| | | 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()); |
| | | 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(),"1")){ |
| | | //如果是访客登记,录入人员的在场数据记录 |
| | | 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.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(),"2")){ |
| | | !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()); |
| | | //更新访客来访或者签离时间信息 |
| | |
| | | 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()); |
| | |
| | | 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<Integer> 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,inoutDayCount)); |
| | | list.add(getParkEventModelByRequest(request,delRetentionList,retentionList,delMemberRetentionList,inoutDayCount,inoutRecordList)); |
| | | } |
| | | if(list.size()>0){ |
| | | //插入门禁记录 |
| | |
| | | .eq(Retention::getType,Constants.THREE) |
| | | .in(Retention::getCarNo,delRetentionList)); |
| | | } |
| | | if(delMemberRetentionList.size()>0){ |
| | | //先删除原有的在场人员(内部人员、相关方和访客) |
| | | retentionMapper.delete(new UpdateWrapper<Retention>().lambda() |
| | | .in(Retention::getType,Constants.RetentionMemberType.internalMember |
| | | ,Constants.RetentionMemberType.relMember |
| | | ,Constants.RetentionMemberType.fk) |
| | | .in(Retention::getMemberId,delMemberRetentionList)); |
| | | } |
| | | if(retentionList.size()>0){ |
| | | //再插入最新的在厂人员 |
| | | retentionMapper.insert(retentionList); |
| | | } |
| | | if(inoutRecordList.size()>0){ |
| | | //再插入最新的人车出入明细 |
| | | inoutRecordMapper.insert(inoutRecordList); |
| | | } |
| | | dealInoutDayCountBiz(inoutDayCount); |
| | | log.info("【海康停车场事件推送】========成功======="); |
| | |
| | | * @param request |
| | | * @return |
| | | */ |
| | | private CarEvent getParkEventModelByRequest(EventParkInfoRequest request, List<String> delRetentionList , List<Retention> retentionList,InoutDayCount inoutDayCount ) { |
| | | private CarEvent getParkEventModelByRequest(EventParkInfoRequest request |
| | | , List<String> delRetentionList |
| | | , List<Retention> retentionList |
| | | , List<Integer> 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()); |
| | | } |
| | | } |
| | | //处理自有车自动签到业务 |
| | | dealSelTruckAutoSignBiz(request,event); |
| | | if(Constants.formatIntegerNum(request.getEventType()) == HKConstants.EventTypes.PARK_PASS_IN.getKey()){ |
| | | //如果是入厂放行 |
| | | delRetentionList.add(event.getPlateNos()); |
| | | delMemberRetentionList.add(event.getMemberId()); |
| | | 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()); |
| | | delMemberRetentionList.add(event.getMemberId()); |
| | | 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); |
| | | if(1==2){ |
| | | Category category =findCategoryByBizType(Constants.RetentionCarType.fkCar,"访客车辆","访客车辆",categoryList); |
| | | carrecord.setCategoryId(category.getId()); |
| | | carrecord.setCategoryName(StringUtils.defaultString(category.getName(),"访客车辆")); |
| | | carrecord.setCategoryParentName(StringUtils.defaultString(category.getParentName(),"访客车辆")); |
| | | carrecord.setCategoryParentId(category.getParentId()); |
| | | for(Visits v :visitsList){ |
| | | 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.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); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | 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()); |
| | | //自有车 查询当前是否有待签到的任务 |
| | | 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.DONE.getKey(), |
| | | Constants.PlatformJobStatus.TRANSFERING.getKey(), |
| | | Constants.PlatformJobStatus.EXCEPTION.getKey(), |
| | | Constants.PlatformJobStatus.AUTHED_LEAVE.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)){ |
| | | 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); |
| | | } |
| | | } |
| | | }; |
| | | |
| | | |
| | | |
| | | }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)); |
| | | 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; |
| | | } |
| | | |
| | | 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.setRemark("跟随车辆入园区"); |
| | | 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.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::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); |
| | | update.setInOut(Constants.ZERO);//车辆已经离开 |
| | | platformJobMapper.updateById(update); |
| | | 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")){ |
| | |
| | | platformJobMapper.updateById(update); |
| | | } |
| | | } |
| | | /*if(job.getStartDate() == null){ |
| | | /* |
| | | 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) { |
| | |
| | | if(StringUtils.isBlank(device.getHkId())){ |
| | | continue; |
| | | } |
| | | if(Constants.equalsInteger(device.getType(),Constants.ZERO)){ |
| | | /*if(Constants.equalsInteger(device.getType(),Constants.ZERO)){ |
| | | //如果是LED |
| | | 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)){ |
| | | }else */if(Constants.equalsInteger(device.getType(),Constants.TWO)){ |
| | | //如果是广播点 |
| | | bNames += device.getName()+";"; |
| | | broadcastList.add(device.getHkId()); |
| | |
| | | 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); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 广播通知 |