diff --git a/fastbee-admin/src/main/resources/application.yml b/fastbee-admin/src/main/resources/application.yml
index c9b063b..03b74cf 100644
--- a/fastbee-admin/src/main/resources/application.yml
+++ b/fastbee-admin/src/main/resources/application.yml
@@ -6,6 +6,7 @@ fastbee:
demoEnabled: true # 实例演示开关
# 文件路径,以uploadPath结尾 示例( Windows配置 D:/uploadPath,Linux配置 /uploadPath)
profile: /home/soft/hzwmiot/uploadPath
+# profile: D:/uploadPath
addressEnabled: true # 获取ip地址开关
captchaType: math # 验证码类型 math 数组计算 char 字符验证
diff --git a/fastbee-common/pom.xml b/fastbee-common/pom.xml
index 0d8fef4..c6b3b55 100644
--- a/fastbee-common/pom.xml
+++ b/fastbee-common/pom.xml
@@ -76,7 +76,11 @@
dynamic-datasource-spring-boot-starter
3.5.2
-
+
+ com.alibaba
+ fastjson
+ 1.2.73
+
com.alibaba.fastjson2
diff --git a/fastbee-common/src/main/java/com/fastbee/common/utils/DevParamsUtils.java b/fastbee-common/src/main/java/com/fastbee/common/utils/DevParamsUtils.java
new file mode 100644
index 0000000..56cb2e4
--- /dev/null
+++ b/fastbee-common/src/main/java/com/fastbee/common/utils/DevParamsUtils.java
@@ -0,0 +1,24 @@
+package com.fastbee.common.utils;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class DevParamsUtils {
+
+ public static Map getDevParams(String evParams) {
+ Map devData = new HashMap<>();
+ try{
+ Object devParams = com.alibaba.fastjson.JSON.parse(evParams); //先转换成Object
+ List
-
- com.alibaba
- fastjson
- 1.2.73
-
+
diff --git a/fastbee-service/fastbee-iot-service/pom.xml b/fastbee-service/fastbee-iot-service/pom.xml
index 7f8eb0d..bf4ffed 100644
--- a/fastbee-service/fastbee-iot-service/pom.xml
+++ b/fastbee-service/fastbee-iot-service/pom.xml
@@ -156,6 +156,10 @@
forest-spring-boot-starter
1.5.36
+
+ com.fastbee
+ fastbee-waterele-service
+
diff --git a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/anfang/service/impl/UploadedPhotosServiceImpl.java b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/anfang/service/impl/UploadedPhotosServiceImpl.java
deleted file mode 100644
index 8a59186..0000000
--- a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/anfang/service/impl/UploadedPhotosServiceImpl.java
+++ /dev/null
@@ -1,95 +0,0 @@
-package com.fastbee.iot.anfang.service.impl;
-
-import com.fastbee.iot.anfang.service.IUploadedPhotosService;
-import com.fastbee.iot.mapper.UploadedPhotosMapper;
-import com.fastbee.iot.model.anfang.UploadedPhotos;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import javax.annotation.Resource;
-import java.util.List;
-
-/**
- * 存储上传的照片信息Service业务层处理
- *
- * @author kerwincui
- * @date 2024-06-20
- */
-@Service
-public class UploadedPhotosServiceImpl implements IUploadedPhotosService
-{
- @Resource
- private UploadedPhotosMapper uploadedPhotosMapper;
-
- /**
- * 查询存储上传的照片信息
- *
- * @param id 存储上传的照片信息主键
- * @return 存储上传的照片信息
- */
- @Override
- public UploadedPhotos selectUploadedPhotosById(Long id)
- {
- return uploadedPhotosMapper.selectUploadedPhotosById(id);
- }
-
- /**
- * 查询存储上传的照片信息列表
- *
- * @param uploadedPhotos 存储上传的照片信息
- * @return 存储上传的照片信息
- */
- @Override
- public List selectUploadedPhotosList(UploadedPhotos uploadedPhotos)
- {
- return uploadedPhotosMapper.selectUploadedPhotosList(uploadedPhotos);
- }
-
- /**
- * 新增存储上传的照片信息
- *
- * @param uploadedPhotos 存储上传的照片信息
- * @return 结果
- */
- @Override
- public int insertUploadedPhotos(UploadedPhotos uploadedPhotos)
- {
- return uploadedPhotosMapper.insertUploadedPhotos(uploadedPhotos);
- }
-
- /**
- * 修改存储上传的照片信息
- *
- * @param uploadedPhotos 存储上传的照片信息
- * @return 结果
- */
- @Override
- public int updateUploadedPhotos(UploadedPhotos uploadedPhotos)
- {
- return uploadedPhotosMapper.updateUploadedPhotos(uploadedPhotos);
- }
-
- /**
- * 批量删除存储上传的照片信息
- *
- * @param ids 需要删除的存储上传的照片信息主键
- * @return 结果
- */
- @Override
- public int deleteUploadedPhotosByIds(Long[] ids)
- {
- return uploadedPhotosMapper.deleteUploadedPhotosByIds(ids);
- }
-
- /**
- * 删除存储上传的照片信息信息
- *
- * @param id 存储上传的照片信息主键
- * @return 结果
- */
- @Override
- public int deleteUploadedPhotosById(Long id)
- {
- return uploadedPhotosMapper.deleteUploadedPhotosById(id);
- }
-}
diff --git a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/domain/Device.java b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/domain/Device.java
index 594506b..66cc962 100644
--- a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/domain/Device.java
+++ b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/domain/Device.java
@@ -178,6 +178,12 @@ public class Device extends BaseEntity
@ApiModelProperty("设备参数")
private String devParams;
+ @ApiModelProperty("管护人")
+ private String caretaker;
+ @ApiModelProperty("管护单位")
+ private String managementUnit;
+ @ApiModelProperty("联系电话")
+ private String tel;
/**
* 关联组态,来源产品
diff --git a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/domain/JiankongDeviceParam.java b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/domain/JiankongDeviceParam.java
new file mode 100644
index 0000000..12cf7d3
--- /dev/null
+++ b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/domain/JiankongDeviceParam.java
@@ -0,0 +1,50 @@
+package com.fastbee.iot.domain;
+
+import lombok.Data;
+
+/**
+ * 设备参数设置对象 device_param_config
+ *
+ * @author mafa
+ * @date 2023-08-22
+ */
+@Data
+public class JiankongDeviceParam
+{
+ private static final long serialVersionUID = 1L;
+
+
+ /** 设备id */
+ private Long deviceId;
+ /** ezopen协议地址的本地录像/云存储录像回放开始时间,示例:2019-12-01 00:00:00 */
+ private String startTime;
+ /** ezopen协议地址的本地录像/云存储录像回放开始时间,示例:2019-12-01 00:00:00 */
+ private String stopTime;
+ /** ezopen协议地址的类型,1-预览,2-本地录像回放,3-云存储录像回放,非必选,默认为1 */
+ private String type;
+ /** ezopen协议地址的设备的视频加密密码 */
+ private String code;
+ /** 流播放协议,1-ezopen、2-hls、3-rtmp、4-flv,默认为1 */
+ private String protocol;
+
+ /** 视频清晰度,1-高清(主码流)、2-流畅(子码流) */
+ private String quality;
+
+ /** 云台操作命令:0-上,1-下,2-左,3-右,4-左上,5-左下,6-右上,7-右下,8-放大,9-缩小,10-近焦距,11-远焦距 */
+ private String direction;
+ /** 云台操作命令:速度 */
+ private String speed;
+
+ /** 云台操作命令:传了一直动 不传移动一格 */
+ private String notStop;
+
+
+
+
+
+
+
+
+
+
+}
diff --git a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/haikang/HaikangYingshiApi.java b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/haikang/HaikangYingshiApi.java
new file mode 100644
index 0000000..77a34a8
--- /dev/null
+++ b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/haikang/HaikangYingshiApi.java
@@ -0,0 +1,132 @@
+package com.fastbee.iot.haikang;
+
+import cn.hutool.http.HttpUtil;
+import cn.hutool.json.JSONObject;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 点点控api界面
+ */
+public class HaikangYingshiApi {
+ /**
+ * @return
+ */
+ public static JSONObject getToken(Map params) {
+ String url = UrlConstant.getToken;//指定URL
+
+ HashMap headers = new HashMap<>();//存放请求头,可以存放多个请求头
+ headers.put("Content-Type", "application/x-www-form-urlencoded");
+ String result = HttpUtil.createPost(url).addHeaders(headers).form(params).execute().body();
+ JSONObject jsonObject = new JSONObject(result);
+// System.out.println("jsonObject = " + jsonObject);
+// Map data =null;
+// if (jsonObject.get("code").equals("200")) {
+// data= (Map) jsonObject.get("data");
+// }
+ return jsonObject;
+ }
+
+ /**
+ * @param params accessToken String 授权过程获取的access_token Y
+ * deviceSerial String 直播源,例如427734222,均采用英文符号,限制50个 Y
+ * channelNo Integer 通道号,,非必选,默认为1 N
+ * code String ezopen协议地址的设备的视频加密密码 N
+ * expireTime Integer 过期时长,单位秒;针对hls/rtmp设置有效期,相对时间;30秒-720天 N
+ * protocol Integer 流播放协议,1-ezopen、2-hls、3-rtmp、4-flv,默认为1 N
+ * quality Integer 视频清晰度,1-高清(主码流)、2-流畅(子码流) N
+ * startTime String ezopen协议地址的本地录像/云存储录像回放开始时间,示例:2019-12-01 00:00:00 N
+ * stopTime String ezopen协议地址的本地录像/云存储录像回放开始时间,示例:2019-12-01 00:00:00 N
+ * type String ezopen协议地址的类型,1-预览,2-本地录像回放,3-云存储录像回放,非必选,默认为1 N
+ * supportH265 Integer 是否要求播放视频为H265编码格式,1表示需要,0表示不要求 N
+ * gbchannel String 国标设备的通道编号,视频通道编号ID N
+ * @return
+ */
+ public static JSONObject getAddress(Map params) {
+// accessToken=at.dunwhxt2azk02hcn7phqygsybbw0wv6p&deviceSerial=C78957921&channelNo=1
+ String url = UrlConstant.address;//指定URL
+ HashMap headers = new HashMap<>();//存放请求头,可以存放多个请求头
+ headers.put("Content-Type", "application/x-www-form-urlencoded");
+ String result = HttpUtil.createPost(url).addHeaders(headers).form(params).execute().body();
+ JSONObject jsonObject = new JSONObject(result);
+// System.out.println("result = " + result);
+// Map data =(Map) jsonObject.get("data");
+ return jsonObject;
+ }
+
+ /**
+ * @param params accessToken String 授权过程获取的access_token Y
+ * deviceSerial String 设备序列号,存在英文字母的设备序列号,字母需为大写 Y
+ * channelNo int 通道号 Y
+ * direction int 操作命令:0-上,1-下,2-左,3-右,4-左上,5-左下,6-右上,7-右下,8-放大,9-缩小,10-近焦距,11-远焦距 Y
+ * speed int 云台速度:0-慢,1-适中,2-快,海康设备参数不可为0
+ * @return
+ */
+ public static JSONObject startMove(Map params) {
+// accessToken=at.dunwhxt2azk02hcn7phqygsybbw0wv6p&deviceSerial=C78957921&channelNo=1
+ String url = UrlConstant.startyuntai;//指定URL
+ HashMap headers = new HashMap<>();//存放请求头,可以存放多个请求头
+ headers.put("Content-Type", "application/x-www-form-urlencoded");
+ String result = HttpUtil.createPost(url).addHeaders(headers).form(params).execute().body();
+ JSONObject jsonObject = new JSONObject(result);
+
+ return jsonObject;
+ }
+
+ /**
+ * @param params accessToken String 授权过程获取的access_token Y
+ * deviceSerial String 设备序列号,存在英文字母的设备序列号,字母需为大写 Y
+ * channelNo int 通道号 Y
+ * direction int 操作命令:0-上,1-下,2-左,3-右,4-左上,5-左下,6-右上,7-右下,8-放大,9-缩小,10-近焦距,11-远焦距 Y
+ * @return
+ */
+ public static JSONObject stopMove(Map params) {
+// accessToken=at.dunwhxt2azk02hcn7phqygsybbw0wv6p&deviceSerial=C78957921&channelNo=1
+ String url = UrlConstant.stopyuntai;//指定URL
+ HashMap headers = new HashMap<>();//存放请求头,可以存放多个请求头
+ headers.put("Content-Type", "application/x-www-form-urlencoded");
+ String result = HttpUtil.createPost(url).addHeaders(headers).form(params).execute().body();
+ JSONObject jsonObject = new JSONObject(result);
+
+ return jsonObject;
+ }
+
+
+ /**
+ * @param params accessToken String 授权过程获取的access_token Y
+ * deviceSerial String 设备序列号,存在英文字母的设备序列号,字母需为大写 Y
+ * channelNo int 通道号 Y
+ * direction int 操作命令:0-上,1-下,2-左,3-右,4-左上,5-左下,6-右上,7-右下,8-放大,9-缩小,10-近焦距,11-远焦距 Y
+ * @return
+ */
+ public static JSONObject getDeviceInfo(Map params) {
+// accessToken=at.dunwhxt2azk02hcn7phqygsybbw0wv6p&deviceSerial=C78957921&channelNo=1
+ String url = UrlConstant.deviceInfo;//指定URL
+ HashMap headers = new HashMap<>();//存放请求头,可以存放多个请求头
+ headers.put("Content-Type", "application/x-www-form-urlencoded");
+ String result = HttpUtil.createPost(url).addHeaders(headers).form(params).execute().body();
+ JSONObject jsonObject = new JSONObject(result);
+
+ return jsonObject;
+ }
+
+ /**
+ * @param params accessToken String 授权过程获取的access_token Y
+ * deviceSerial String 直播源,例如427734222,均采用英文符号,限制50个 Y
+ * channelNo Integer 通道号,,非必选,默认为1 N
+ * @return
+ */
+ public static JSONObject capture(Map params) {
+// accessToken=at.dunwhxt2azk02hcn7phqygsybbw0wv6p&deviceSerial=C78957921&channelNo=1
+ String url = UrlConstant.capture;//指定URL
+ HashMap headers = new HashMap<>();//存放请求头,可以存放多个请求头
+ headers.put("Content-Type", "application/x-www-form-urlencoded");
+ String result = HttpUtil.createPost(url).addHeaders(headers).form(params).execute().body();
+ JSONObject jsonObject = new JSONObject(result);
+// System.out.println("result = " + result);
+// Map data =(Map) jsonObject.get("data");
+ return jsonObject;
+ }
+
+}
diff --git a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/haikang/UrlConstant.java b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/haikang/UrlConstant.java
new file mode 100644
index 0000000..b2c3907
--- /dev/null
+++ b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/haikang/UrlConstant.java
@@ -0,0 +1,28 @@
+package com.fastbee.iot.haikang;
+
+/**
+ * 点点控
+ */
+public class UrlConstant {
+
+ public static String appKey = "be85054cf4504710861fad77ec4e4af9";
+ public static String appSecret = "104f39e29f9847e5d819a99c1c32fc88";
+
+ //获取 token
+ public static String getToken = "https://open.ys7.com/api/lapp/token/get";
+ //获取 直播地址
+ public static String address = "https://open.ys7.com/api/lapp/v2/live/address/get";
+ //开始云台
+ public static String startyuntai = "https://open.ys7.com/api/lapp/device/ptz/start";
+ //停止云台
+ public static String stopyuntai = "https://open.ys7.com/api/lapp/device/ptz/stop";
+ //设备信息
+ public static String deviceInfo = "https://open.ys7.com/api/lapp/device/info";
+ //设备抓拍图片
+ public static String capture = "https://open.ys7.com/api/lapp/device/capture";
+ //关闭设备视频加密
+ public static String deviceEncryptOff = "https://open.ys7.com/api/lapp/device/encrypt/off";
+
+
+}
+
diff --git a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/model/DeviceAllShortOutput.java b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/model/DeviceAllShortOutput.java
index f06a71d..d455d9f 100644
--- a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/model/DeviceAllShortOutput.java
+++ b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/model/DeviceAllShortOutput.java
@@ -1,6 +1,7 @@
package com.fastbee.iot.model;
import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
import java.math.BigDecimal;
import java.util.Date;
@@ -66,6 +67,12 @@ public class DeviceAllShortOutput
private Integer isOwner;
private Integer subDeviceCount;
+ @ApiModelProperty("管护人")
+ private String caretaker;
+ @ApiModelProperty("管护单位")
+ private String managementUnit;
+ @ApiModelProperty("联系电话")
+ private String tel;
public Integer getSubDeviceCount() {
return subDeviceCount;
diff --git a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/model/DeviceShortOutput.java b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/model/DeviceShortOutput.java
index feb141c..35ebe8e 100644
--- a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/model/DeviceShortOutput.java
+++ b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/model/DeviceShortOutput.java
@@ -94,6 +94,13 @@ public class DeviceShortOutput
@Excel(name = "网关设备编号(子设备使用)")
private String gwDevCode;
+ @ApiModelProperty("管护人")
+ private String caretaker;
+ @ApiModelProperty("管护单位")
+ private String managementUnit;
+ @ApiModelProperty("联系电话")
+ private String tel;
+
/** 是否自定义位置 **/
private Integer locationWay;
diff --git a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/model/anfang/UploadedPhotos.java b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/model/anfang/UploadedPhotos.java
index 9add5a8..0d0f516 100644
--- a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/model/anfang/UploadedPhotos.java
+++ b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/model/anfang/UploadedPhotos.java
@@ -28,7 +28,9 @@ public class UploadedPhotos extends BaseEntity
/** 照片存储路径 */
@Excel(name = "照片存储路径")
private String photoPath;
-
+ /** 监控抓拍 */
+ @Excel(name = "监控抓拍")
+ private String monitorPath;
/** 设备IMEI号 */
@Excel(name = "设备IMEI号")
private String imei;
diff --git a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/IDeviceService.java b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/IDeviceService.java
index 8602997..13efba3 100644
--- a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/IDeviceService.java
+++ b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/IDeviceService.java
@@ -6,6 +6,7 @@ import com.fastbee.common.core.thingsModel.ThingsModelSimpleItem;
import com.fastbee.common.enums.DeviceStatus;
import com.fastbee.iot.domain.Device;
import com.fastbee.iot.domain.DeviceGroup;
+import com.fastbee.iot.domain.JiankongDeviceParam;
import com.fastbee.iot.model.*;
import com.fastbee.iot.model.ThingsModels.ThingsModelShadow;
import com.fastbee.iot.model.ThingsModels.ThingsModelValueItem;
@@ -334,5 +335,5 @@ public interface IDeviceService
ArrayList getDeviceLogAllCurves(Long deviceId, String beginTime, String endTime);
-
+ Map getvideourl(JiankongDeviceParam jiankongDeviceParam);
}
diff --git a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/impl/DeviceServiceImpl.java b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/impl/DeviceServiceImpl.java
index 23743ec..70252d9 100644
--- a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/impl/DeviceServiceImpl.java
+++ b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/impl/DeviceServiceImpl.java
@@ -10,21 +10,20 @@ import com.fastbee.common.core.domain.AjaxResult;
import com.fastbee.common.core.domain.entity.SysDept;
import com.fastbee.common.core.domain.entity.SysUser;
import com.fastbee.common.core.domain.model.LoginUser;
+import com.fastbee.common.core.page.TableDataInfo;
import com.fastbee.common.core.redis.RedisCache;
import com.fastbee.common.core.redis.RedisKeyBuilder;
import com.fastbee.common.core.thingsModel.ThingsModelSimpleItem;
import com.fastbee.common.core.thingsModel.ThingsModelValuesInput;
import com.fastbee.common.enums.*;
import com.fastbee.common.exception.ServiceException;
-import com.fastbee.common.utils.CaculateUtils;
-import com.fastbee.common.utils.DateUtils;
-import com.fastbee.common.utils.SecurityUtils;
-import com.fastbee.common.utils.StringUtils;
+import com.fastbee.common.utils.*;
import com.fastbee.common.utils.http.HttpUtils;
import com.fastbee.common.utils.ip.IpUtils;
import com.fastbee.common.utils.json.JsonUtils;
import com.fastbee.iot.cache.ITSLCache;
import com.fastbee.iot.domain.*;
+import com.fastbee.iot.haikang.HaikangYingshiApi;
import com.fastbee.iot.mapper.*;
import com.fastbee.iot.model.*;
import com.fastbee.iot.model.ThingsModelItem.Datatype;
@@ -39,6 +38,8 @@ import com.fastbee.iot.cache.ITSLValueCache;
import com.fastbee.iot.tdengine.service.ILogService;
import com.fastbee.system.mapper.SysDeptMapper;
import com.fastbee.system.service.ISysUserService;
+import com.fastbee.waterele.domain.MaWatereleRecord;
+import com.fastbee.waterele.service.IMaWatereleRecordService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
@@ -123,7 +124,8 @@ public class DeviceServiceImpl implements IDeviceService {
private SubGatewayMapper subGatewayMapper;
@Resource
private IOrderControlService orderControlService;
-
+ @Resource
+ private IMaWatereleRecordService watereleRecordService;
/**
* 查询设备
@@ -135,6 +137,9 @@ public class DeviceServiceImpl implements IDeviceService {
@Override
public Device selectDeviceByDeviceId(Long deviceId) {
Device device = deviceMapper.selectDeviceByDeviceId(deviceId);
+ if (device == null) {
+ return null;
+ }
List list = itslValueCache.getCacheDeviceStatus(device.getProductId(), device.getSerialNumber());
if (list != null && list.size() > 0) {
// redis中获取设备状态(物模型值)
@@ -1600,13 +1605,24 @@ public class DeviceServiceImpl implements IDeviceService {
@Override
public List> devicePointInfo(Device devices) {
ArrayList> resultList = new ArrayList<>();
+ devices.setProductId(136L);
List deviceList = selectDeviceList(devices);
-
for (Device device : deviceList) {
+// MaWatereleRecord maWatereleRecord = new MaWatereleRecord();
+// maWatereleRecord.setDevSn(device.getSerialNumber());
+// TableDataInfo tableDataInfo = watereleRecordService.selectMaWatereleRecordList(maWatereleRecord);
+// List list = (List) tableDataInfo.getRows();
+// int status = 4;
+// if(list.size() > 0){
+// MaWatereleRecord record = list.get(0);
+// if(new Date().getTime() - record.getCreateTime().getTime() < 3600000){
+// status = 3;
+// }
+// }
+// device.setStatus(status);
HashMap itemMap = new HashMap<>();
resultList.add(itemMap);
Integer integer = 0;
-
itemMap.put("device",device);
if (device.getStatus() != null) {
if (device.getStatus().equals(4)) {
@@ -1614,7 +1630,6 @@ public class DeviceServiceImpl implements IDeviceService {
}
}
itemMap.put("online",integer);
-
}
return resultList;
}
@@ -1636,12 +1651,17 @@ public class DeviceServiceImpl implements IDeviceService {
kvHashMap.put("beginTime", beginTime);
kvHashMap.put("endTime", endTime);
List thingsModels = thingsModelService.selectThingsModelList(new ThingsModel(device.getProductId()));
+ thingsModels.sort(Comparator.comparing(ThingsModel::getModelOrder));
List deviceLogs= logService.selectDataList(kvHashMap);
Map> collect = deviceLogs != null ? deviceLogs.stream().collect(Collectors.groupingBy(t -> t.getIdentity())): new HashMap();
for (ThingsModel modelDevice : thingsModels) {
+ if(modelDevice.getIsChart().equals(0)){
+ continue;
+ }
HashMap dataListMap = new HashMap<>();
List deviceLogs1 = collect.get(modelDevice.getIdentifier());
+ deviceLogs1.sort(Comparator.comparing(DeviceLog::getCreateTime));
dataListMap.put("name", modelDevice.getModelName());
if (StringUtils.isNotEmpty(modelDevice.getSpecs())) {
cn.hutool.json.JSONObject object = new cn.hutool.json.JSONObject(modelDevice.getSpecs());
@@ -1651,7 +1671,7 @@ public class DeviceServiceImpl implements IDeviceService {
}
if (deviceLogs1 != null) {
System.out.println(deviceLogs1);
- dataListMap.put("time",deviceLogs1.stream().map(t->t.getCreateTime()).collect(Collectors.toList()));
+ dataListMap.put("time",deviceLogs1.stream().map(t->DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS,t.getCreateTime())).collect(Collectors.toList()));
dataListMap.put("data",deviceLogs1.stream().map(t->t.getLogValue()).collect(Collectors.toList()));
}else{
dataListMap.put("time",new ArrayList<>());
@@ -1663,4 +1683,76 @@ public class DeviceServiceImpl implements IDeviceService {
}
+ @Override
+ public Map getvideourl(JiankongDeviceParam jiankongDeviceParam) {
+ if (jiankongDeviceParam.getDeviceId() == null) {
+ throw new RuntimeException("请上传设备id");
+ }
+ Device device = selectDeviceByDeviceId(jiankongDeviceParam.getDeviceId());
+
+ if (device == null) {
+ throw new RuntimeException("设备未找到");
+ }
+ Map devData = DevParamsUtils.getDevParams(device.getDevParams());
+ if (devData.get("appKey") == null) {
+ throw new RuntimeException("未绑定设备参数appKey");
+ }
+ if (devData.get("appSecret") == null) {
+ throw new RuntimeException("未绑定设备参数appSecret");
+ }
+ if (devData.get("channelNo") == null) {
+ throw new RuntimeException("未绑定设备参数channelNo");
+ }
+ Map map = new HashMap<>();//存放参数
+ map.put("appKey", devData.get("appKey"));
+ map.put("appSecret", devData.get("appSecret"));
+ cn.hutool.json.JSONObject token = HaikangYingshiApi.getToken(map);
+ if (token != null && token.get("code").equals("200")) {
+ Map params = new HashMap<>();
+ // accessToken=at.dunwhxt2azk02hcn7phqygsybbw0wv6p&deviceSerial=C78957921&channelNo=1
+ token = (cn.hutool.json.JSONObject) token.get("data");
+ params.put("accessToken", token.get("accessToken"));
+ params.put("deviceSerial", device.getSerialNumber());
+
+ if (StringUtils.isNotEmpty(jiankongDeviceParam.getStartTime())) {
+ params.put("startTime", jiankongDeviceParam.getStartTime());
+ }
+ if (StringUtils.isNotEmpty(jiankongDeviceParam.getStopTime())) {
+ params.put("stopTime", jiankongDeviceParam.getStopTime());
+ }
+ if (StringUtils.isNotEmpty(jiankongDeviceParam.getType())) {
+ params.put("type", jiankongDeviceParam.getType());
+ }
+ if (StringUtils.isNotEmpty(jiankongDeviceParam.getCode())) {
+ params.put("code", jiankongDeviceParam.getCode());
+ }
+ if (StringUtils.isNotEmpty(jiankongDeviceParam.getProtocol())) {
+ params.put("protocol", jiankongDeviceParam.getProtocol());
+ }
+ if (StringUtils.isNotEmpty(jiankongDeviceParam.getQuality())) {
+ params.put("quality", jiankongDeviceParam.getQuality());
+ }
+
+ cn.hutool.json.JSONObject response = HaikangYingshiApi.getAddress(params);
+ if (response != null && response.get("code").equals("200")) {
+ Map data = (cn.hutool.json.JSONObject) response.get("data");
+ Map reMap = new HashMap<>();
+ reMap.put("url", data.get("url"));
+ reMap.put("devName", device.getDeviceName());
+ reMap.put("accessToken", token.get("accessToken"));
+ reMap.put("id", device.getDeviceId());
+ reMap.put("status", device.getStatus() == null || device.getStatus() == 4 ? "离线" : "在线");
+ return reMap;
+ } else {
+ throw new RuntimeException(response.get("msg").toString());
+ }
+
+ } else {
+ }
+
+ return null;
+ }
+
+
+
}
diff --git a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/impl/ThingsModelServiceImpl.java b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/impl/ThingsModelServiceImpl.java
index 3c02273..9ab6ac6 100644
--- a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/impl/ThingsModelServiceImpl.java
+++ b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/impl/ThingsModelServiceImpl.java
@@ -88,7 +88,7 @@ public class ThingsModelServiceImpl implements IThingsModelService {
*/
@Override
public ThingsModel selectSingleThingsModel(ThingsModel model) {
- model.setLanguage(SecurityUtils.getLanguage());
+// model.setLanguage(SecurityUtils.getLanguage());
return thingsModelMapper.selectSingleThingsModel(model);
}
diff --git a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/tdengine/service/impl/MySqlLogServiceImpl.java b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/tdengine/service/impl/MySqlLogServiceImpl.java
index c3125b5..e138934 100644
--- a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/tdengine/service/impl/MySqlLogServiceImpl.java
+++ b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/tdengine/service/impl/MySqlLogServiceImpl.java
@@ -151,32 +151,36 @@ public class MySqlLogServiceImpl implements ILogService {
@Override
public List selectDataList(HashMap kvHashMap) {
- if (kvHashMap.get("endTime") != null) {
- DateTime endTime = DateUtil.parse(kvHashMap.get("endTime").toString());
- String yyyyMM = endTime.toString("yyyyMM");
- String yyyyMM2 = DateUtil.offsetMonth(endTime, -1).toString("yyyyMM");
- if (tableMapper.getTableByName(tableName + yyyyMM) == null) {
- deviceLogMapper.createTableByDate(tableName + yyyyMM);
- }
- if (tableMapper.getTableByName(tableName + yyyyMM2) == null) {
- deviceLogMapper.createTableByDate(tableName + yyyyMM2);
- }
- kvHashMap.put("tableName", tableName + yyyyMM);
- kvHashMap.put("tableName2", tableName + yyyyMM2);
- }
- if (kvHashMap.get("tableName") == null) {
- Date date = new Date();
- String ym = DateUtils.parseDateToStr(DateUtils.YYYYMM, date);
- String ym2 = DateUtils.parseDateToStr(DateUtils.YYYYMM, DateUtil.offsetMonth(new Date(), -1));
- if (tableMapper.getTableByName(tableName + ym) == null) {
- deviceLogMapper.createTableByDate(tableName + ym);
- }
- if (tableMapper.getTableByName(tableName + ym2) == null) {
- deviceLogMapper.createTableByDate(tableName + ym2);
- }
- kvHashMap.put("tableName", tableName + ym);
- kvHashMap.put("tableName2", tableName + ym2);
- }
- return deviceLogMapper.selectDataList(kvHashMap);
+ DeviceLog deviceLog = new DeviceLog();
+ deviceLog.setBeginTime(kvHashMap.get("beginTime").toString());
+ deviceLog.setEndTime(kvHashMap.get("endTime").toString());
+ deviceLog.setSerialNumber((kvHashMap.get("serialNumber").toString()));
+// if (kvHashMap.get("endTime") != null) {
+// DateTime endTime = DateUtil.parse(kvHashMap.get("endTime").toString());
+// String yyyyMM = endTime.toString("yyyyMM");
+// String yyyyMM2 = DateUtil.offsetMonth(endTime, -1).toString("yyyyMM");
+// if (tableMapper.getTableByName(tableName + yyyyMM) == null) {
+// deviceLogMapper.createTableByDate(tableName + yyyyMM);
+// }
+// if (tableMapper.getTableByName(tableName + yyyyMM2) == null) {
+// deviceLogMapper.createTableByDate(tableName + yyyyMM2);
+// }
+// kvHashMap.put("tableName", tableName + yyyyMM);
+// kvHashMap.put("tableName2", tableName + yyyyMM2);
+// }
+// if (kvHashMap.get("tableName") == null) {
+// Date date = new Date();
+// String ym = DateUtils.parseDateToStr(DateUtils.YYYYMM, date);
+// String ym2 = DateUtils.parseDateToStr(DateUtils.YYYYMM, DateUtil.offsetMonth(new Date(), -1));
+// if (tableMapper.getTableByName(tableName + ym) == null) {
+// deviceLogMapper.createTableByDate(tableName + ym);
+// }
+// if (tableMapper.getTableByName(tableName + ym2) == null) {
+// deviceLogMapper.createTableByDate(tableName + ym2);
+// }
+// kvHashMap.put("tableName", tableName + ym);
+// kvHashMap.put("tableName2", tableName + ym2);
+// }
+ return deviceLogMapper.selectDeviceLogList(deviceLog);
}
}
diff --git a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/timer/QxtrTask.java b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/timer/QxtrTask.java
index ccc4a00..ab9b907 100644
--- a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/timer/QxtrTask.java
+++ b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/timer/QxtrTask.java
@@ -1,5 +1,6 @@
package com.fastbee.iot.timer;//package com.fastbee.farming;
+import com.fastbee.common.core.page.TableDataInfo;
import com.fastbee.common.core.redis.RedisCache;
import com.fastbee.common.core.redis.RedisKeyBuilder;
import com.fastbee.common.utils.DateUtils;
@@ -17,6 +18,8 @@ import com.fastbee.iot.model.haiwei.HaiWeiPropertyVo;
import com.fastbee.iot.service.IDeviceService;
import com.fastbee.iot.tdengine.service.ILogService;
import com.fastbee.iot.tdengine.service.model.TdLogDto;
+import com.fastbee.waterele.domain.MaWatereleRecord;
+import com.fastbee.waterele.service.IMaWatereleRecordService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@@ -43,7 +46,8 @@ public class QxtrTask {
private ILogService iLogService;
@Resource
RedisCache redisCache;
-
+ @Resource
+ private IMaWatereleRecordService watereleRecordService;
private static Pattern pattern = Pattern.compile("[-+]?[0-9]+(\\.[0-9]+)?$");
/**
@@ -57,6 +61,33 @@ public class QxtrTask {
getDeviceInfo(Long.valueOf(SOLAR_DEVICE.getType()), devices);
}
+ /**
+ * 定时任务 更新设备在线状态
+ */
+ public void updateDeviceStatus() throws Exception {
+ log.info("定时任务,更新设备在线状态");
+ Device device = new Device();
+ ArrayList> resultList = new ArrayList<>();
+ device.setProductId(136L);
+ List deviceList = iDeviceService.selectDeviceList(device);
+ for (Device item : deviceList) {
+ MaWatereleRecord maWatereleRecord = new MaWatereleRecord();
+ maWatereleRecord.setDevSn(item.getSerialNumber());
+ List list = watereleRecordService.getList(maWatereleRecord);
+ int status = 4;
+ if(list.size() > 0){
+ MaWatereleRecord record = list.get(0);
+ if(new Date().getTime() - record.getCreateTime().getTime() < 3600000){
+ status = 3;
+ }
+ }
+ item.setStatus(status);
+ iDeviceService.updateDevice(item);
+ }
+ }
+
+
+
/**
* 定时任务 流量计设备
*/
diff --git a/fastbee-service/fastbee-iot-service/src/main/resources/mapper/iot/DeviceMapper.xml b/fastbee-service/fastbee-iot-service/src/main/resources/mapper/iot/DeviceMapper.xml
index e87ab73..73ec48a 100644
--- a/fastbee-service/fastbee-iot-service/src/main/resources/mapper/iot/DeviceMapper.xml
+++ b/fastbee-service/fastbee-iot-service/src/main/resources/mapper/iot/DeviceMapper.xml
@@ -36,6 +36,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+
+
+
@@ -65,6 +68,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+
+
+
@@ -86,6 +92,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+
+
+
@@ -203,7 +212,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
- select id, balance, investVal, card_num, area_code, card_id, mcuSn, create_time, update_time from ma_rechargerecord
+ select * from ma_rechargerecord
@@ -29,7 +30,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
and area_code = #{areaCode}
and card_id = #{cardId}
and mcuSn = #{mcusn}
+ and is_recharge = #{isRecharge}
+ order by create_time desc
@@ -46,6 +49,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
area_code,
card_id,
mcuSn,
+ is_recharge,
create_time,
update_time,
@@ -56,6 +60,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{areaCode},
#{cardId},
#{mcusn},
+ #{isRecharge},
#{createTime},
#{updateTime},
@@ -70,11 +75,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
area_code = #{areaCode},
card_id = #{cardId},
mcuSn = #{mcusn},
+ is_recharge = #{isRecharge},
create_time = #{createTime},
update_time = #{updateTime},
where id = #{id}
+
+ update ma_rechargerecord
+
+ is_recharge = #{isRecharge},
+ update_time = #{updateTime},
+
+ where card_num = #{cardNum} and is_recharge = 0 and area_code = #{areaCode}
+
delete from ma_rechargerecord where id = #{id}
diff --git a/fastbee-service/fastbee-waterele-service/src/main/resources/mapper/waterele/MaWatereleRecordMapper.xml b/fastbee-service/fastbee-waterele-service/src/main/resources/mapper/waterele/MaWatereleRecordMapper.xml
index 06f3aab..70a0b2b 100644
--- a/fastbee-service/fastbee-waterele-service/src/main/resources/mapper/waterele/MaWatereleRecordMapper.xml
+++ b/fastbee-service/fastbee-waterele-service/src/main/resources/mapper/waterele/MaWatereleRecordMapper.xml
@@ -51,7 +51,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
and cardId = #{cardid}
and areaCode = #{areacode}
and action = #{action}
+
+ AND date_format(create_time ,'%y%m%d%H%i%s') >= date_format(#{params.beginTime},'%y%m%d%H%i%s')
+
+
+ AND date_format(create_time ,'%y%m%d%H%i%s') <= date_format(#{params.endTime},'%y%m%d%H%i%s')
+
+ order by create_time desc
diff --git a/fastbee-service/fastbee-xunjian-service/src/main/resources/mapper/xunjian/XjInspectionRecordsMapper.xml b/fastbee-service/fastbee-xunjian-service/src/main/resources/mapper/xunjian/XjInspectionRecordsMapper.xml
index e06c7cd..54cab28 100644
--- a/fastbee-service/fastbee-xunjian-service/src/main/resources/mapper/xunjian/XjInspectionRecordsMapper.xml
+++ b/fastbee-service/fastbee-xunjian-service/src/main/resources/mapper/xunjian/XjInspectionRecordsMapper.xml
@@ -63,6 +63,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
AND date_format(end_time ,'%y%m%d') <= date_format(#{params.endTime},'%y%m%d')
+
+ AND date_format(end_time ,'%y%m%d%H%i%s') >= date_format(#{chaxunBeginTime},'%y%m%d%H%i%s')
+
+
+ AND date_format(end_time ,'%y%m%d%H%i%s') <= date_format(#{chaxunEndTime},'%y%m%d%H%i%s')
+
order by id desc