From 3082a45686101b0816d7f1741e57e0519c994c94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E7=A3=8A?= <45566618@qq.com> Date: Tue, 13 May 2025 09:12:25 +0800 Subject: [PATCH] =?UTF-8?q?tplink=E6=91=84=E5=83=8F=E5=A4=B4=E5=BD=95?= =?UTF-8?q?=E5=83=8F=E8=AE=A1=E5=88=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/CameraInfoController.java | 97 +++++- .../tplink/camera/entity/CameraInfo.java | 14 + .../camera/mapper/CameraInfoMapper.java | 2 + .../camera/mapper/xml/CameraInfoMapper.xml | 48 +++ .../tplink/camera/model/CameraTreeModel.java | 149 +++++++++ .../camera/service/ICameraInfoService.java | 8 +- .../service/impl/CameraInfoServiceImpl.java | 300 ++++++++++++++++-- .../com/nu/modules/tplink/enums/ApiEnum.java | 8 +- .../com/nu/modules/tplink/utils/TumsApi.java | 67 +++- 9 files changed, 634 insertions(+), 59 deletions(-) create mode 100644 nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/model/CameraTreeModel.java diff --git a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/controller/CameraInfoController.java b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/controller/CameraInfoController.java index b6669d3..b363357 100644 --- a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/controller/CameraInfoController.java +++ b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/controller/CameraInfoController.java @@ -11,9 +11,13 @@ */ package com.nu.modules.tplink.camera.controller; +import java.util.ArrayList; +import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import cn.hutool.json.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.nu.modules.tplink.camera.model.CameraTreeModel; import org.jeecg.common.api.vo.Result; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -21,6 +25,7 @@ import lombok.extern.slf4j.Slf4j; import com.nu.modules.tplink.camera.service.ICameraInfoService; import org.jeecg.common.system.base.controller.JeecgController; import com.nu.modules.tplink.camera.entity.CameraInfo; +import org.jeecg.common.system.query.QueryGenerator; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import io.swagger.annotations.Api; @@ -62,6 +67,21 @@ public class CameraInfoController extends JeecgController> queryTreeList(CameraInfo CameraInfo) { + Result> result = new Result<>(); + try { + List list = service.findModelList(CameraInfo); + result.setResult(list); + result.setSuccess(true); + } catch (Exception e) { + log.error(e.getMessage(),e); + result.setSuccess(false); + result.setMessage("查询失败"); + } + return result; + } + @ApiOperation(value="护理单元分页列表查询", notes="护理单元分页列表查询") @GetMapping(value = "/nuList") public Result> queryNuPageList(CameraInfo CameraInfo, @@ -210,29 +230,76 @@ public class CameraInfoController extends JeecgController> getRecordCfgs(CameraInfo cameraInfo, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize) throws Exception{ + IPage pageList = service.getRecordCfgs(cameraInfo,pageNo,pageSize); + return Result.OK(pageList); } /** - * 设置录像计划--暂无用 - * - * @param cameraInfo - * @return - */ - @GetMapping(value = "/setRecordCfgs") - public Result setRecordCfgs(CameraInfo cameraInfo) throws Exception{ - return service.setRecordCfgs(cameraInfo); - } - - /** - * 获取批量操作录像计划进度--暂无用 + * 获取批量操作录像计划进度 * * @param cameraInfo * @return diff --git a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/entity/CameraInfo.java b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/entity/CameraInfo.java index c4c6890..fe475d6 100644 --- a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/entity/CameraInfo.java +++ b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/entity/CameraInfo.java @@ -143,6 +143,14 @@ public class CameraInfo implements Serializable { @TableField(exist = false) private int streamType; + @ApiModelProperty(value = "录像计划ID") + private String recordPlanId; + @ApiModelProperty(value = "录像计划名称") + @TableField(exist = false) + private String planName; + @ApiModelProperty(value = "批量处理类型 1:表示查询添加进度,2:表示查询设置进度,3:表示查询删除进度") + @TableField(exist = false) + private int batchType; /** * 能力集属性 ==> */ @@ -269,6 +277,9 @@ public class CameraInfo implements Serializable { @ApiModelProperty(value = "录像开关;枚举:[0:表示关,1:表示开]") @TableField(exist = false) private String recordSwitch; + @ApiModelProperty(value = "录像开关;枚举:[false:表示关,true:表示开]") + @TableField(exist = false) + private boolean recordSwitchBoolean; @ApiModelProperty(value = "任务taskId") @TableField(exist = false) private String taskId; @@ -278,4 +289,7 @@ public class CameraInfo implements Serializable { @ApiModelProperty(value = "上传进度") @TableField(exist = false) private String process; + @ApiModelProperty(value = "IDS") + @TableField(exist = false) + private String ids; } diff --git a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/mapper/CameraInfoMapper.java b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/mapper/CameraInfoMapper.java index ebc2425..7c398e3 100644 --- a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/mapper/CameraInfoMapper.java +++ b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/mapper/CameraInfoMapper.java @@ -19,10 +19,12 @@ import java.util.List; @Mapper public interface CameraInfoMapper extends BaseMapper { IPage findPage(Page page, @Param("params") CameraInfo cameraInfo); + List findList(CameraInfo cameraInfo); List findAllList(); IPage findNuPage(Page page, @Param("params") CameraInfo cameraInfo); CameraInfo getByDeviceId(CameraInfo cameraInfo); CameraInfo getCapabilityByDeviceId(CameraInfo cameraInfo); void insertCapability(CameraInfo cameraInfo); void updateCapabilityById(CameraInfo cameraInfo); + void updatePlanByDevId(CameraInfo cameraInfo); } diff --git a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/mapper/xml/CameraInfoMapper.xml b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/mapper/xml/CameraInfoMapper.xml index d1e1059..cb5864a 100644 --- a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/mapper/xml/CameraInfoMapper.xml +++ b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/mapper/xml/CameraInfoMapper.xml @@ -25,6 +25,7 @@ location_name as locationName, system_type as systemType, protocol as protocol, + record_plan_id as recordPlanId, a.nu_id as nuId, b.nu_name as nuName, ifnull(c.multitrans,0) as multitrans @@ -58,6 +59,46 @@ + + @@ -214,4 +256,10 @@ where id = #{id} + + UPDATE nu_iot_tplink_camera + SET record_plan_id = #{recordPlanId} + where device_index = #{deviceIndex} + + \ No newline at end of file diff --git a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/model/CameraTreeModel.java b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/model/CameraTreeModel.java new file mode 100644 index 0000000..a69a990 --- /dev/null +++ b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/model/CameraTreeModel.java @@ -0,0 +1,149 @@ +package com.nu.modules.tplink.camera.model; + +import com.nu.modules.tplink.camera.entity.CameraInfo; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; + +/** + *

+ * 摄像头表 存储摄像头结构数据的实体类 + *

+ * + * @Author 曹磊 + * @Since 2025-02-27 + */ +public class CameraTreeModel implements Serializable{ + + private static final long serialVersionUID = 1L; + + /** 对应SysDepart中的id字段,前端数据树中的key*/ + private String key; + + /** 对应SysDepart中的id字段,前端数据树中的value*/ + private String value; + + /** 对应depart_name字段,前端数据树中的title*/ + private String title; + + private boolean isLeaf; + + private String type; + // 以下所有字段均与CameraInfo相同 + + private String deviceIndex; + + private String deviceName; + + private List children = new ArrayList<>(); + + + /** + * 将CameraInfo对象转换成CameraTreeModel对象 + * @param cameraInfo + */ + public CameraTreeModel(CameraInfo cameraInfo) { + this.key = cameraInfo.getDeviceIndex(); + this.value = cameraInfo.getDeviceIndex(); + this.title = cameraInfo.getDeviceName(); + this.type = "camera"; + this.deviceIndex = cameraInfo.getDeviceIndex(); + this.deviceName = cameraInfo.getDeviceName(); + this.isLeaf = true; + } + + public String getKey() { + return key; + } + + public void setKey(String key) { + this.key = key; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public boolean getIsLeaf() { + return isLeaf; + } + + public void setIsLeaf(boolean isleaf) { + this.isLeaf = isleaf; + } + + public List getChildren() { + return children; + } + + public void setChildren(List children) { + if (children==null){ + this.isLeaf=true; + } + this.children = children; + } + + public String getDeviceIndex() { + return deviceIndex; + } + + public void setDeviceIndex(String deviceIndex) { + this.deviceIndex = deviceIndex; + } + + public String getDeviceName() { + return deviceName; + } + + public void setDeviceName(String deviceName) { + this.deviceName = deviceName; + } + + /** + * 重写equals方法 + */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + CameraTreeModel model = (CameraTreeModel) o; + return Objects.equals(deviceIndex, model.deviceIndex) && + Objects.equals(deviceName, model.deviceName) && + Objects.equals(children, model.children); + } + + /** + * 重写hashCode方法 + */ + @Override + public int hashCode() { + return Objects.hash(deviceIndex, deviceName, children); + } + +} diff --git a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/service/ICameraInfoService.java b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/service/ICameraInfoService.java index 7d0cf7d..4d8d50a 100644 --- a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/service/ICameraInfoService.java +++ b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/service/ICameraInfoService.java @@ -3,6 +3,7 @@ package com.nu.modules.tplink.camera.service; import cn.hutool.json.JSONObject; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.nu.modules.tplink.camera.model.CameraTreeModel; import org.jeecg.common.api.vo.Result; import com.nu.modules.tplink.camera.entity.CameraInfo; import com.baomidou.mybatisplus.extension.service.IService; @@ -18,6 +19,7 @@ import java.util.Map; */ public interface ICameraInfoService extends IService { IPage findPage(Page page, CameraInfo cameraInfo); + List findModelList(CameraInfo cameraInfo); List findAllList(); IPage findNuPage(Page page, CameraInfo cameraInfo); void edit(CameraInfo cameraInfo); @@ -34,8 +36,12 @@ public interface ICameraInfoService extends IService { Result setVideoParams(Map map); Result configRecovery(Map map); Result> getPreviewUrl(CameraInfo cameraInfo); - Result getRecordCfgs(CameraInfo cameraInfo) throws Exception; + Result getStorageDevice(CameraInfo cameraInfo) throws Exception; + Result getAllRecordPlans(CameraInfo cameraInfo) throws Exception; + Result addRecordCfgs(CameraInfo cameraInfo) throws Exception; Result setRecordCfgs(CameraInfo cameraInfo) throws Exception; + Result delRecordCfgs(CameraInfo cameraInfo) throws Exception; + IPage getRecordCfgs(CameraInfo cameraInfo,Integer pageNo,Integer pageSize) throws Exception; Result getBatchProgress(CameraInfo cameraInfo) throws Exception; Result getTamperDet(Map map); Result setTamperDet(Map map); diff --git a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/service/impl/CameraInfoServiceImpl.java b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/service/impl/CameraInfoServiceImpl.java index d0f2804..cebe578 100644 --- a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/service/impl/CameraInfoServiceImpl.java +++ b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/service/impl/CameraInfoServiceImpl.java @@ -5,6 +5,7 @@ import cn.hutool.json.JSONObject; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.fasterxml.jackson.databind.ObjectMapper; +import com.nu.modules.tplink.camera.model.CameraTreeModel; import com.nu.modules.tplink.common.entity.TumsConfig; import com.nu.modules.tplink.common.mapper.TumsConfigMapper; import org.apache.commons.compress.utils.Lists; @@ -54,6 +55,17 @@ public class CameraInfoServiceImpl extends ServiceImpl findModelList(CameraInfo cameraInfo){ + List modelList = Lists.newArrayList(); + List list = baseMapper.findList(cameraInfo); + for (int i = 0; i < list.size(); i++) { + CameraInfo entity = list.get(i); + CameraTreeModel treeModel = new CameraTreeModel(entity); + modelList.add(treeModel); + } + return modelList; + } + /** * 获取所有摄像头信息 * @return @@ -906,43 +918,137 @@ public class CameraInfoServiceImpl extends ServiceImpl0){ + idsStr = idsStr.substring(0,idsStr.length()-1); + } + StringBuffer sb = new StringBuffer(); + sb.append("{"); + sb.append("\"devIds\"").append(":").append("[").append(idsStr).append("],"); + sb.append("\"storageList\"").append(":").append("["); + sb.append("{"); + if(cameraInfo.getStorageDevId()!=null&&!cameraInfo.getStorageDevId().equals("")){ + //存储设备ID + sb.append("\"storageDevId\"").append(":").append(cameraInfo.getStorageDevId()).append(","); + if(cameraInfo.getStorageDevId().equals("0")){ + sb.append("\"storageType\"").append(":").append("1").append(","); + }else{ + sb.append("\"storageType\"").append(":").append("2").append(","); + } + } + sb.append("\"recordPlanId\"").append(":").append(cameraInfo.getRecordPlanId()).append(","); + sb.append("\"streamType\"").append(":").append(cameraInfo.getStreamType()); + sb.append("}"); + sb.append("]"); + sb.append("}"); + String res = tumsApi.addRecordCfgs(sb.toString()); + JSONObject jsonObject = new JSONObject(res); + int errorCode = jsonObject.getInt("error_code"); + if(errorCode == 0){ + for(int i=0;i0){ + idsStr = idsStr.substring(0,idsStr.length()-1); + } + StringBuffer sb = new StringBuffer(); + sb.append("{"); + sb.append("\"ids\"").append(":").append("[").append(idsStr).append("]"); + sb.append("}"); + String res = tumsApi.delRecordCfgs(sb.toString()); + JSONObject jsonObject = new JSONObject(res); + int errorCode = jsonObject.getInt("error_code"); + if(errorCode == 0){ + for(int i=0;i getRecordCfgs(CameraInfo cameraInfo,Integer pageNo,Integer pageSize) throws Exception{ + IPage page = new Page<>(); + page.setSize(pageSize); + page.setCurrent(pageNo); + if(cameraInfo.getProjectId()==null||cameraInfo.getProjectId().equals("")){ + return page; + } + if(cameraInfo.getRegionId()==null||cameraInfo.getRegionId().equals("")){ + return page; + } + StringBuffer sb = new StringBuffer(); + sb.append("{"); + sb.append("\"start\"").append(":").append((pageNo-1)*pageSize).append(","); + sb.append("\"limit\"").append(":").append(pageSize).append(","); + sb.append("\"filterAnd\"").append(":").append("{"); + sb.append("\"projectId\"").append(":").append("\"").append(cameraInfo.getProjectId()).append("\","); + sb.append("\"regionId\"").append(":").append("\"").append(cameraInfo.getRegionId()).append("\""); + sb.append("},"); + sb.append("\"sort\"").append(":").append("[{"); + sb.append("\"key\"").append(":").append("\"ip\","); + sb.append("\"value\"").append(":").append("\"desc\""); + sb.append("}]"); + sb.append("}"); + String res = tumsApi.getRecordCfgs(sb.toString()); + JSONObject jsonObject = new JSONObject(res); + int errorCode = jsonObject.getInt("error_code"); + if(errorCode == 0){ + JSONObject result = (JSONObject)jsonObject.get("result"); + Long total = result.getLong("total"); + page.setTotal(total); + if(total>0){ + List list = Lists.newArrayList(); + JSONArray array = result.getJSONArray("list"); + for(int i=0;i暂时无用 **/ - IPC_GET_RECORD_CFGS("/tums/record/v1/getRecordCfgs","获取录像配置"), + IPC_ADD_RECORD_CFGS("/tums/record/v1/addRecordCfgs","添加录像配置"), IPC_SET_RECORD_CFGS("/tums/record/v1/setRecordCfgs","设置录像计划"), + IPC_DEL_RECORD_CFGS("/tums/record/v1/delRecordCfgs","删除录像计划"), + IPC_GET_RECORD_CFGS("/tums/record/v1/getRecordCfgs","获取录像配置"), IPC_GET_BATCH_PROGRESS("/tums/record/v1/getBatchProgress","获取批量操作录像计划进度"), + IPC_GET_STORAGE_DEVICE("/tums/record/v1/getStorageDevice","获取存储设备列表"), + IPC_GET_ALL_RECORD_PLANS("/tums/record/v1/getAllRecordPlans","获取所有录像计划列表"), + /** =================>暂时无用 **/ IPC_MOTION_CTRL("/tums/ptz/v1/motionCtrl","高速球机移动方向控制"), IPC_GET_ALL_PRESETS("/tums/ptz/v1/getAllPresets","获取高速球机的所有预置点"), IPC_OPERATE_PRESET("/tums/ptz/v1/operatePreset","操作高速球机的预置点"), diff --git a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/utils/TumsApi.java b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/utils/TumsApi.java index 551e2a4..f638ca0 100644 --- a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/utils/TumsApi.java +++ b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/utils/TumsApi.java @@ -457,14 +457,15 @@ public class TumsApi { } /** - * 获取录像配置 + * 添加录像计划 * @param jsonRequest * @return */ - public String getRecordCfgs(String jsonRequest){ + public String addRecordCfgs(String jsonRequest){ this.createTumsClient(); - String jsonResponse = tumsClient.request(jsonRequest, ApiEnum.IPC_GET_RECORD_CFGS.getValue()); - log.info("getRecordCfgs:{}",jsonResponse); + log.info("addRecordCfgs:request:{}",jsonRequest); + String jsonResponse = tumsClient.request(jsonRequest, ApiEnum.IPC_ADD_RECORD_CFGS.getValue()); + log.info("addRecordCfgs:response:{}",jsonResponse); return jsonResponse; } @@ -475,8 +476,35 @@ public class TumsApi { */ public String setRecordCfgs(String jsonRequest){ this.createTumsClient(); + log.info("setRecordCfgs:request:{}",jsonRequest); String jsonResponse = tumsClient.request(jsonRequest, ApiEnum.IPC_SET_RECORD_CFGS.getValue()); - log.info("setRecordCfgs:{}",jsonResponse); + log.info("setRecordCfgs:response:{}",jsonResponse); + return jsonResponse; + } + + /** + * 删除录像计划 + * @param jsonRequest + * @return + */ + public String delRecordCfgs(String jsonRequest){ + this.createTumsClient(); + log.info("delRecordCfgs:request:{}",jsonRequest); + String jsonResponse = tumsClient.request(jsonRequest, ApiEnum.IPC_DEL_RECORD_CFGS.getValue()); + log.info("delRecordCfgs:response:{}",jsonResponse); + return jsonResponse; + } + + /** + * 获取录像配置 + * @param jsonRequest + * @return + */ + public String getRecordCfgs(String jsonRequest){ + this.createTumsClient(); + log.info("getRecordCfgs:request:{}",jsonRequest); + String jsonResponse = tumsClient.request(jsonRequest, ApiEnum.IPC_GET_RECORD_CFGS.getValue()); + log.info("getRecordCfgs:response:{}",jsonResponse); return jsonResponse; } @@ -487,8 +515,35 @@ public class TumsApi { */ public String getBatchProgress(String jsonRequest){ this.createTumsClient(); + log.info("getBatchProgress:request:{}",jsonRequest); String jsonResponse = tumsClient.request(jsonRequest, ApiEnum.IPC_GET_BATCH_PROGRESS.getValue()); - log.info("getBatchProgress:{}",jsonResponse); + log.info("getBatchProgress:response:{}",jsonResponse); + return jsonResponse; + } + + /** + * 获取存储设备列表 + * @param jsonRequest + * @return + */ + public String getStorageDevice(String jsonRequest){ + this.createTumsClient(); + log.info("getStorageDevice:request:{}",jsonRequest); + String jsonResponse = tumsClient.request(jsonRequest, ApiEnum.IPC_GET_STORAGE_DEVICE.getValue()); + log.info("getStorageDevice:response:{}",jsonResponse); + return jsonResponse; + } + + /** + * 获取所有录像计划列表 + * @param jsonRequest + * @return + */ + public String getAllRecordPlans(String jsonRequest){ + this.createTumsClient(); + log.info("getAllRecordPlans:request:{}",jsonRequest); + String jsonResponse = tumsClient.request(jsonRequest, ApiEnum.IPC_GET_ALL_RECORD_PLANS.getValue()); + log.info("getAllRecordPlans:response:{}",jsonResponse); return jsonResponse; }