From 5439480a3980aabcce4d44d2ae4ea85b5ee94ddd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E7=A3=8A?= <45566618@qq.com> Date: Thu, 26 Jun 2025 17:06:15 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=B5=E8=A1=A8=E6=B0=B4=E8=A1=A8=E6=8A=84?= =?UTF-8?q?=E8=A1=A8=E7=8A=B6=E6=80=81=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../NuIotTqApiRequestLogController.java | 34 +++- .../controller/CameraInfoController.java | 22 +++ .../tplink/camera/entity/CameraInfo.java | 25 ++- .../camera/service/ICameraInfoService.java | 3 +- .../service/impl/CameraInfoServiceImpl.java | 150 +++++++++++++++++- .../com/nu/modules/tplink/enums/ApiEnum.java | 3 +- .../com/nu/modules/tplink/utils/TumsApi.java | 24 ++- .../impl/ElectricityMeterServiceImpl.java | 57 +++++-- .../service/impl/WaterMeterServiceImpl.java | 56 +++++-- 9 files changed, 330 insertions(+), 44 deletions(-) diff --git a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/nuIotTqApiRequestLog/controller/NuIotTqApiRequestLogController.java b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/nuIotTqApiRequestLog/controller/NuIotTqApiRequestLogController.java index e728b1d..1d05302 100644 --- a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/nuIotTqApiRequestLog/controller/NuIotTqApiRequestLogController.java +++ b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/nuIotTqApiRequestLog/controller/NuIotTqApiRequestLogController.java @@ -1,15 +1,16 @@ package com.nu.modules.nuIotTqApiRequestLog.controller; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; import java.util.stream.Collectors; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; + +import org.apache.commons.lang.StringUtils; import org.jeecg.common.api.vo.Result; import org.jeecg.common.system.query.QueryGenerator; import org.jeecg.common.system.query.QueryRuleEnum; @@ -78,6 +79,31 @@ public class NuIotTqApiRequestLogController extends JeecgController queryWrapper = QueryGenerator.initQueryWrapper(nuIotTqApiRequestLog, req.getParameterMap(),customeRuleMap); Page page = new Page(pageNo, pageSize); IPage pageList = nuIotTqApiRequestLogService.page(page, queryWrapper); + // 获取当前时间 + Calendar calendar = Calendar.getInstance(); + // 减去5分钟 + calendar.add(Calendar.MINUTE, -5); + // 转换为Date对象 + Date fiveMinutesAgo = calendar.getTime(); + for(NuIotTqApiRequestLog par:pageList.getRecords()){ + String dateStr = par.getRequestTime(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Date date = null; + try { + date = sdf.parse(dateStr); + System.out.println("Date: " + date); // 输出:Date: Tue Aug 15 14:30:00 CST 2023 + } catch (ParseException e) { + e.printStackTrace(); + } + //如果返回状态为空并且超过了5分钟则返回抄表失败 + if(StringUtils.isBlank(par.getResolveStatus()) && fiveMinutesAgo.getTime() > date.getTime()){ + par.setResolveStatus("抄表失败"); + //判断返回状态为空并且没有超过了5分钟则返回抄表中 + }else if(StringUtils.isBlank(par.getResolveStatus())){ + par.setResolveStatus(par.getRequestStatus()); + } + //返回状态有值,则保持原样,输出返回状态值 + } return Result.OK(pageList); } 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 7842c76..1a82a72 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 @@ -120,6 +120,17 @@ public class CameraInfoController extends JeecgController syncProjectIpcDevice(CameraInfo cameraInfo) { + return service.syncProjectIpcDevice(cameraInfo); + } + /** * 获取IPC设备能力集 * @@ -507,4 +518,15 @@ public class CameraInfoController extends JeecgController { void rebootDevice(CameraInfo cameraInfo); void sync(String jsonResponse); void syncCapability(String deviceIndex,String jsonResponse); + Result syncProjectIpcDevice(CameraInfo cameraInfo); Result getIpcCapability(CameraInfo cameraInfo); Result getImageCommon(Map map); Result setImageCommon(Map map); @@ -60,6 +61,6 @@ public interface ICameraInfoService extends IService { Result uploadToServer(CameraInfo cameraInfo); Result stopUploadToServer(CameraInfo cameraInfo); Result getUploadToServerProcess(CameraInfo cameraInfo); - + Result motionCtrl(CameraInfo cameraInfo); IPage getNuBaseList(String dataSourceCode,Page page, NuBaseInfo nuBaseInfo); } 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 515afe7..9a6746b 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 @@ -225,6 +225,111 @@ public class CameraInfoServiceImpl extends ServiceImpl syncProjectIpcDevice(CameraInfo cameraInfo){ + StringBuffer sb = new StringBuffer(); + sb.append("{"); + sb.append("\"start\"").append(":0").append(","); + sb.append("\"limit\"").append(":1000").append(","); + sb.append("\"filterAnd\"").append(":").append("{"); + sb.append("\"deviceTypeList\"").append(":[").append("\"SURVEILLANCECAMERA\"").append("],"); + sb.append("\"projectId\"").append(":").append("\"").append(cameraInfo.getProjectId()).append("\""); + sb.append("},"); + sb.append("\"sort\"").append(":").append("[{"); + sb.append("\"key\"").append(":").append("\"deviceIndex\"").append(","); + sb.append("\"value\"").append(":").append("\"asc\""); + sb.append("}]"); + sb.append("}"); + String jsonResponse = tumsApi.getDeviceList(sb.toString()); + JSONObject jsonObject = new JSONObject(jsonResponse); + String errorCode = jsonObject.getStr("error_code"); + if(errorCode.equals("0")){ + syncProjectIpc(jsonResponse); + return Result.OK("同步设备成功!"); + }else{ + ErrorCode errVo = errorCodeService.getByCode(errorCode); + String errMsg = errVo.getErrorMsg(); + log.info("getImageCommon:{}",errMsg); + return Result.error(errMsg); + } + } + + /** + * 同步IPC设备信息入库 + * @param jsonResponse + * @return + */ + private void syncProjectIpc(String jsonResponse){ + JSONObject jsonObject = new JSONObject(jsonResponse); + if(jsonObject.getInt("error_code").equals(0)){ + JSONObject result = (JSONObject)jsonObject.get("result"); + if(result.getInt("total")>0){ + JSONArray list = result.getJSONArray("list"); + for(int i=0;i getNuBaseList(String dataSourceCode,Page page, NuBaseInfo nuBaseInfo) { return baseMapper.getNuBaseList(page,nuBaseInfo); } + + /** + * 高速球机移动方向控制 + * @param cameraInfo + * @return + */ + @Override + public Result motionCtrl(CameraInfo cameraInfo){ + StringBuffer sb = new StringBuffer(); + sb.append("{"); + sb.append("\"id\"").append(":").append("\"").append(cameraInfo.getDeviceIndex()).append("\","); + sb.append("\"direction\"").append(":").append(cameraInfo.getDirection()).append(","); + sb.append("\"startOrNot\"").append(":").append(cameraInfo.getStartOrNot()).append(","); + sb.append("\"speed\"").append(":").append("\"").append(cameraInfo.getSpeed()).append("\""); + sb.append("}"); + String res = tumsApi.motionCtrl(sb.toString()); + JSONObject jsonObject = new JSONObject(res); + int errorCode = jsonObject.getInt("error_code"); + if(errorCode == 0){ +// StringBuffer sb2 = new StringBuffer(); +// sb2.append("{"); +// sb2.append("\"id\"").append(":").append("\"").append(cameraInfo.getDeviceIndex()).append("\","); +// sb2.append("\"direction\"").append(":").append(cameraInfo.getDirection()).append(","); +// sb2.append("\"startOrNot\"").append(":").append(0).append(","); +// sb2.append("\"speed\"").append(":").append("\"").append(cameraInfo.getSpeed()).append("\""); +// sb2.append("}"); +// String res2 = tumsApi.motionCtrl(sb2.toString()); + return Result.OK(); + }else{ + String errMsg = jsonObject.getStr("msg"); + if(errMsg == null || errMsg.equals("")) { + ErrorCode errVo = errorCodeService.getByCode(String.valueOf(errorCode)); + errMsg = errVo.getErrorMsg(); + } + log.info("motionCtrl:{}-{}",errorCode,errMsg); + return Result.error(errMsg); + } + } } diff --git a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/enums/ApiEnum.java b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/enums/ApiEnum.java index 528256b..e7b2712 100644 --- a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/enums/ApiEnum.java +++ b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/enums/ApiEnum.java @@ -60,8 +60,9 @@ public enum ApiEnum { 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","操作高速球机的预置点"), IPC_GET_ALL_TOURS("/tums/ptz/v1/getAllTours","获取高速球机的所有巡航列表"), 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 f638ca0..f0d60a2 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 @@ -277,9 +277,11 @@ public class TumsApi { * @return */ public String getDeviceList(String jsonRequest){ + this.createTumsClient(); + log.info("getDeviceList:request:{}",jsonRequest); this.createTumsClient(); String jsonResponse = tumsClient.request(jsonRequest, ApiEnum.GET_DEVICE_LIST.getValue()); -// log.info("getDeviceList:{}",jsonResponse); + log.info("getDeviceList:response:{}",jsonResponse); return jsonResponse; } @@ -326,8 +328,9 @@ public class TumsApi { */ public String getIpcCapability(String jsonRequest){ this.createTumsClient(); + log.info("getIpcCapability:request:{}",jsonRequest); String jsonResponse = tumsClient.request(jsonRequest, ApiEnum.IPC_GET_IPC_CAPABILITY.getValue()); -// log.info("getIpcCapability:{}",jsonResponse); + log.info("getIpcCapability:response:{}",jsonResponse); return jsonResponse; } @@ -580,9 +583,24 @@ public class TumsApi { */ public String getUploadToServerProcess(String jsonRequest){ this.createTumsClient(); + log.info("getUploadToServerProcess:request:{}",jsonRequest); String jsonResponse = tumsClient.request(jsonRequest, ApiEnum.IPC_GET_UPLOAD_TO_SERVER_PROCESS.getValue()); - log.info("getUploadToServerProcess:{}",jsonResponse); + log.info("getUploadToServerProcess:response:{}",jsonResponse); return jsonResponse; } + /** + * 高速球机移动方向控制 + * @param jsonRequest + * @return + */ + public String motionCtrl(String jsonRequest){ + this.createTumsClient(); + log.info("motionCtrl:request:{}",jsonRequest); + String jsonResponse = tumsClient.request(jsonRequest, ApiEnum.IPC_MOTION_CTRL.getValue()); + log.info("motionCtrl:response:{}",jsonResponse); + return jsonResponse; + } + + } diff --git a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tq/electricity/service/impl/ElectricityMeterServiceImpl.java b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tq/electricity/service/impl/ElectricityMeterServiceImpl.java index 1e00653..948ad9b 100644 --- a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tq/electricity/service/impl/ElectricityMeterServiceImpl.java +++ b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tq/electricity/service/impl/ElectricityMeterServiceImpl.java @@ -105,7 +105,7 @@ public class ElectricityMeterServiceImpl extends ServiceImpl