| | |
| | | package com.doumee.service.business.impl.hksync; |
| | | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.alibaba.nacos.shaded.org.checkerframework.checker.units.qual.C; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; |
| | | import com.doumee.biz.system.SystemDictDataBiz; |
| | |
| | | import com.doumee.dao.business.model.*; |
| | | import com.doumee.dao.business.model.Member; |
| | | import com.doumee.dao.web.reqeust.SavePlatformWarnEventDTO; |
| | | import com.doumee.service.business.CategoryService; |
| | | 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.response.TmsOrderInfoResponse; |
| | | import com.github.yulichang.wrapper.MPJLambdaWrapper; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.commons.lang3.ObjectUtils; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.apache.commons.net.ftp.FTP; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | |
| | | inoutDayCount.setOutOtherMemberNum(Constants.formatIntegerNum(inoutDayCount.getOutOtherMemberNum())+1);//相关方出场人次 |
| | | } |
| | | } |
| | | } |
| | | if(record.getMemberType()!=null){ |
| | | inoutRecordList.add(record); |
| | | if(record.getMemberType()!=null){ |
| | | inoutRecordList.add(record); |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | record.setCreateDate(DateUtil.getISO8601DateByStr2(request.getHappenTime())); |
| | | record.setTimeInfo(Utils.Date.getStart(record.getCreateDate())); |
| | | record.setType(Constants.ONE);//人员 |
| | | record.setMemberType(Constants.ZERO); |
| | | record.setMemberType(Constants.RetentionMemberType.fk); |
| | | record.setIsdeleted(Constants.ZERO); |
| | | record.setMemberName(visits.getName()); |
| | | record.setObjId(visits.getId()); |
| | |
| | | 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.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")){ |
| | | !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); |
| | | } |
| | |
| | | event.setSrcParentIndex(request.getSrcParentIndex()); |
| | | 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()); |
| | |
| | | .in(Retention::getCarNo,delRetentionList)); |
| | | } |
| | | if(delMemberRetentionList.size()>0){ |
| | | //先删除原有的在场人员(内部人员和访客) |
| | | //先删除原有的在场人员(内部人员、相关方和访客) |
| | | retentionMapper.delete(new UpdateWrapper<Retention>().lambda() |
| | | .in(Retention::getType,Constants.memberType.internal,Constants.memberType.visitor) |
| | | .in(Retention::getType,Constants.RetentionMemberType.internalMember |
| | | ,Constants.RetentionMemberType.relMember |
| | | ,Constants.RetentionMemberType.fk) |
| | | .in(Retention::getMemberId,delMemberRetentionList)); |
| | | } |
| | | if(retentionList.size()>0){ |
| | |
| | | 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));//查询所有带有业务类型的车辆分类编码 |
| | | .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.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")); |
| | | .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()); |
| | |
| | | carrecord.setCompanyId(carTypeJob.getCompanyId()); |
| | | carrecord.setCompanyName(carTypeJob.getCompanyNamePath()); |
| | | carrecord.setType(Constants.RetentionMemberType.car); |
| | | if(carModel.getMemberPhone()!=null || StringUtils.isNotBlank(carModel.getMemberName())){ |
| | | if(carTypeJob.getDriverName()!=null || StringUtils.isNotBlank(carTypeJob.getDrivierPhone())){ |
| | | //货运司机(如果司机手机号或者姓名不为空) |
| | | carrecord.setMemberType(Constants.RetentionMemberType.driver); |
| | | } |
| | |
| | | carrecord.setInOrOut(Constants.ONE); |
| | | } |
| | | //车辆进入记录对应业务类型 |
| | | if(isCarInOrOutEvent(request) &&( event.getCarType() ==null || event.getCarType().equals(Constants.RetentionCarType.other))){ |
| | | if( isCarInOrOutEvent(request) &&( event.getCarType() ==null || event.getCarType().equals(Constants.RetentionCarType.other))){ |
| | | //如果未识别到车型,不是固定车 也不是货运车辆,则检查是否是访客车 |
| | | visitsList = visitsMapper.selectList(new QueryWrapper<Visits>().lambda() |
| | | .eq(Visits::getCarNos,event.getPlateNos()) |
| | |
| | | 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){ |
| | | 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()); |
| | | 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); |
| | | } |
| | | }else{ |
| | | //如果是进入园区,访客录入在园人员记录 |
| | | retentionList.add(getRetentionModelByRequest(copyObj,request)); |
| | | //统计访客出行数 |
| | | inoutDayCount.setInVisitorNum(Constants.formatIntegerNum(inoutDayCount.getInVisitorNum())+1); |
| | | } |
| | | } |
| | | } |
| | |
| | | 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")){ |
| | | ||StringUtils.equals(response.getOrderStatus(),"4") |
| | | ||StringUtils.equals(response.getOrderStatus(),"5") |
| | | ||StringUtils.equals(response.getOrderStatus(),"6")){ |
| | | //如果合同在途,则自动签到 |
| | | jobAutoSignBiz(platformJob); |
| | | } |
| | |
| | | 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("【海康月台工作状态事件推送】========成功======="); |
| | |
| | | platformJobMapper.updateById(update); |
| | | } |
| | | dealPlatformContentForLeave(job); |
| | | } |
| | | } |
| | | } |
| | | }else if(StringUtils.equals(status.getMotionStatus(),"enter")){ |
| | | //如果是车辆进入 |
| | |
| | | }else{ |
| | | continue;//其他状态不处理,跳过 |
| | | } |
| | | //暂时不做相关自动完成作业业务处理 |
| | | //暂时不做相关自动完成作业业务处理 |
| | | // dealPlatformJobLogBiz(update,status);//记录作业日志 |
| | | } |
| | | if(eventList.size()>0){ |