jiangping
2025-03-27 e4a06e0730dc0aa6ced97cbb3362d6b8ef473d39
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncVisitServiceImpl.java
@@ -4,22 +4,21 @@
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;
import com.doumee.core.haikang.model.HKConstants;
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;
import com.doumee.core.utils.DESUtil;
import com.doumee.core.utils.DateUtil;
import com.doumee.core.utils.ImageBase64Util;
import com.doumee.core.wx.wxPlat.WxPlatConstants;
import com.doumee.core.wx.wxPlat.WxPlatNotice;
import com.doumee.dao.business.DeviceRoleMapper;
import com.doumee.dao.business.RetentionMapper;
import com.doumee.dao.business.WxNoticeConfigMapper;
import com.doumee.dao.business.join.VisitsJoinMapper;
import com.doumee.dao.business.model.DeviceRole;
import com.doumee.dao.business.model.Member;
@@ -43,14 +42,19 @@
public class HkSyncVisitServiceImpl extends HkSyncBaseServiceImpl {
    @Autowired
    private VisitsJoinMapper visitsMapper;
    @Autowired
    private WxPlatNotice wxPlatNotice;
    @Autowired
    private WxNoticeConfigMapper wxNoticeConfigMapper;
    @Autowired
    private RetentionMapper retentionMapper;
    @Autowired
    private SystemDictDataBiz systemDictDataBiz;
    @Autowired
    private DeviceRoleMapper deviceRoleMapper;
    @Autowired
    private WxPlatNotice wxPlatNotice;
    /**
     * 同步海康访客信息是否已签离状态
     */
@@ -190,12 +194,13 @@
                    // 对相应状态下的数据进行【已签离】处理
                    if(!Constants.equalsInteger(c.getStatus(),Constants.VisitStatus.signout)){
                        Visits update = new Visits();
                        //已失效
                        //已签离
                        update.setStatus(Constants.VisitStatus.signout);
                        update.setEditDate(date);
                        update.setId(c.getId());
                        update.setInDate(DateUtil.getISO8601DateByStr2(data.getVisitStartTime()));
                        update.setOutDate(DateUtil.getISO8601DateByStr2(data.getVisitEndTime()));
                        update.setOutInfo(model.getVisitorStatus().equals(5)?"过期自动签离":"查询已签离");
                        update.setRemark("已签离");
                        visitsMapper.updateById(update);
@@ -297,7 +302,7 @@
            return   ;
        }
        Constants.DEALING_HK_VISIT =true;
        String path = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode()
        String path = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_LOCAL_RESOURCE_PATH).getCode()
                +systemDictDataBiz.queryByCode(Constants.FTP,Constants.MEMBER_IMG).getCode();
        List<DeviceRole> roleList = deviceRoleMapper.selectList(new QueryWrapper<DeviceRole>().lambda()
                .eq(DeviceRole::getType, Constants.ONE));
@@ -314,10 +319,13 @@
//                getUpdateModelByResponse(c,date,roleList,path);
                getUpdateModelByResponseIccm(c,date,roleList,path);
                visitsMapper.updateById(c);
                if(Objects.isNull(c.getParentId())){
                    wxPlatNotice.sendVisitAuditTemplateNotice(c,
                            systemDictDataBiz.queryByCode(Constants.WX_PLATFORM,Constants.WX_PLATFORM_PREFIX).getCode(),
                            systemDictDataBiz.queryByCode(Constants.WX_PLATFORM,Constants.WX_PLATFORM_AUDIT_VISIT).getCode());
                //给申请人发送微信公众号 下发权限失败
                if(StringUtils.isNotBlank(c.getOpenid()) && Constants.equalsInteger(c.getStatus(),Constants.VisitStatus.xfFail)){
                    wxPlatNotice.sendVisitTemplateNotice(systemDictDataBiz,
                            wxNoticeConfigMapper,c, WxPlatConstants.visitContent.visitApplyHkFail,
                            systemDictDataBiz.queryByCode(Constants.WX_PLATFORM,Constants.WX_PLATFORM_ACCESS_TOKEN).getCode(),
                            Arrays.asList(c.getOpenid().split(","))
                    );
                }
            }
        }catch (Exception e){
@@ -384,7 +392,8 @@
                    && response.getData().getAppointmentInfoList() !=null
                    && response.getData().getAppointmentInfoList().size()>0)){
                id =response.getData().getAppointmentInfoList().get(0).getOrderId();
                qrcode =response.getData().getAppointmentInfoList().get(0).getQRCode();
                qrcode =response.getData().getAppointmentInfoList().get(0).getVerificationCode();
//                qrcode =response.getData().getAppointmentInfoList().get(0).getQRCode();
            }
            reson = response!=null?JSONObject.toJSONString(response):"";
        }else{
@@ -421,7 +430,7 @@
        c.setHkStatus(Constants.ONE);
        c.setHkDate(date);
    }
    private void getUpdateModelByResponseIccm(  Visits c,Date date, List<DeviceRole> roleList,String path ) {
    public static void getUpdateModelByResponseIccm(  Visits c,Date date, List<DeviceRole> roleList,String path ) {
        String code = null;
        String id = null;
        String qrcode = null;
@@ -445,7 +454,8 @@
                    && response.getData().getAppointmentInfoList() !=null
                    && response.getData().getAppointmentInfoList().size()>0)){
                id =response.getData().getOrderId();
                qrcode =response.getData().getAppointmentInfoList().get(0).getQRCode();
//                qrcode =response.getData().getAppointmentInfoList().get(0).getQRCode();
                qrcode =response.getData().getAppointmentInfoList().get(0).getVerificationCode();
            }
            reson = response!=null?JSONObject.toJSONString(response):"";
        }else{
@@ -511,7 +521,7 @@
        request.setVisitorPermissionSet(getVisitPermissonRequest(roleList,c));
        return  request;
    }
    private IccmAppointmentMDJRequest getHkMDJRequestParamIccm(Visits c,List<DeviceRole> roleList,String path) {
    public static IccmAppointmentMDJRequest getHkMDJRequestParamIccm(Visits c,List<DeviceRole> roleList,String path) {
        IccmAppointmentMDJRequest request = new IccmAppointmentMDJRequest();
        IccmAppointmentVistorRequest info =getRequestInfoByVisitIccm(c,path);
        if(info == null ){
@@ -521,7 +531,7 @@
        request.setVisitStartTime(DateUtil.getISO8601Timestamp2(c.getStarttime()));
        request.setVisitEndTime(DateUtil.getISO8601Timestamp2(c.getEndtime()));
        request.setReceptionistId(c.getReceptMemberHkId());//被访人海康编码
        if(StringUtils.isNotBlank(c.getReason())){
       /* if(StringUtils.isNotBlank(c.getReason())){
            char[] charArray = c.getReason().toCharArray();
            int length = charArray.length;
            if(length>32){
@@ -529,7 +539,7 @@
            }else{
                request.setVisitPurpose(c.getReason());
            }
        }
        }*/
        request.setVisitorInfo(info);
        request.setVisitorPermissionSet(getVisitPermissonRequestIccm(roleList,c));
        return  request;
@@ -555,7 +565,7 @@
        }
        return  p;
    }
    private IccmPermissionSetRequest getVisitPermissonRequestIccm(List<DeviceRole> roleList, Visits c) {
    public static IccmPermissionSetRequest getVisitPermissonRequestIccm(List<DeviceRole> roleList, Visits c) {
        IccmPermissionSetRequest p = new IccmPermissionSetRequest();
        //获取权限组集合
        String[] roles = getHkRoles(c.getDoors(),roleList);
@@ -598,7 +608,7 @@
        request.setVisitorInfoList(infolist);
        return  request;
    }
    private IccmAppointmentRequest getHkRequestParaIccm(Visits c,List<DeviceRole> roleList,String path ) {
    public static  IccmAppointmentRequest getHkRequestParaIccm(Visits c,List<DeviceRole> roleList,String path ) {
        IccmAppointmentRequest request = new IccmAppointmentRequest();
        //申请人信息
        IccmAppointmentVistorRequest info =getRequestInfoByVisitIccm(c,path);
@@ -606,11 +616,11 @@
            //人脸为空,不能进行推送
            return  null;
        }
        request.setVisitStartTime(DateUtil.getISO8601Timestamp(c.getStarttime()));
        request.setVisitEndTime(DateUtil.getISO8601Timestamp(c.getEndtime()));
        request.setVisitStartTime(DateUtil.getISO8601Timestamp2(c.getStarttime()));
        request.setVisitEndTime(DateUtil.getISO8601Timestamp2(c.getEndtime()));
        request.setReceptionistId(c.getReceptMemberHkId());//被访人海康编码
        if(StringUtils.isNotBlank(c.getReason())){
      /*  if(StringUtils.isNotBlank(c.getReason())){
            char[] charArray = c.getReason().toCharArray();
            int length = charArray.length;
            if(length>32){
@@ -618,7 +628,7 @@
            }else{
                request.setVisitPurpose(c.getReason());
            }
        }
        }*/
        //获取权限组集合
        request.setVisitorPermissionSet(getVisitPermissonRequestIccm(roleList,c));
        List<IccmAppointmentVistorRequest> infolist = new ArrayList<>();
@@ -673,7 +683,7 @@
        return info;
    }
    private IccmAppointmentVistorRequest getRequestInfoByVisitIccm(Visits c,String path) {
    public static IccmAppointmentVistorRequest getRequestInfoByVisitIccm(Visits c,String path) {
        IccmAppointmentVistorRequest info = new IccmAppointmentVistorRequest();
        //人脸数据
        if(StringUtils.isBlank(c.getName())
@@ -682,9 +692,12 @@
            return  null;
        }
        if(StringUtils.isNotBlank(c.getFaceImg())){
            log.info("===================================="+path+c.getFaceImg()+"======start====");
            info.setVisitorPhoto(ImageBase64Util.Image2Base64(path+c.getFaceImg()));
            log.info("===================================="+path+c.getFaceImg()+"========end===");
        }
        if(info.getVisitorPhoto() == null){
            log.info("===================================="+path+c.getFaceImg()+"======imgerror=====");
            return  null;
        }
        if(StringUtils.isNotBlank(c.getName())){
@@ -696,7 +709,6 @@
                info.setVisitorName(c.getName());
            }
        }
        if(StringUtils.isNotBlank(c.getCompanyName())){
            char[] charArray = c.getCompanyName().toCharArray();
            int length = charArray.length;
@@ -716,11 +728,10 @@
            info.setCertificateType(HKConstants.CertificateType.HUZHAO.getKey()+"");
            info.setCertificateNo(DESUtil.decrypt(Constants.EDS_PWD,  c.getIdcardNo()));
        }
        return info;
    }
    private String[] getHkRoles(String doors, List<DeviceRole> roleList) {
    public static String[] getHkRoles(String doors, List<DeviceRole> roleList) {
        if(StringUtils.isBlank(doors) || roleList.size()==0|| roleList.size()==0){
            return null;
        }