jiangping
2025-05-07 c3aaf28f7316cce12eec007a9f85a96cbcddeec2
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java
@@ -25,6 +25,7 @@
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;
@@ -72,6 +73,8 @@
    private DataSyncConfig dataSyncConfig;
    @Autowired
    private CarEventMapper carEventMapper;
    @Autowired
    private CategoryMapper categoryMapper;
    @Autowired
    private VisitEventMapper visitEventMapper;
    @Autowired
@@ -236,14 +239,14 @@
            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.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){
                    //如果是进门,录入人员的在场数据记录
                    record.setInOrOut(Constants.ZERO);
                    inoutDayCount.setInMemberNum(Constants.formatIntegerNum(inoutDayCount.getInMemberNum())+1);//入场人次
                }else{
                    //如果是出门
@@ -252,10 +255,11 @@
                }
            }
            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)){
@@ -264,16 +268,18 @@
                        //如果是进门,录入人员的在场数据记录
                        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);//相关方出场人次
                        }
                    }
@@ -566,6 +572,7 @@
                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());
@@ -877,8 +884,14 @@
        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();
            InoutRecord carrecord = new InoutRecord();
            carrecord.setCreateDate(DateUtil.getISO8601DateByStr2(request.getHappenTime()));
            carrecord.setTimeInfo(Utils.Date.getStart(carrecord.getCreateDate()));
            carrecord.setType(Constants.ZERO);//车辆
@@ -898,9 +911,13 @@
                            .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(Category.class,Category::getId,Cars::getCateId)
                            .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"));
@@ -914,6 +931,7 @@
                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());
@@ -921,7 +939,11 @@
                carrecord.setMemberCode(carModel.getMemberCode());
                carrecord.setCompanyId(carModel.getGroupId());
                carrecord.setCompanyName(carModel.getCompanyName());
                carrecord.setMemberType( Constants.RetentionMemberType.car);//只是车辆的记录
                carrecord.setCategoryId(carModel.getCateId());
                carrecord.setCategoryName(carModel.getCateName());
                carrecord.setCategoryParentId(carModel.getCatePId());
                carrecord.setCategoryParentName(carModel.getCatePName());
                carrecord.setType( Constants.RetentionMemberType.car);//只是车辆的记录
                if(carModel.getMemberId()!=null){
                    if(Constants.equalsInteger(carModel.getCompanyType(),Constants.ONE)){
                        //内部组织
@@ -959,24 +981,38 @@
                    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);
                    }
                    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());
                }
            }
            //处理自有车自动签到业务
@@ -996,8 +1032,8 @@
                carrecord.setInOrOut(Constants.ZERO);
            }
            //车辆进入记录对应业务类型
            if(event.getCarType() ==null || event.getCarType().equals(Constants.RetentionCarType.other)){//如果为识别到车型
                //如果不是固定车 也不是货运车辆,则检查是否是访客车
            if(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 )
@@ -1011,6 +1047,12 @@
                    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(category.getName());
                    carrecord.setCategoryParentName(category.getParentName());
                    carrecord.setCategoryParentId(category.getParentId());
                    for(Visits v :visitsList){
                        delMemberRetentionList.add(event.getMemberId());
                        InoutRecord copyObj = new InoutRecord();
@@ -1019,37 +1061,92 @@
                        copyObj.setMemberName(v.getName());
                        copyObj.setMemberPhone(v.getPhone());
                        copyObj.setCompanyName(v.getCompanyName());
                        copyObj.setCarBizType(Constants.RetentionCarType.fkCar);
                        copyObj.setMemberType(Constants.ZERO);
                        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)){
                            //如果是车辆出园区,访客申请自动签离
                            visitsService.visitLevelForCarOut(v);
                            //如果是车辆出园区 统计访客进入数
                            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(event.getCarType() !=null &&  event.getCarType().equals(Constants.RetentionCarType.fkCar)) {
            if(event.getCarType() !=null && !event.getCarType().equals(Constants.RetentionCarType.fkCar)){
                //录入非访客类型车辆进出记录
                carrecord.setCarBizType(event.getCarType()==null?Constants.RetentionCarType.other:event.getCarType());
                if(Constants.equalsInteger(carrecord.getMemberType(),Constants.RetentionMemberType.internalMember)
                    ||Constants.equalsInteger(carrecord.getMemberType(),Constants.RetentionMemberType.relMember)
                    ||Constants.equalsInteger(carrecord.getMemberType(),Constants.RetentionMemberType.driver)){
                    retentionList.add(getRetentionModelByRequest(carrecord,request));
                }
                inoutRecordList.add(carrecord);
                dealNotFkCarMemberBiz(event,request,carrecord,retentionList,inoutDayCount,inoutRecordList);
            }
        }
        return event;
    }
    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(carrecord.getMemberId()!=null &&  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(carrecord.getInOrOut() !=null) {//如果是出入记录
            if(Constants.equalsInteger(carrecord.getCarBizType(),Constants.RetentionCarType.other)){
                carrecord.setCategoryName("未知车辆");//默认未知车辆
            }
            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())){
                    return category;
                }
            }
        }
        Category category  = new Category();
        category.setName(tempname);
        category.setParentName(pName);
        return null;
    }
    private void dealSelTruckAutoSignBiz(EventParkInfoRequest request, CarEvent event) {
@@ -1096,7 +1193,6 @@
                            //如果是自有车卸货 查询TMS合同状态,决定是否自动签到
                            checkTmsContractStatusBiz(platformJob);
                        }
                    }
                }
            }