jiangping
2025-05-07 55075b2bbf2b6c41ec6ce831fb2b08666dbf4bf5
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java
@@ -239,14 +239,15 @@
            record.setCreateDate(DateUtil.getISO8601DateByStr2(request.getHappenTime()));
            record.setTimeInfo(Utils.Date.getStart(record.getCreateDate()));
            record.setType(Constants.ONE);//人员
            record.setMemberType(Constants.ZERO);//默认为未知人员(访客)
            record.setDeviceName(request.getSrcName());
            record.setMemberType(Constants.RetentionMemberType.fk);//默认为未知人员(访客)
            record.setIsdeleted(Constants.ZERO);
            record.setInOrOut(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{
                    //如果是出门
@@ -257,9 +258,9 @@
            if(member !=null){
                record.setMemberId(member.getId());
                record.setMemberName(member.getName());
                record.setMemberPhone(member.getPhone());
                record.setObjId(member.getId());
                record.setObjType(Constants.ONE);
                record.setMemberPhone(member.getPhone());
                record.setCompanyId(member.getCompanyId());
                record.setCompanyName(member.getCompanyNamePath());
                if(d!=null && Constants.equalsInteger(d.getIsEntrance(),Constants.ONE)){
@@ -268,22 +269,26 @@
                        //如果是进门,录入人员的在场数据记录
                        retentionList.add(getRetentionModelByRequest(member,request));
                        if(Constants.equalsInteger(member.getCompanyType(),Constants.ONE)){
                            record.setMemberType(Constants.ONE);
                            record.setMemberType(Constants.RetentionMemberType.internalMember);
                            inoutDayCount.setInSelfMemberNum(Constants.formatIntegerNum(inoutDayCount.getInSelfMemberNum())+1);//内部人员入场人次
                        }else{
                            record.setMemberType(Constants.TWO);
                            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);
                }
            }
            inoutRecordList.add(record);
        }
    }
@@ -563,6 +568,8 @@
                //如果人员信息存在,切是访客通行,则删除之前的所有进场数据(无论此次推送是进厂还是出场推送事件)
                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);//人员
@@ -895,6 +902,7 @@
            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>()
@@ -924,7 +932,7 @@
                event.setMemberId(carModel.getMemberId());
                event.setCompanyId(carModel.getGroupId());
                //-----------------20250429改造----start---------------
                event.setCarType(carModel.getBizType());//车辆业务类型
                event.setCarType(carModel.getBizType()==null?Constants.RetentionCarType.self : carModel.getBizType());//车辆业务类型
                carrecord.setObjType(Constants.FOUR);
                carrecord.setMemberName(carModel.getMemberName());//司机
                carrecord.setMemberPhone(carModel.getMemberPhone());//司机
@@ -940,8 +948,8 @@
                carrecord.setCategoryId(carModel.getCateId());
                carrecord.setCategoryName(carModel.getCateName());
                carrecord.setCategoryParentId(carModel.getCatePId());
                carrecord.setCategoryParentName(carModel.getCatePName());
                carrecord.setMemberType( Constants.RetentionMemberType.car);//只是车辆的记录
                carrecord.setCategoryParentName(StringUtils.defaultString(carModel.getCatePName(),carModel.getCateName()));
                carrecord.setType( Constants.RetentionMemberType.car);//只是车辆的记录
                if(carModel.getMemberId()!=null){
                    if(Constants.equalsInteger(carModel.getCompanyType(),Constants.ONE)){
                        //内部组织
@@ -979,7 +987,7 @@
                    carrecord.setObjType(Constants.FOUR);
                    carrecord.setCompanyId(carTypeJob.getCompanyId());
                    carrecord.setCompanyName(carTypeJob.getCompanyNamePath());
                    carrecord.setMemberType(Constants.RetentionMemberType.car);
                    carrecord.setType(Constants.RetentionMemberType.car);
                    if(carModel.getMemberPhone()!=null || StringUtils.isNotBlank(carModel.getMemberName())){
                        //货运司机(如果司机手机号或者姓名不为空)
                        carrecord.setMemberType(Constants.RetentionMemberType.driver);
@@ -1019,7 +1027,7 @@
                //如果是入厂放行
                delRetentionList.add(event.getPlateNos());
                delMemberRetentionList.add(event.getMemberId());
                retentionList.add(getRetentionModelByParkRequest(request,event));//在厂车辆信息
                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()){
@@ -1027,10 +1035,10 @@
                delRetentionList.add(event.getPlateNos());
                delMemberRetentionList.add(event.getMemberId());
                inoutDayCount.setOutCarNum(Constants.formatIntegerNum(inoutDayCount.getOutCarNum())+1);
                carrecord.setInOrOut(Constants.ZERO);
                carrecord.setInOrOut(Constants.ONE);
            }
            //车辆进入记录对应业务类型
            if(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())
@@ -1048,8 +1056,8 @@
                    carrecord.setCarBizType(Constants.RetentionCarType.fkCar);
                    Category category =findCategoryByBizType(Constants.RetentionCarType.fkCar,"访客车辆","访客车辆",categoryList);
                    carrecord.setCategoryId(category.getId());
                    carrecord.setCategoryName(category.getName());
                    carrecord.setCategoryParentName(category.getParentName());
                    carrecord.setCategoryName(StringUtils.defaultString(category.getName(),"访客车辆"));
                    carrecord.setCategoryParentName(StringUtils.defaultString(category.getParentName(),"访客车辆"));
                    carrecord.setCategoryParentId(category.getParentId());
                    for(Visits v :visitsList){
                        delMemberRetentionList.add(event.getMemberId());
@@ -1059,7 +1067,7 @@
                        copyObj.setMemberName(v.getName());
                        copyObj.setMemberPhone(v.getPhone());
                        copyObj.setCompanyName(v.getCompanyName());
                        copyObj.setMemberType(Constants.ZERO);
                        copyObj.setType(Constants.ONE);
                        copyObj.setRemark(carrecord.getCarCode());
                        copyObj.setCarCode(index>=0?null:carrecord.getCarCode());
                        copyObj.setMemberType(Constants.RetentionMemberType.fk);
@@ -1085,12 +1093,20 @@
                    }
                }
            }
            if(event.getCarType() !=null && !event.getCarType().equals(Constants.RetentionCarType.fkCar)){
            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) {
@@ -1112,7 +1128,7 @@
                }
                //统计今日入园总人次
                inoutDayCount.setInMemberNum(Constants.formatIntegerNum(inoutDayCount.getInMemberNum())+1);
            }else   if(carrecord.getMemberId()!=null &&  Constants.equalsInteger(carrecord.getInOrOut(),Constants.ONE)) {
            }else if( Constants.equalsInteger(carrecord.getInOrOut(),Constants.ONE)) {
                //如果是出园区
                if(Constants.equalsInteger(carrecord.getMemberType(),Constants.RetentionMemberType.relMember)){
                    //如果是相关方,统计今日累计数
@@ -1125,15 +1141,20 @@
                inoutDayCount.setOutMemberNum(Constants.formatIntegerNum(inoutDayCount.getOutMemberNum())+1);
            }
        }
        if(carrecord.getInOrOut() !=null) {//如果是出入记录
            inoutRecordList.add(carrecord);//录入车辆以及携带人员的入园明细记录(非访客)
        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;
                }
            }
@@ -1213,7 +1234,6 @@
        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());
@@ -1226,6 +1246,7 @@
        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());
@@ -1311,7 +1332,7 @@
        retention.setRemark("跟随车辆入园区");
        return retention;
    }
    private Retention getRetentionModelByParkRequest(EventParkInfoRequest request,CarEvent event  ) {
    private Retention getRetentionModelByParkRequest(EventParkInfoRequest request,CarEvent event ,InoutRecord carrecord ) {
        Retention retention = new Retention();
        retention.setIsdeleted(Constants.ZERO);
        retention.setCreateDate(DateUtil.getISO8601DateByStr(request.getHappenTime()));
@@ -1320,6 +1341,10 @@
        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());