‘liusuyi’
2023-05-24 0484a33f0550b344382f0d3caac5b26bbba23ca0
ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/hikClientServiceImpl.java
@@ -9,16 +9,12 @@
import com.ruoyi.device.camera.mapper.ArdCamerasMapper;
import com.ruoyi.device.hiksdk.common.global.globalVariable;
import com.ruoyi.device.camera.domain.ArdCameras;
import com.ruoyi.device.camera.service.IArdCamerasService;
import com.ruoyi.device.cameracalibration.domain.ArdCamerasCalibration;
import com.ruoyi.device.hiksdk.domain.recordInfo;
import com.ruoyi.device.cameracalibration.service.IArdCamerasCalibrationService;
import com.ruoyi.device.hiksdk.util.hikSdkUtil.GisUtil;
import com.ruoyi.device.hiksdk.util.hikSdkUtil.HCNetSDK;
import com.ruoyi.device.hiksdk.service.hikClientService;
import com.ruoyi.device.hiksdk.util.imageUtil.waterMarkUtil;
import com.ruoyi.device.hiksdk.util.minioUtil.MinioUtil;
import com.ruoyi.system.mapper.SysUserMapper;
import com.ruoyi.system.service.ISysUserService;
import com.sun.jna.Native;
import com.sun.jna.Platform;
import com.sun.jna.Pointer;
@@ -29,11 +25,8 @@
import sun.misc.BASE64Encoder;
import javax.annotation.Resource;
import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.math.BigDecimal;
import java.net.URLEncoder;
import java.nio.ByteBuffer;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
@@ -240,7 +233,7 @@
     * @修改人和其它信息
     */
    @Override
    @SdkOperate
   // @SdkOperate
    public boolean PTZControlWithSpeed(CameraCmd cmd) {
        String cameraId = cmd.getCameraId();
        boolean enable = cmd.isEnable();
@@ -289,7 +282,6 @@
        }
        return bool;
    }
    /**
     * 设置聚焦值
@@ -595,6 +587,39 @@
        }
    }
    @Override
    public boolean setTargetPosition(CameraCmd cmd) {
        String cameraId = cmd.getCameraId();
        Integer channelNum = cmd.getChannelNum();
        if (!globalVariable.loginMap.containsKey(cameraId)) {
            return false;
        }
        Integer userId = globalVariable.loginMap.get(cameraId);
        HCNetSDK.NET_DVR_PTZPOS m_ptzPosCurrent = new HCNetSDK.NET_DVR_PTZPOS();
        m_ptzPosCurrent.wAction = 1;
        try {
            double[] cameraPositon = Arrays.stream(cmd.getCamPosition().split(",")).mapToDouble(Double::parseDouble).toArray();
            double[] targetPositions = Arrays.stream(cmd.getTargetPosition().split(",")).mapToDouble(Double::parseDouble).toArray();
            double[] cameraPTZ = GisUtil.getCameraPTZ(cameraPositon, targetPositions, 20, 150);
            String p = String.valueOf((int) ( cameraPTZ[0] * 10));
            String t = String.valueOf((int) ( cameraPTZ[1] * 10));
            String z = String.valueOf((int) (cameraPTZ[2]* 10));
            m_ptzPosCurrent.wPanPos = (short) (Integer.parseInt(p, 16));
            m_ptzPosCurrent.wTiltPos = (short) (Integer.parseInt(t, 16));
            m_ptzPosCurrent.wZoomPos = (short) (Integer.parseInt(z, 16));
            Pointer point = m_ptzPosCurrent.getPointer();
            m_ptzPosCurrent.write();
            boolean bool = hCNetSDK.NET_DVR_SetDVRConfig(userId, NET_DVR_SET_PTZPOS, channelNum, point, m_ptzPosCurrent.size());
            if (!bool) {
                int code = hCNetSDK.NET_DVR_GetLastError();
                log.info("设置ptz失败,请稍后重试" + code);
            }
            return bool;
        } catch (Exception ex) {
            log.error(ex.getMessage());
            return false;
        }
    }
    /**
     * @描述 操控锁定
     * @参数 [userId, channelNum]