nidapeng
2024-03-20 af6dd48ed508df2ff33f62cd5c40db3f51f9d2a8
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java
@@ -3,6 +3,7 @@
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.doumee.config.DataSyncConfig;
import com.doumee.config.SpringContextUtil;
import com.doumee.core.haikang.model.HKConstants;
import com.doumee.core.haikang.model.param.request.event.acs.EventAcsInfoRequest;
@@ -50,9 +51,15 @@
    @Autowired
    private CarsMapper carsMapper;
    @Autowired
    private ParkBookMapper parkBookMapper;
    @Autowired
    private DeviceEventMapper deviceEventMapper;
    @Autowired
    private MemberMapper memberMapper;
    @Autowired
    private DeviceMapper deviceMapper;
    @Autowired
    private DataSyncConfig dataSyncConfig;
    @Autowired
    private CarEventMapper carEventMapper;
    @Autowired
@@ -127,8 +134,12 @@
            Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda().eq(Member::getHkId,userNo).last("limit 1"));
            if(member !=null){
                //如果人员信息存在,则删除之前的所有进场数据(无论此次推送是进厂还是出场推送事件)
                Device d = deviceMapper.selectOne(new QueryWrapper<Device>().lambda()
                        .eq(Device::getDoorId,request.getSrcIndex())
                        .eq(Device::getIsdeleted,Constants.ZERO)
                        .last("limit 1" ));
                delRetentionLis.add(member.getId());
                if(Constants.formatIntegerNum(request.getData().getExtEventInOut()) == Constants.ONE){
                if(!(Constants.equalsInteger(d.getIsEntrance(),Constants.ONE) && Constants.formatIntegerNum(request.getData().getExtEventInOut()) != Constants.ONE)){
                    //如果是进门,录入人员的在场数据记录
                    retentionList.add(getRetentionModelByRequest(member,request));
                }
@@ -223,7 +234,7 @@
    private Retention getRetentionModelByRequest(Member member, EventAcsInfoRequest request) {
        Retention retention = new Retention();
        retention.setIsdeleted(Constants.ZERO);
        retention.setCreateDate(DateUtil.getISO8601DateByStr(request.getData().getExtReceiveTime()));
        retention.setCreateDate(DateUtil.getISO8601DateByStr(request.getHappenTime()));
        retention.setClasses(member.getClasses());
        retention.setCode(member.getCode());
        retention.setIdcardNo(member.getIdcardNo());
@@ -234,7 +245,7 @@
        retention.setCompanyId(member.getCompanyId());
        retention.setCompanyName(member.getCompanyName());
        retention.setEventCode(request.getData().getExtEventCode()+"");
        retention.setEventDate(DateUtil.getISO8601DateByStr(request.getData().getExtReceiveTime()));
        retention.setEventDate(DateUtil.getISO8601DateByStr(request.getHappenTime()));
        retention.setFaceImg(member.getFaceImg());
        retention.setImgurl(member.getImgurl());
        retention.setPhone(member.getPhone());
@@ -307,21 +318,36 @@
        EventVisitDataRequest model = request.getData();
        MPJLambdaWrapper<Visits> queryWrapper = new MPJLambdaWrapper<>();
        queryWrapper.selectAll(Visits.class);
        queryWrapper.selectAs(Member::getType,Visits::getMemberType);
        queryWrapper.eq(Visits::getHkId,model.getVisitorId() );
        queryWrapper.leftJoin(Member.class,Member::getId,Visits::getMemberId );
        queryWrapper.last("limit 1");
        Visits visits = visitsMapper.selectJoinOne(Visits.class,queryWrapper);
        if(visits !=null){
            //如果人员信息存在,则删除之前的所有进场数据(无论此次推送是进厂还是出场推送事件)
            delRetentionLis.add(visits.getMemberId());
            if(dataSyncConfig.getOrgUserDataOrigin() == DataSyncConfig.origin.hk){
                //如果是伊利大屏项目,不做处理
                return;
            }
            Visits updateVistis = new Visits();
            updateVistis.setId(visits.getId());
            if(Constants.formatIntegerNum(request.getEventType()) == HKConstants.EventTypes.VISIT_SIGN_IN.getKey()){
                //如果是访客登记,录入人员的在场数据记录
                retentionList.add(getRetentionModelByVisitRequest(visits,request));
                //来访时间
                updateVistis.setOutDate(DateUtil.getISO8601DateByStr(model.getStartTime()));
                updateVistis.setStatus(Constants.VisitStatus.signin);
                updateVistis.setInDate(DateUtil.getISO8601DateByStr(model.getStartTime()));
                updateVistis.setOutDate(DateUtil.getISO8601DateByStr(model.getEndTime()));
                //更新最新来访时间
                Member member = new Member();
                member.setLastVisitDate(updateVistis.getInDate());
                member.setId(visits.getMemberId());
                memberMapper.updateById(member);
            }else {
                //如果是访客签离事件
                updateVistis.setStatus(Constants.VisitStatus.signout);
                updateVistis.setInDate(DateUtil.getISO8601DateByStr(model.getStartTime()));
                updateVistis.setOutDate(DateUtil.getISO8601DateByStr(model.getEndTime()));
                updateVistis.setOutType(Constants.ZERO);
                updateVistis.setOutInfo("访客正常签离");
@@ -341,7 +367,9 @@
        event.setVisitorCode(request.getData().getVisitorCode());
        event.setTimeout(request.getTimeout());
        event.setSvrIndexCode(request.getData().getSvrIndexCode());
        event.setHappenTime(request.getHappenTime());
        event.setStatus(request.getStatus());
        event.setEndTime(request.getData().getEndTime());
        event.setStartTime(request.getData().getStartTime());
        event.setSrcType(request.getSrcType());
        event.setSrcParentIndex(request.getSrcParentIndex());
@@ -350,8 +378,23 @@
        event.setSignOrg(request.getData().getSignOrg());
        event.setSex(request.getData().getSex());
        event.setPurpose(request.getData().getPurpose());
        event.setPhone(request.getData().getPhone());
        event.setBeVisitedPersonId(request.getData().getBeVisitedPersonId());
        event.setBeVisitedPersonName(request.getData().getBeVisitedPersonName());
        event.setBeVisitedPersonOrg(request.getData().getBeVisitedPersonOrg());
        event.setBeVisitedPersonOrgId(request.getData().getBeVisitedPersonOrgId());
        event.setVisitorWorkUint(request.getData().getVisitorWorkUint());
        event.setPhotoUrl(getHkImgUrl(request.getData().getPhotoUrl()));
        event.setPersonName(request.getData().getPersonName());
        event.setCarNo(request.getData().getCarNo());
        event.setCaptureUrl(request.getData().getCaptureUrl());
        if(StringUtils.isNotBlank(request.getData().getCaptureUrl())){
            event.setCaptureUrl(HKConstants.IMG_INDEX+request.getData().getCaptureUrl());
        }
        if(StringUtils.isNotBlank(request.getData().getPhotoUrl())){
            event.setPhotoUrl(HKConstants.IMG_INDEX+request.getData().getPhotoUrl());
        }
        event.setIdType(request.getData().getIdType());
        String idnum =request.getData().getIdNo();
        if(StringUtils.isNotBlank(idnum)){
@@ -362,8 +405,6 @@
        }
        event.setEventType(request.getEventType());
        event.setEventId(request.getEventId());
        event.setHappenTime(event.getHappenTime());
        return event;
    }
@@ -380,14 +421,14 @@
        retention.setType(visits.getMemberType());
        retention.setCompanyId(visits.getCompanyId());
        retention.setCompanyName(visits.getCompanyName());
        retention.setEventCode(request.getEventType()+"");
        retention.setEventCode(request.getSrcType()+"");
        retention.setEventDate(retention.getCreateDate());
        retention.setFaceImg(visits.getFaceImg());
        retention.setImgurl(visits.getImgurl());
        retention.setPhone(visits.getPhone());
        retention.setMemberId(visits.getMemberId());
        retention.setDeviceName(request.getSrcName());
        retention.setDeviceIndex(request.getSrcIndex());
//        retention.setDeviceName(request.getSrcName());
//        retention.setDeviceIndex(request.getSrcIndex());
        return retention;
    }
@@ -409,16 +450,28 @@
            //门禁事件集合
            List<EventParkInfoRequest> events  = param.getParams().getEvents();
            List<CarEvent> list = new ArrayList<>();
            List<Retention> retentionList = new ArrayList<>();
            List<String> delRetentionList = new ArrayList<>();
            for(EventParkInfoRequest request : events){
                if(request.getData() ==null ||StringUtils.isBlank(request.getData().getPlateNo())){
                    continue;
                }
                //封装事件信息表对象
                list.add(getParkEventModelByRequest(request));
                list.add(getParkEventModelByRequest(request,delRetentionList,retentionList));
            }
            if(list.size()>0){
                //插入门禁记录
                carEventMapper.insertBatchSomeColumn(list);
            }
            if(delRetentionList.size()>0){
                //先删除原有的在场人员(内部人员)
                retentionMapper.delete(new UpdateWrapper<Retention>().lambda()
                        .eq(Retention::getType,Constants.THREE)
                        .in(Retention::getCarNo,delRetentionList));
            }
            if(retentionList.size()>0){
                //再插入最新的在厂人员
                retentionMapper.insertBatchSomeColumn(retentionList);
            }
            log.error("【海康停车场事件推送】========成功=======");
        }catch (Exception e){
@@ -434,7 +487,7 @@
     * @param request
     * @return
     */
    private CarEvent getParkEventModelByRequest(EventParkInfoRequest request) {
    private CarEvent getParkEventModelByRequest(EventParkInfoRequest request, List<String> delRetentionList , List<Retention> retentionList ) {
        CarEvent event = new CarEvent();
        event.setIsdeleted(Constants.ZERO);
        event.setCreateDate(DateUtil.getISO8601DateByStr(request.getHappenTime()));
@@ -488,18 +541,40 @@
            event.setPlatePicUrl(getHkImgUrl(request.getData().getPicUrl().getPlatePicUrl()));
        }
        if(StringUtils.isNotBlank(event.getPlateNos())){
                Cars cars = carsMapper.selectOne(new QueryWrapper<Cars>().lambda()
                        .eq(Cars::getCode,event.getPlateNos())
                                .eq(Cars::getIsdeleted,Constants.ONE )
                ParkBook cars = parkBookMapper.selectOne(new QueryWrapper<ParkBook>().lambda()
                        .eq(ParkBook::getCarCode,event.getPlateNos())
                                .eq(ParkBook::getIsdeleted,Constants.ONE )
                        .last("limit 1" ));
                if(cars!=null){
                    event.setMemberId(cars.getMemberId());
                }
            if(Constants.formatIntegerNum(request.getEventType()) == HKConstants.EventTypes.PARK_PASS_IN.getKey()){
                //如果是入厂放行
                delRetentionList.add(event.getPlateNos());
                retentionList.add(getRetentionModelByParkRequest(request));
            }else if(Constants.formatIntegerNum(request.getEventType()) == HKConstants.EventTypes.PARK_PASS_OUT.getKey()){
                //如果是出场放行
                delRetentionList.add(event.getPlateNos());
            }
        }
        return event;
    }
    private Retention getRetentionModelByParkRequest(EventParkInfoRequest request) {
        Retention retention = new Retention();
        retention.setIsdeleted(Constants.ZERO);
        retention.setCreateDate(DateUtil.getISO8601DateByStr(request.getHappenTime()));
        retention.setCarNo(request.getData().getPlateNo());
        retention.setType(Constants.THREE);
//        retention.setDeviceName(request.getSrcName());
//        retention.setDeviceIndex(request.getSrcIndex());
        return retention;
    }
    private void saveInterfaceLog(Object param, String path,String result) {
        InterfaceLog hkMonitoryLogDO=new InterfaceLog();
        hkMonitoryLogDO.setType(1);