jiangping
2024-02-28 de21f15d5b96a714b012337cf8c5d6a53548590f
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncVisitServiceImpl.java
@@ -1,6 +1,7 @@
package com.doumee.service.business.impl.hksync;
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.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
@@ -8,6 +9,7 @@
import com.doumee.core.haikang.model.param.BaseListPageResponse;
import com.doumee.core.haikang.model.param.BaseResponse;
import com.doumee.core.haikang.model.param.request.*;
import com.doumee.core.haikang.model.param.request.event.visit.EventVisitInfoRequest;
import com.doumee.core.haikang.model.param.respose.*;
import com.doumee.core.haikang.service.HKService;
import com.doumee.core.utils.Constants;
@@ -16,9 +18,11 @@
import com.doumee.core.utils.ImageBase64Util;
import com.doumee.core.wx.wxPlat.WxPlatNotice;
import com.doumee.dao.business.DeviceRoleMapper;
import com.doumee.dao.business.RetentionMapper;
import com.doumee.dao.business.join.VisitsJoinMapper;
import com.doumee.dao.business.model.DeviceRole;
import com.doumee.dao.business.model.Member;
import com.doumee.dao.business.model.Retention;
import com.doumee.dao.business.model.Visits;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import lombok.extern.slf4j.Slf4j;
@@ -38,6 +42,8 @@
public class HkSyncVisitServiceImpl extends HkSyncBaseServiceImpl {
    @Autowired
    private VisitsJoinMapper visitsMapper;
    @Autowired
    private RetentionMapper retentionMapper;
    @Autowired
    private SystemDictDataBiz systemDictDataBiz;
    @Autowired
@@ -112,6 +118,11 @@
                        update.setOutDate(DateUtil.getISO8601DateByStr2(model.getVisitEndTime()));
                        update.setRemark("已签离");
                        visitsMapper.updateById(update);
                        //先删除原有的在场人员(普通访客)
                        retentionMapper.delete(new UpdateWrapper<Retention>().lambda()
                                .eq(Retention::getType,Constants.memberType.visitor)
                                .eq(Retention::getMemberId,c.getMemberId()));
                    }
                }
                if (model.getVisitorStatus()!=null&& "7,8".contains( model.getVisitorStatus()+"")){
@@ -126,6 +137,12 @@
                        update.setOutDate(DateUtil.getISO8601DateByStr2(model.getVisitEndTime()));
                        update.setRemark("超时未签到");
                        visitsMapper.updateById(update);
                        //先删除原有的在场人员(普通访客)
                        retentionMapper.delete(new UpdateWrapper<Retention>().lambda()
                                .eq(Retention::getType,Constants.memberType.visitor)
                                .eq(Retention::getMemberId,c.getMemberId()));
                        //再插入最新的在厂人员
                        retentionMapper.insert(getRetentionModelByVisitRequest(c,update.getInDate()));
                    }
                }
            }
@@ -135,6 +152,29 @@
            Constants.DEALING_HK_VISIT_EXPIRE =false;
        }
    }
    private Retention getRetentionModelByVisitRequest(Visits visits,Date date) {
        Retention retention = new Retention();
        retention.setIsdeleted(Constants.ZERO);
        retention.setCreateDate(date);
        retention.setClasses(visits.getClasses());
        retention.setCode(visits.getCode());
        retention.setIdcardNo(visits.getIdcardNo());
        retention.setIdcardDecode(visits.getIdcardDecode());
        retention.setName(visits.getName());
        retention.setBirthday(visits.getBirthday());
        retention.setType(visits.getMemberType());
        retention.setCompanyId(visits.getCompanyId());
        retention.setCompanyName(visits.getCompanyName());
        retention.setEventDate(retention.getCreateDate());
        retention.setFaceImg(visits.getFaceImg());
        retention.setImgurl(visits.getImgurl());
        retention.setPhone(visits.getPhone());
        retention.setMemberId(visits.getMemberId());
        return retention;
    }
    public AppointmentInfoResponse getVisitRecord(String orderId){
        //分页遍历循环查询所有门禁设备数据
        if(StringUtils.isBlank(orderId)){
@@ -230,6 +270,7 @@
    private void getUpdateModelByResponse(  Visits c,Date date,String type,List<DeviceRole> roleList,String path ) {
        String code = null;
        String id = null;
        String qrcode = null;
        //发起海康预约接口
        if(StringUtils.equals(type,"0")){
            //(需要登记)
@@ -244,9 +285,12 @@
            }
            BaseResponse<VisitAppointmentResponse> response =  HKService.visitAppiontment(request);
            code =response!=null ?response.getCode():null;
            id = (response!=null && response.getData()!=null
            if((response!=null && response.getData()!=null
                    && response.getData().getAppointmentInfoList() !=null
                    && response.getData().getAppointmentInfoList().size()>0)?response.getData().getAppointmentInfoList().get(0).getOrderId():null;
                    && response.getData().getAppointmentInfoList().size()>0)){
                id =response.getData().getAppointmentInfoList().get(0).getOrderId();
                qrcode =response.getData().getAppointmentInfoList().get(0).getQRCode();
            }
        }else{
            //免登记
            VisitAppointmentMDJRequest request =getHkMDJRequestPara(c,roleList,path);
@@ -260,16 +304,20 @@
            }
            BaseResponse<VisitAppointmentMDJResponse> response = HKService.visitAppiontmentMDJ(request );
            code =response!=null ?response.getCode():null;
            id = (response!=null && response.getData()!=null)?response.getData().getOrderId():null;
            if(response!=null && response.getData()!=null){
                id = response.getData().getOrderId();
                qrcode =response.getData().getQRCode();
            }
        }
        if (code!= null && id!=null) {
            //海康下发成功
            c.setHkId( id);//预约标识
            c.setQrcode(qrcode);
            c.setRemark("下发海康成功!【"+type+"】");
            c.setStatus(Constants.VisitStatus.xfSuccess);//下发海康成功
        } else {
            //海康下发成功
            //海康下发失败
            c.setRemark("下发海康失败!【"+type+"】");
            c.setStatus(Constants.VisitStatus.xfFail);//下发海康失败
        }
@@ -403,7 +451,9 @@
    }
    private List<Visits> getExpireVisitList() {
        MPJLambdaWrapper<Visits> queryWrapper = new MPJLambdaWrapper<>();
        queryWrapper.selectAll(Visits.class);
        queryWrapper.selectAll(Visits.class)
                .selectAs(Member::getType,Visits::getMemberType)
                .leftJoin(Member.class,Member::getId,Visits::getReceptMemberId);
        queryWrapper.in(Visits::getStatus, Arrays.asList(new Integer[]{Constants.VisitStatus.xfSuccess,Constants.VisitStatus.signin}) );
        List<Visits> list = visitsMapper.selectJoinList(Visits.class,queryWrapper);
        return list;