nidapeng
2024-04-19 89610234a2bdc56f60e0998045892ef2672edccc
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;
@@ -55,6 +56,10 @@
    private DeviceEventMapper deviceEventMapper;
    @Autowired
    private MemberMapper memberMapper;
    @Autowired
    private DeviceMapper deviceMapper;
    @Autowired
    private DataSyncConfig dataSyncConfig;
    @Autowired
    private CarEventMapper carEventMapper;
    @Autowired
@@ -110,7 +115,7 @@
        }catch (Exception e) {
            log.error("【海康门禁事件推送】========失败=======:\n" + e.getMessage());
        }finally {
            saveInterfaceLog(param,"/business/hksync/push/acs",result);
            saveInterfaceLog(param,"/business/hksync/push/acs",result,false);//不计日志
        }
        return  null;
@@ -129,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));
                }
@@ -225,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());
@@ -236,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());
@@ -297,7 +306,7 @@
            log.error("【海康访客事件推送】========失败=======:\n"+e.getMessage());
        }
        saveInterfaceLog(param,"/business/hksync/push/visit",result);
        saveInterfaceLog(param,"/business/hksync/push/visit",result,true);
        return  null;
    }
@@ -317,6 +326,10 @@
        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()){
@@ -465,7 +478,7 @@
            log.error("【海康停车场事件推送】========失败=======:\n"+e.getMessage());
        }
        saveInterfaceLog(param,"/business/hksync/push/parks",result);
        saveInterfaceLog(param,"/business/hksync/push/parks",result,false);
        return  null;
    }
@@ -528,14 +541,25 @@
            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.ONE )
            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());
            }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(cars!=null){
                    event.setMemberId(cars.getMemberId());
                if(visits!=null){
                    //最近使用该车的申请人(已到达)
                    event.setMemberId(visits.getMemberId());
                }
            }
            if(Constants.formatIntegerNum(request.getEventType()) == HKConstants.EventTypes.PARK_PASS_IN.getKey()){
                //如果是入厂放行
                delRetentionList.add(event.getPlateNos());
@@ -562,7 +586,10 @@
        return retention;
    }
    private void saveInterfaceLog(Object param, String path,String result) {
    private void saveInterfaceLog(Object param, String path,String result,boolean need) {
        if(!need){
            return;
        }
        InterfaceLog hkMonitoryLogDO=new InterfaceLog();
        hkMonitoryLogDO.setType(1);
        hkMonitoryLogDO.setCreateDate(new Date());