From 840fb4a2f306beead0674eef28b2a0d8c73b12eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E4=B8=80=E9=B8=A3?= Date: Tue, 5 Jan 2021 13:34:46 +0800 Subject: [PATCH] =?UTF-8?q?=E7=90=83=E6=9C=BAIO=20bug=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/controller/CameraController.java | 8 ----- .../com/zhehekeji/web/entity/CameraIO.java | 5 +++ .../com/zhehekeji/web/lib/OrderCmdSerial.java | 3 ++ .../com/zhehekeji/web/lib/OrderRealtime.java | 33 +++++++++++++++++++ .../zhehekeji/web/lib/PtzControlModule.java | 6 ++-- .../zhehekeji/web/mapper/CameraIOMapper.java | 2 +- .../web/pojo/camera/CameraIOPtz.java | 2 +- .../zhehekeji/web/service/CameraService.java | 17 ++++------ 8 files changed, 53 insertions(+), 23 deletions(-) create mode 100644 web/src/main/java/com/zhehekeji/web/lib/OrderRealtime.java diff --git a/web/src/main/java/com/zhehekeji/web/controller/CameraController.java b/web/src/main/java/com/zhehekeji/web/controller/CameraController.java index 89eca02..2816266 100644 --- a/web/src/main/java/com/zhehekeji/web/controller/CameraController.java +++ b/web/src/main/java/com/zhehekeji/web/controller/CameraController.java @@ -9,7 +9,6 @@ import com.zhehekeji.web.entity.CameraIOConfig; import com.zhehekeji.web.lib.PtzControlModule; import com.zhehekeji.web.pojo.camera.CameraConfigSearchReq; import com.zhehekeji.web.pojo.camera.CameraIOPtz; -import com.zhehekeji.web.pojo.camera.CameraSearchReq; import com.zhehekeji.web.pojo.street.StreetSearch; import com.zhehekeji.web.service.CameraService; import io.swagger.annotations.Api; @@ -96,13 +95,6 @@ public class CameraController { return Result.success(cameraService.ioList(cameraId)); } - @PutMapping("/io") - @ApiOperation(value = "球机IO修改") - public Result editIO(@RequestBody CameraIO cameraIO){ - cameraService.editIO(cameraIO); - return Result.success(); - } - @PostMapping("/io/ptz") @ApiOperation(value = "球机IO配置") public Result ptz(@RequestBody CameraIOPtz req) { diff --git a/web/src/main/java/com/zhehekeji/web/entity/CameraIO.java b/web/src/main/java/com/zhehekeji/web/entity/CameraIO.java index 1487372..bc1aad0 100644 --- a/web/src/main/java/com/zhehekeji/web/entity/CameraIO.java +++ b/web/src/main/java/com/zhehekeji/web/entity/CameraIO.java @@ -3,6 +3,7 @@ package com.zhehekeji.web.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.time.LocalDateTime; @@ -18,12 +19,16 @@ public class CameraIO { private String name; + @ApiModelProperty("位置") private String position; + @ApiModelProperty("对焦") private String focusing; + @ApiModelProperty("光圈") private String aperture; + @ApiModelProperty("倍率") private String multiple; private Integer ptzId; diff --git a/web/src/main/java/com/zhehekeji/web/lib/OrderCmdSerial.java b/web/src/main/java/com/zhehekeji/web/lib/OrderCmdSerial.java index c294e2a..18b8060 100644 --- a/web/src/main/java/com/zhehekeji/web/lib/OrderCmdSerial.java +++ b/web/src/main/java/com/zhehekeji/web/lib/OrderCmdSerial.java @@ -3,6 +3,9 @@ package com.zhehekeji.web.lib; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicInteger; +/** + * sdk抓图回调,用来关联订单的类 + */ public class OrderCmdSerial { public static ConcurrentHashMap orderCmdSerialMap = new ConcurrentHashMap<>(Short.MAX_VALUE * 4); diff --git a/web/src/main/java/com/zhehekeji/web/lib/OrderRealtime.java b/web/src/main/java/com/zhehekeji/web/lib/OrderRealtime.java new file mode 100644 index 0000000..5aef4d3 --- /dev/null +++ b/web/src/main/java/com/zhehekeji/web/lib/OrderRealtime.java @@ -0,0 +1,33 @@ +package com.zhehekeji.web.lib; + +import java.util.HashMap; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 在内存中记录 当前正在执行的订单号 + * sdk中的下载句柄 与订单号的关联关系,在下载回调里面使用 + */ +public class OrderRealtime { + + /** + * key :streetId + * value: 订单号 + */ + private static Map orderMap = new ConcurrentHashMap<>(); + + + public static void startOrder(Integer streetId,String orderNum){ + synchronized (streetId.toString().intern()){ + orderMap.put(streetId,orderNum); + } + } + + public static String stopOrder(Integer streetId){ + synchronized (streetId.toString().intern()){ + String orderNum = orderMap.get(streetId); + orderMap.remove(streetId); + return orderNum; + } + } +} diff --git a/web/src/main/java/com/zhehekeji/web/lib/PtzControlModule.java b/web/src/main/java/com/zhehekeji/web/lib/PtzControlModule.java index f417595..521f6fd 100644 --- a/web/src/main/java/com/zhehekeji/web/lib/PtzControlModule.java +++ b/web/src/main/java/com/zhehekeji/web/lib/PtzControlModule.java @@ -261,13 +261,13 @@ public class PtzControlModule { /** * 设置预置点 - * @param ioId 预置点ID,这里直接拿数据库自动的ID,这样不会重复 + * @param ptzId 预置点ID * @param name 预置点的名称 * @param cameraId 球机ID,来获取登录句柄 */ - public static void ptz(Integer ioId,String name,Integer cameraId){ + public static void ptz(Integer ptzId,String name,Integer cameraId){ int dwzCommand = NetSDKLib.NET_PTZ_ControlType.NET_PTZ_POINT_SET_CONTROL; - int nPressetIndex = ioId; + int nPressetIndex = ptzId; Boolean ok = ptzControler(dwzCommand,0,nPressetIndex,0,0,ToolKits.GetGBKStringToPointer(name),CameraConnMap.getConnId(cameraId)); Assert.isTrue(ok,"设置失败"); } diff --git a/web/src/main/java/com/zhehekeji/web/mapper/CameraIOMapper.java b/web/src/main/java/com/zhehekeji/web/mapper/CameraIOMapper.java index ca91c70..46ba97b 100644 --- a/web/src/main/java/com/zhehekeji/web/mapper/CameraIOMapper.java +++ b/web/src/main/java/com/zhehekeji/web/mapper/CameraIOMapper.java @@ -11,7 +11,7 @@ public interface CameraIOMapper extends BaseMapper { @Select("select t.name as name ,io.id ,io.aperture,io.camera_id,io.focusing,io.multiple,io.position,io.ptz_id,io.update_time\n" + "from camera_io_config t \n" + - "left join (select * from camera_io where camera_id = #{cameraId}) io on io.name = t.name ") + "left join (select * from camera_io where camera_id = #{cameraId}) io on io.name = t.name order by t.id") List cameraIOs (@Param("cameraId") Integer cameraId); } diff --git a/web/src/main/java/com/zhehekeji/web/pojo/camera/CameraIOPtz.java b/web/src/main/java/com/zhehekeji/web/pojo/camera/CameraIOPtz.java index 64a5444..21c17f3 100644 --- a/web/src/main/java/com/zhehekeji/web/pojo/camera/CameraIOPtz.java +++ b/web/src/main/java/com/zhehekeji/web/pojo/camera/CameraIOPtz.java @@ -16,7 +16,7 @@ public class CameraIOPtz { @ApiModelProperty("cameraIOId") private Integer cameraIOId; - @NotEmpty(message = "O指令名称不能为空") + @NotEmpty(message = "IO指令名称不能为空") @ApiModelProperty("PLC IO指令名称") private String name; diff --git a/web/src/main/java/com/zhehekeji/web/service/CameraService.java b/web/src/main/java/com/zhehekeji/web/service/CameraService.java index 7eec019..82b80d8 100644 --- a/web/src/main/java/com/zhehekeji/web/service/CameraService.java +++ b/web/src/main/java/com/zhehekeji/web/service/CameraService.java @@ -145,11 +145,6 @@ public class CameraService { return list; } - public void editIO(CameraIO cameraIO) { - cameraIO.setUpdateTime(LocalDateTime.now()); - ioMapper.updateById(cameraIO); - } - /** * 球机新增、或修改预置点 * synchronized 设置为同步方法,防止出现同一个ptzId在同一个球机上 @@ -161,7 +156,7 @@ public class CameraService { Assert.notNull(camera, "球机不存在"); Integer cameraPtzId = camera.getPtzId() == null ? 0 : camera.getPtzId(); CameraIO cameraIO = null; - Integer ptzId = cameraPtzId++; + int ptzId = cameraPtzId + 1; if (IOId == null || IOId == 0) { //新增 cameraIO = new CameraIO(); @@ -171,18 +166,20 @@ public class CameraService { cameraIO.setPtzId(ptzId); conver(cameraIO,type); ioMapper.insert(cameraIO); + camera.setPtzId(ptzId); + cameraMapper.updateById(camera); } else { //修改 cameraIO = ioMapper.selectById(IOId); Assert.notNull(cameraIO, "IO不存在"); - cameraIO.setPtzId(ptzId); + //将ptzId赋值为旧的,不能用新的,负责SDK里面就是新增预置点 + ptzId = cameraIO.getPtzId(); + //cameraIO.setPtzId(ptzId); cameraIO.setUpdateTime(LocalDateTime.now()); conver(cameraIO,type); ioMapper.updateById(cameraIO); } - camera.setPtzId(ptzId); - cameraMapper.updateById(camera); - PtzControlModule.ptz(IOId, cameraIO.getName(), cameraId); + PtzControlModule.ptz(ptzId, cameraIO.getName(), cameraId); log.info("设置 预置点 球机ID:{},预置点ID:{}", cameraId, ptzId); return cameraIO.getId(); }