nidapeng
2024-03-19 6c40e04eb7c2060feb2533735cd3089d438965e5
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncVisitServiceImpl.java
@@ -1,5 +1,6 @@
package com.doumee.service.business.impl.hksync;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.doumee.biz.system.SystemDictDataBiz;
@@ -94,7 +95,7 @@
                 *      * 10:邀约中(员工发起邀约,访客还未应邀)、
                 *      * 11:邀约失效(员工发起邀约,一直到当前时间超过预计离开时间,访客还未应邀)
                 */
                if (model.getVisitorStatus()!=null && "3,4,11".contains( model.getVisitorStatus()+"" )){
                if (model.getVisitorStatus()!=null && ",3,4,11,".contains( ","  +model.getVisitorStatus()+"," )){
                    //对相应状态下的数据进行【已失效】处理
                    Visits update = new Visits();
                    //已失效
@@ -106,12 +107,12 @@
                    update.setRemark("超时未登记");
                    visitsMapper.updateById(update);
                }
                if (model.getVisitorStatus()!=null && "5,6".contains( model.getVisitorStatus()+"" )){
                if (model.getVisitorStatus()!=null && ",5,6,".contains( ","  +model.getVisitorStatus()+"," )){
                    // 对相应状态下的数据进行【已签离】处理
                    if(!Constants.equalsInteger(c.getStatus(),Constants.VisitStatus.signout)){
                        Visits update = new Visits();
                        //已失效
                        update.setStatus(Constants.VisitStatus.invalid);
                        update.setStatus(Constants.VisitStatus.signout);
                        update.setEditDate(date);
                        update.setId(c.getId());
                        update.setInDate(DateUtil.getISO8601DateByStr2(model.getVisitStartTime()));
@@ -125,7 +126,7 @@
                                .eq(Retention::getMemberId,c.getMemberId()));
                    }
                }
                if (model.getVisitorStatus()!=null&& "7,8".contains( model.getVisitorStatus()+"")){
                if (model.getVisitorStatus()!=null&& ",7,8,".contains( ","  +model.getVisitorStatus()+"," )){
                    //如果已登记
                    if(!Constants.equalsInteger(c.getStatus(),Constants.VisitStatus.signin)){
                        Visits update = new Visits();
@@ -204,8 +205,8 @@
        List<DeviceRole> roleList = deviceRoleMapper.selectList(new QueryWrapper<DeviceRole>().lambda()
                .eq(DeviceRole::getType, Constants.ONE));
        //标记是否走免登记预约
        String applyType =systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.MDJ_VISIT_REQUIRED).getCode();
        String applyLwType =systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.MDJ_LW_REQUIRED).getCode();
//        String applyType =systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.MDJ_VISIT_REQUIRED).getCode();
//        String applyLwType =systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.MDJ_LW_REQUIRED).getCode();
        try {
            //查询所有需要同步的数据
            List<Visits> list = getVisitList();
@@ -217,8 +218,7 @@
            Date date = new Date();
            for(Visits c : list) {
                //发起海康预约接口(需要登记),根据预约返回接口封装申请记录更新字段
                String type = Constants.equalsInteger(c.getType(),Constants.ONE)?applyType:applyLwType;
                getUpdateModelByResponse(c,date,type,roleList,path);
                getUpdateModelByResponse(c,date,roleList,path);
                visitsMapper.updateById(c);
                if(Objects.isNull(c.getParentId())){
                    wxPlatNotice.sendVisitAuditTemplateNotice(c,
@@ -267,13 +267,15 @@
     * @param date
     * @param type 0需要登记 1免登记
     */
    private void getUpdateModelByResponse(  Visits c,Date date,String type,List<DeviceRole> roleList,String path ) {
    private void getUpdateModelByResponse(  Visits c,Date date, List<DeviceRole> roleList,String path ) {
        String code = null;
        String id = null;
        String qrcode = null;
        String reson = "";
        //发起海康预约接口
        if(StringUtils.equals(type,"0")){
        if(Constants.equalsInteger(c.getVisitType(),Constants.ZERO)){
            //(需要登记)
            c.setVisitType(Constants.ZERO);
            VisitAppointmentRequest request =  getHkRequestPara(c,roleList,path);
            if(request == null){
                //海康下发成功
@@ -291,8 +293,10 @@
                id =response.getData().getAppointmentInfoList().get(0).getOrderId();
                qrcode =response.getData().getAppointmentInfoList().get(0).getQRCode();
            }
            reson = response!=null?JSONObject.toJSONString(response):"";
        }else{
            //免登记
            c.setVisitType(Constants.ONE);
            VisitAppointmentMDJRequest request =getHkMDJRequestPara(c,roleList,path);
            if(request == null){
                //海康下发成功
@@ -308,17 +312,18 @@
                id = response.getData().getOrderId();
                qrcode =response.getData().getQRCode();
            }
            reson = response!=null?JSONObject.toJSONString(response):"";
        }
        if (code!= null && id!=null) {
            //海康下发成功
            c.setHkId( id);//预约标识
            c.setQrcode(qrcode);
            c.setRemark("下发海康成功!【"+type+"】");
            c.setRemark("下发海康成功!");
            c.setStatus(Constants.VisitStatus.xfSuccess);//下发海康成功
        } else {
            //海康下发失败
            c.setRemark("下发海康失败!【"+type+"】");
            c.setRemark("下发海康失败,原因:"+ reson);
            c.setStatus(Constants.VisitStatus.xfFail);//下发海康失败
        }
        c.setHkStatus(Constants.ONE);
@@ -340,7 +345,15 @@
        request.setVisitStartTime(DateUtil.getISO8601Timestamp2(c.getStarttime()));
        request.setVisitEndTime(DateUtil.getISO8601Timestamp2(c.getEndtime()));
        request.setReceptionistId(c.getReceptMemberHkId());//被访人海康编码
        request.setVisitPurpose(c.getReason());
        if(StringUtils.isNotBlank(c.getReason())){
            char[] charArray = c.getReason().toCharArray();
            int length = charArray.length;
            if(length>32){
                request.setVisitPurpose(c.getReason().substring(0,32));
            }else{
                request.setVisitPurpose(c.getReason());
            }
        }
        request.setVisitorInfo(info);
        request.setVisitorPermissionSet(getVisitPermissonRequest(roleList,c));
        return  request;
@@ -378,7 +391,16 @@
        request.setVisitStartTime(DateUtil.getISO8601Timestamp(c.getStarttime()));
        request.setVisitEndTime(DateUtil.getISO8601Timestamp(c.getEndtime()));
        request.setReceptionistId(c.getReceptMemberHkId());//被访人海康编码
        request.setVisitPurpose(c.getReason());
        if(StringUtils.isNotBlank(c.getReason())){
            char[] charArray = c.getReason().toCharArray();
            int length = charArray.length;
            if(length>32){
                request.setVisitPurpose(c.getReason().substring(0,32));
            }else{
                request.setVisitPurpose(c.getReason());
            }
        }
        //获取权限组集合
        request.setVisitorPermissionSet(getVisitPermissonRequest(roleList,c));
        List<VisitAppointmentVistorRequest> infolist = new ArrayList<>();
@@ -401,8 +423,25 @@
        if(info.getVisitorPhoto() == null){
            return  null;
        }
        info.setVisitorName(c.getName());
        info.setVisitorWorkUnit(c.getCompanyName());
        if(StringUtils.isNotBlank(c.getName())){
            char[] charArray = c.getName().toCharArray();
            int length = charArray.length;
            if(length>32){
                info.setVisitorName(c.getName().substring(0,32));
            }else{
                info.setVisitorName(c.getName());
            }
        }
        if(StringUtils.isNotBlank(c.getCompanyName())){
            char[] charArray = c.getCompanyName().toCharArray();
            int length = charArray.length;
            if(length>32){
                info.setVisitorWorkUnit(c.getCompanyName().substring(0,32));
            }else{
                info.setVisitorWorkUnit(c.getCompanyName());
            }
        }
        info.setPhoneNo(c.getPhone());
        info.setPlateNo(c.getCarNos());
        info.setGender(c.getSex()+"");
@@ -453,7 +492,7 @@
        MPJLambdaWrapper<Visits> queryWrapper = new MPJLambdaWrapper<>();
        queryWrapper.selectAll(Visits.class)
                .selectAs(Member::getType,Visits::getMemberType)
                .leftJoin(Member.class,Member::getId,Visits::getReceptMemberId);
                .leftJoin(Member.class,Member::getId,Visits::getMemberId);
        queryWrapper.in(Visits::getStatus, Arrays.asList(new Integer[]{Constants.VisitStatus.xfSuccess,Constants.VisitStatus.signin}) );
        List<Visits> list = visitsMapper.selectJoinList(Visits.class,queryWrapper);
        return list;